Carpe Diem

備忘録

MCPアーキテクチャパターン

背景

MCP(Model Context Protocol)を使う上で、ローカルMCPサーバやリモートMCPサーバ、更にはそれらを集中管理するゲートウェイ的なサービスもあったりと複雑だと感じたので、それぞれのパターンを一度洗い出してみました。

事前知識

MCP(Model Context Protocol)とは

MCPとは

AI <-> 外部データソース連携

の為の標準規格で、Claude Codeを出しているAnthropicが標準化しました

MCP Clientの例

よくある例は次のようなAIエディターです。

  • Cline(VS Code)
  • Cursor
  • Claude Code
  • Windsurf

もちろん自前でMCP Clientを作ることも可能です。
生成AIを組み込んだチャットボットなどが外部リソースにアクセスしたいときなどですね。

MCP Serverの例

開発でよく使われる例としては以下があります。

  • GitHub MCP: GitHubでAIアシスタントがPRを作ったり
  • Playwright MCP: AIアシスタントがブラウザ自動操作

このように公式が出しているMCPサーバもあれば、個人が開発した野良のMCPサーバもあります。

個人が開発したものはセキュリティ上の懸念が大きいため、チーム内で自作するか、コードを全て読んだ上でバージョンを固定するなどサプライチェーン攻撃に最大限気をつける必要があります。

MCPのTransportプロトコル

大きく3つありますが、最後のSSEはdeprecatedになっています。

  • STDIO Transport: 標準入出力を使ったデフォルトのtransport
  • HTTP Stream Transport: Streamable HTTPを使ったtransport
  • SSE Transport: Server-Sent Eventsを使ったtransport

その他の違いは以下の比較表を参考にしてください。

ref: Transport Overview | MCP Framework

アーキテクチャパターン

Local Server

ローカルMCPサーバと呼ばれる一番よくあるパターンです。

Pros

  • シンプルで導入が簡単
  • デバッグしやすい
  • プロセス間通信だけなので最速。特にローカルファイルアクセスなど。

Cons

  • 個別の導入とメンテナンスが必要となり運用コストが高い
  • 個々人がローカルサーバを管理するので、チーム内での一貫性に欠ける
    • .cursor/mcp.jsonなどをチーム内で共通管理するのは可能
  • ログ集約など横断的機能を一括で差し込めない
  • ローカルのコンピューティングリソースが必要

Remote Server

リモートMCPサーバと呼ばれるもので、

  • 前述のローカルサーバをクラウド上でセルフホスティングする
  • リソースを提供しているサービスが、リモートMCPサーバをホスティングしている

といったケースで利用が可能です

直近ではGitHubがリモートMCPサーバをパブリックプレビューで提供開始しました

もちろん一部をリモートサーバ、一部を前述のようにローカルサーバと組み合わせることもできます。

Pros

  • チーム内でバージョン・認可フローなど一貫性を保てる
  • サービス側が提供していればLocal Serverであったようなサーバメンテナンスが不要
  • ローカルのコンピューティングリソースは不要となりスケールしやすい

Cons

  • 提供しているサービスが少ない
  • セルフホスティングする場合はメンテコストがかかる
  • ログ集約など横断的機能を一括で差し込めない

MCP Router (Local MCP Server)

こちらはNacosが提供しているような、MCPサーバを一元管理する仕組みです。

Pros

  • MCPサーバを一元管理できるため、チーム開発に向いている
  • プロトコルを集約できる
    • Streamable HTTP/SSEしか提供していないものをstdioで扱いたいなど
  • ログ集約など横断的機能を一括で差し込める

Cons

  • サプライチェーン攻撃の懸念がある
    • とはいえ自前で作るのは大変
  • ローカルのコンピューティングリソースが必要
  • 複雑性が増すためデバッグがしにくくなる

MCP Router (Remote MCP Server)

こちらは前述のパターンで、MCPサーバがリモートになったケースです。

Pros

  • 同上

Cons

  • ローカルリソース以外は同上

MCP Gateway

HigressのようなAI Native API gatewayです。

Pros

  • Routerと同様のメリットがある
  • 認証・レート制御・メトリクス収集などをゲートウェイに集約できる
  • 権限(認可)も中央管理は可能
    • ただし細かく権限管理するのであればユーザ(開発者)毎のロール管理が別途必要

Cons

  • サプライチェーン攻撃の懸念がある
    • とはいえ自前で作るのは大変
  • セルフホスティングのメンテコストがかかる

まとめ

MCPのアーキテクチャパターンを一覧化しました。

個人で開発する場合とチームで開発する場合とで選択肢は異なっていくと思いますが、それぞれのメリットデメリットを考慮した選定ができると良いでしょう。

参考