AIにプログラム全体を理解させて、生成されるコードのクオリティが上がるとよくおすすめされるSerena MCP。これは使ってみなくちゃ!と導入してみたわけですが、おかげでMCPを導入する良い練習になりました。多くの人が躓きがちな「MCPの設定ファイルの書き方」についても、「起動コマンド」という視点から分かりやすく理解できるようになったのです
本記事では、Serena MCPの導入から使用方法までをレポートします。その過程で読者の皆さんと上記の「気付き」を共有することで、理解を深める助けになれば幸いです。Serenaを使ってみたい方も、MCPの使い方を知りたい方もぜひご覧ください

この記事のポイント
SerenaというMCPを使ってみて、MCPの設定方法について理解が深まったので共有したい
- MCP設定ファイルの本質は、MCPサーバーの起動コマンドを指定しているだけ
- これが分かると、一見ややこしいJSON設定ファイルの記述がスッと頭に入ってくる
- ちなみに多くのMCPは
npxやuvxで配布されているため、起動コマンドもそれらを使ったものになる
Serena MCPとは?
Serena MCPはAIを利用したコーディングエージェントのためのツールで、AIがプログラムを理解する助けとなる機能を持っている。通常、AI (LLM) にコードを読ませると単なるテキストとして処理されがちだが、Serenaはコードの構造や依存関係といった「意味」を理解することができる
これにはLanguage Server Protocol (LSP) という仕組みが使われており、以前から人間向けにエディタの拡張機能などで提供されているものだ。LSPを利用することで、関数からその定義へジャンプしたり、同じ変数が参照されている箇所を全て検索したりといった便利な機能を使うことができる
加えてSerenaはAIがコードベースに直接アクセスして、検索や編集を行うツールも備えている。これらをMCPというAIが利用するツールの規格に則って提供しているので、CursorやGemini CLIなど様々なAIツールで利用することができる*1
要するに、AIに「プログラマーとしての目と手」を与え、IDE(統合開発環境)のようにコードを扱えるようにするツールと言えるだろう。PythonやTypeScript、Javaなど多くの言語に対応しており、大規模なプロジェクトでも効率的にAIを利用できるようになるのが強みだ
uvのインストール
Serena MCPはuvで配布されているので、そっちを先にインストールする。uvの公式サイトによるとWindowsでインストールするコマンドはこう
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
そのままだとPATHが通ってないので、ターミナルを再起動するようメッセージが表示される。その通りにしてuv --versionを実行するとバージョンが表示され、無事使えるようになった

個人的に盲点だったのは、uvはPythonパッケージ導入ツールだけどuv自体はPython環境の外で使えること。そしてPythonのパッケージをそれ用のPython仮想環境ごと導入してくれるので、そのまま事前にPython環境を用意することなく目的のツールが使える
MCPを直接起動
uvをインストールしたので、ターミナルから直接MCPを起動できる。Serenaを起動するコマンドはこう
uvx --from git+https://github.com/oraios/serena serena start-mcp-server
するとブラウザで自動的にSerenaのダッシュボードが開く(終了するにはターミナルでCtrl+Cを入力)。これで動作確認成功!

MCPを設定
続いてAIがMCPを使えるよう設定。settings.jsonとかmcp.jsonとかの設定ファイル*2に次のような設定を書き加える
{ "mcpServers": { "serena": { "command": "uvx", "args": [ "--from", "git+https://github.com/oraios/serena", "serena", "start-mcp-server" ] } } }
上の直接起動するコマンドの後だと、この手の設定JSONは起動コマンドを指示しているのがよく分かるだろう
Serena MCPを使ってみる
いよいよ使ってみよう。まずプロジェクトのアクティベートを行ってSerenaにプロジェクトを認識させ、続いてオンボーディングを行うとSerenaがプログラムを分析したまとめを作成する。実行するにはAIに自然言語で指示するだけだ。するとAIがSerenaのツールを利用して作業をやってくれる*3

↑は既にオンボーディング済みなので、.serenaフォルダ内にメモリファイルが保存されている。ここにプログラムがどんなライブラリを使ってるかとか、フォルダ構造がどうなってるかとか色々書かれているので、AIがその情報を使って効率的に作業できるわけだ(マークダウンを使った自然言語で書かれているので、手動で簡単に修正できるのも便利なポイント)

興味深いのがプログラムを実行したりコンパイルしたりするためのコマンドをまとめたファイルがあること。この手のAIはLinuxのつもりでコマンドを実行することがあるあるなので、Windowsだからこのコマンドだぞと指示してくれるのは地味に役に立つ。一方でプログラムの目的など、仕様駆動開発の関連ファイルと内容が被ってる…どころかそっちから引き写してる場合もある
メモリファイルは勝手に更新されないので、開発が進んで内容をアップデートしたい場合は、再度オンボーディングを行えば良い。現行の内容で改めてメモリファイルが書き込まれる
関数や変数などに関してはいちいちメモリファイルにまとめたりせず、都度対応したツールを利用してAIに理解させるようだ(あんまり複雑なプロジェクトをやってないので、まだ自分は活用できてない*4)
(追記)実際AIがツールを利用して、クラス間の継承関係と対応するメソッドについて理解した場面をスクショできたので貼ります


やはりAIが必要だと判断した時にツールを呼び出して、必要な情報を調べるようだ
Serena MCPのコマンドや設定
Serenaの起動コマンドには--helpオプションがあり、それを付けて実行するとオプションなどの解説が表示される

例えば--project ${PWD}を加えれば、Serenaを起動するとともに${PWD}、つまり現在のディレクトリをプロジェクトフォルダとしてアクティベートしてくれるわけだ。というわけでCursorのMCP設定には--context ide-assistantを追加してIDE向けの設定にした*5
加えてユーザー\.serena\serena_config.yamlがSerenaの設定ファイルになっているので、ここを書き換えることで色々と設定を変更することができる。早速web_dashboard_open_on_launchをfalseにして、起動時にブラウザでダッシュボードを開かないようにした
終わりに
今回Serena MCPを導入してみて、下手すると一番の収穫は「MCPの設定ファイルは意外と簡単」だと分かったことかもしれません。JSONファイルなので一見やたら複雑に見えますが、中身は単に「ターミナルで打つコマンド」(とそのオプション)を並べているだけだと分かれば、修正やカスタマイズも自由自在です
Serenaに限らず、世の中には便利なMCPサーバーがたくさん公開されています。ぜひ皆さんも、この「起動コマンドを書くだけ」という感覚を武器に、色々なMCPツールを試してAIとの開発環境をパワーアップさせてみてください
*1:例に挙げた2つは元々AIが編集などを行うためのツールを備えているけれども
*2:例えばGemini CLIなら”ユーザーフォルダorプロジェクトフォルダ.gemini\settings.json”、Cursorなら”\.cursor\mcp.json”
*3:AIが今一分かってない場合は直接ツールを実行するコマンドもある。参考:Gemini CLI で Serena を使う方法 #MCP - Qiita
*4:普通にテキストとして読むだけで事足りちゃう
*5:Serenaのツールの中で、IDEに組み込まれたAIが元から持ってるようなものを無効化するらしい。検索とか編集とかは機能が重複して不要なので