Open1

気になったMCPサーバまとめ

ebi_yuebi_yu

Serena

Serena は、LLMベースのエージェントがコードをセマンティックに操作するために使う MCPサーバです。
言語ごとの LSP(Language Server Protocol) と連携し、定義や型、参照などの情報をLLMに提供します。

  • Serenaは、AIがコードを「文字列」として扱うのではなく 「意味のある構造として理解・操作できる環境」 を提供します。
  • 非常に大規模で複雑なプロジェクトであっても、適切なコンテキストを効率的に見つけ出し、適切な処理を実行できます。

https://github.com/oraios/serena

前提 : LSP(Language Server Protocol)

省略

LSP(Language Server Protocol)は、「エディタやツールが共通の方法でプログラミング言語にアクセスするためのプロトコル」です。

「コード補完」「定義ジャンプ」「リネーム」「シンタックスチェック」などの機能を、言語ごとに共通のインターフェースで提供します。

VSCodeなどで、コード書いているときにコード補完が出る仕組みはLSPを使っています。

https://microsoft.github.io/language-server-protocol/

Serenaでは、これをSolid-LSP経由で利用し、各言語のLanguage Server(例:tsserver, pyrightなど)から次のような情報を取得しています:

  • 関数・変数などの定義位置
  • 型情報
  • 参照されている箇所
  • 文法・構文エラー
  • ドキュメントコメント(hover情報)

前提 : セマンティック理解

省略

セマンティック理解とは、コードの 「意味」や「関係性」を把握することです。
たとえば user.name がどんな型で、どこで定義され、どの関数から使われているかといった情報を構造的に理解します。

Serenaでは、このセマンティック情報を LSP から取得し、LLMに提供します。
これにより、以下のような効果が得られます:

  • コード全体をLLMに渡さずとも必要な文脈だけを抽出できる(コンテキスト効率が良い)
  • 型・参照関係に基づいた正確なコード操作(リファクタ・置換)が可能
  • ファイルをまたぐような大規模プロジェクトでも、高速かつ正確に動作

構成の全体図

Serenaは 「エージェント(MCPサーバ)」「LSPクライアント(Solid-LSP)」 の2層構造になっています。

🧑‍💻 AIエージェント(例:Claude)
      ↓ MCPリクエスト
📡 Serena MCPサーバ
      ↓ ツール呼び出し(findSymbol, rename など)
🔌 Solid-LSP(LSPクライアント)
      ↓
🧠 Language Server(tsserver, pyright など)
      ↓
📁 実プロジェクトのコードベース
  1. Serena MCPサーバはAIエージェントから送られてくる命令を受け取り、必要に応じて各種ツール(シンボル検索やリファクタリングなど)を呼び出します。
  2. Solid-LSP(LSPクライアント) は対応する言語のLanguage Serverを起動し、定義位置や型、参照情報などのセマンティック情報を取得します。各言語の違いはSolid-LSP側で吸収されており、MCPサーバ側からは統一された形で処理できます。
  3. 処理結果は、ファイルの差分や構造化された情報として整形され、AIエージェントが理解・活用できる形式でMCPサーバから返却されます。

使い方

以下の三つの方法があります

  • dockerコンテナで起動させる
  • ローカルにクローンしてuv(python package manager)で起動
  • uvxでinstallせずに起動

mcp.jsonへの設定追加方法は以下を参照

https://github.com/oraios/serena?tab=readme-ov-file#claude-desktop