モデルコンテキストプロトコル(MCP)およびGoでMCPサーバーを実装する際の注意点

GOにおけるMCP仕様と実装に関する長文記事

目次

ここに、モデルコンテキストプロトコル(MCP)の説明が示されています。MCPサーバーの実装方法の短いノート(GoでのMCPサーバーの実装)も含まれており、メッセージ構造やプロトコル仕様についても記載されています。

ロボットとMCP

モデルコンテキストプロトコル(MCP)概要

**モデルコンテキストプロトコル(MCP)**は、2024年末にAnthropicによって導入された、オープンで標準化されたフレームワークです。AI言語モデルを外部データソース、ツール、システムに接続するためのものです。MCPの目的は、「N×M統合」の問題を解決し、ファイルの読み取り、関数(ツール)の実行、さまざまなアプリケーションにわたるコンテキストプロンプトの使用など、さまざまな機能に対して汎用的なインターフェースを提供することです。MCPは、専有または内部プロトコルではなく、公式な仕様とオープンソースのリファレンス実装を持つオープンスタンダードです。実際、MCPの導入後、主要なAIプロバイダー(OpenAIやGoogle DeepMindを含む)がMCPをサポートすることを発表しており、これは、MCPがベンダー固有のソリューションではなく、広く採用される標準であることを示しています。

MCPの目的とアーキテクチャ

MCPは、アプリケーションがLLMsにコンテキストを提供する方法を標準化することを目指しています。よく使われる比喩は「AIアプリケーション用のUSB-Cポート」です。共通のプロトコルを定義することで、AIアシスタントやツールがデータベース、ファイルシステム、API、その他のリソースとシームレスにインターフェースできるようになり、カスタムの統合が不要になります。これにより、言語モデルが必要なデータに安全にアクセスできるようになり、より関連性が高く、最新の応答を生成できるようになります。

アーキテクチャ: MCPは、明確な役割分離を持つクライアント–サーバーモデルに従います:

  • MCPホスト: 接続を管理する親アプリケーション(例:チャットクライアントやIDE)。1つ以上のMCPクライアント(コネクタ)を含みます。
  • MCPクライアント: ホスト内にあるコネクタインスタンスで、MCPサーバーと1対1のセッションを確立します。クライアントはセッションライフサイクルを処理し、メッセージをルーティングし、ユーザーの権限やセキュリティポリシーを強制します。
  • MCPサーバー: MCPプロトコルを通じて特定の機能(特定のデータや関数へのアクセス)を公開する軽量サービスです。各サーバーはデータソース(ファイル、DB、APIなど)またはツールをラップできます。複数のサーバーが並列して実行され、それぞれが異なる統合を提供できます。
  • データソース/サービス: サーバーがインターフェースする実際のリソース – これはローカルファイルやデータベース、またはリモートサービス(ウェブAPI、SaaSアプリなど)を含むことができます。MCPサーバーはこれらのリソースへのアダプタとして機能し、LLMが標準化されたプロトコルを通じてのみデータにアクセスできるようにします。

この設計は、IDEの世界で使われている言語サーバープロトコル(LSP)にインスパイアされています。LSPが任意のエディタが共通プロトコルを通じて任意のプログラミング言語をサポートできるようにするように、MCPは任意のAIアプリケーションがMCPを話すデータ/ツール統合に接続できるようにします。この分離により、AIツール開発者はMCPサーバーを1度書けば、多くのAIクライアントで動作し、AIアプリケーション開発者は新しい統合を追加するだけですべてのカスタム統合コードを避けることができます。

プロトコルとメッセージ構造

通信: MCP通信は、JSON-RPC 2.0メッセージを使用した持続的、ステートフルなセッションに基づいています。すべてのリクエストと応答はJSON-RPCのフォーマットに準拠しており("jsonrpc": "2.0"フィールド、メソッド名、パラメータ、関連IDを含む)、クライアントまたはサーバーのどちらかがリクエストまたは通知を送信でき、双方向の相互作用を可能にします。MCPセッションは通常、ハンドシェイクから始まります:

  • クライアントは**initialize**リクエストで開始し、プロトコルバージョンを提案し、サポートしている機能(サポートしている機能)を宣伝します。例えば、クライアントはサーバー駆動の「サンプリング」リクエストを処理できるか、ファイルアクセス用の特定のルートを提供できるかを示すことができます。サーバーは、サポートしているプロトコルバージョンと機能を応答し、このセッションで有効な機能を確定します(MCPはLSPのオプション機能に類似した機能交渉システムを使用します)。重要な機能やバージョンが互換性がない場合、接続は優雅に中止されます。
  • 合意後、クライアントは**initialized**通知を送信して準備完了を示します。その後、通常の操作が進行します。セッションは、片方の側がシャットダウンを発行するまで、JSON-RPCメッセージの継続的な交換が行われます。

トランスポート: MCPは単一のトランスポートを強制しません – JSONテキストを運ぶ任意のチャネルで動作します。一般的に、MCPサーバーはサブプロセスとして実行され、ローカル統合ではSTDIO(stdin/stdoutパイプ)を通じて通信します。これは言語サーバーが動作する方法と類似しており、ローカルツール(ホストがサーバープロセスを起動し、メッセージをパイプ)にとって便利です。または、MCPサーバーはHTTPを通じてアクセス可能な独立したサービスとして実行することもできます。MCP仕様では、ストリーミングHTTPトランスポートが定義されており、サーバーはJSON-RPCコール用の単一のHTTPエンドポイントを公開します(クライアントがPOSTリクエストを送信し、サーバーは長時間の操作に対してServer-Sent Eventsを通じて結果をストリーム送信できます)。いずれの場合も、メッセージはUTF-8 JSONラインであり、プロトコルはストリーミング応答とサーバー発信メッセージをサポートします(HTTP+SSEのアプローチにより、サーバーは非同期に通知や部分的な結果をプッシュできます)。セキュリティガイドラインでは、ローカルサーバーがlocalhostにバインドし、Originヘッダーを検証して不正なリモートアクセスを防ぐことを推奨し、リモートサーバーでは適切な認証(トークンやOAuthフローなど)を使用することを推奨しています。

メッセージフォーマット: MCPはJSON-RPCの3つのメッセージタイプ(リクエスト応答通知)を活用しています。リクエストはidmethod文字列、(オプションの)params(通常は引数のJSONオブジェクト)を含みます。受信者は、対応する応答(一致したidを含む)を返す必要があります。これはresultまたはerrorオブジェクトを含みます。通知は、methodparamsを持つ片方向メッセージであり、idがないため応答がありません。MCPは、ベースのJSON-RPCにいくつかのルールを追加しています(例えば、idはnullでなく、セッション中に再利用しないことなど)ことで、明確さを保証します。

セッションと状態: 接続はステートフルと見なされます – クライアントとサーバーはお互いの能力と、場合によってはセッション状態(変更のサブスクリプション、進行中の操作など)のコンテキストを維持します。また、優雅なシャットダウンのための定義された手順もあります(例えば、クライアントがシャットダウンリクエストを送信するか、またはトランスポートを単に閉じるだけで、サーバーはクリーンアップを行い、両方の側はハングアップ操作のタイムアウトを実装します)。エラーハンドリングはJSON-RPCの慣例に従い(エラーレスポンスにはコードとメッセージが含まれる)、仕様では特定の状況(例:アクセス拒否、ツールが見つからないなど)のための標準エラーコードが定義されています。MCPは、クロスカットの懸念に対処するためのユーティリティも提供しています:例えば、進行中のリクエストのキャンセル(CancelledNotification)、ロギング/デバッグメッセージ、構成変更のための組み込み通知があります。これらは、長く複雑なインタラクションを管理するのに役立ちます(クライアントは進行中のツールコールをキャンセルしたり、サーバーはクライアントに警告をログしたりできます)。

MCPの機能と操作

初期化後、MCPセッションは、コンテキストとコマンドの交換を構造化された方法で可能にします。MCPのサーバー側の機能は、プロンプトリソースツールの3つです(それぞれ、初期化中にサーバーがサポートしているかどうかを宣言します):

  • プロンプト: サーバーがクライアントに提供できる事前に定義されたプロンプトテンプレートまたは指示です。これらは通常、ユーザー発動型のヘルパー(ユーザーが明示的にプロンプトを会話に挿入する、例えばUIのスラッシュコマンドを通じて)です。MCPは、利用可能なプロンプトを一覧表示し、プロンプトの内容を取得するためのメソッドを提供します。例えば、クライアントはprompts/listを呼び出して、プロンプトテンプレートのリスト(それぞれに名前、説明、オプションのパラメータ)を取得できます。プロンプトを取得するには、クライアントはプロンプトの名前と任意の引数値をprompts/getに渡します。サーバーはプロンプトの内容を返します(通常、クライアントがLLMのコンテキストに注入するメッセージのセットとして)。プロンプトは、ユーザーが必要に応じて呼び出せる複雑な指示やワークフロー(例:「コードレビューのテンプレート」)の再利用を可能にします。サーバーはpromptsの能力を示し(listChangedなどのオプションのサブ機能で、プロンプトのセットが動的に変化した場合にクライアントに通知する)。

  • リソース: モデルにコンテキストを提供する構造化されたデータまたはコンテンツ。リソースは通常、ファイル、ドキュメント、データベースエントリなどの情報で、AIアシスタントが読み取ったり参照したりするものです。MCPはリソースが識別され、転送される方法を標準化しています:各リソースにはURI識別子(例:file:///path/to/file.txtまたはデータベース用のカスタムスキーム)があります。クライアントはresources/listを通じて利用可能なリソースをクエリできます(サーバーはディレクトリツリー、最近のドキュメントのリストなど、提供できます)。サーバーの応答には、各リソースのメタデータ(URI、名前、タイプ、説明など)が含まれます。その後、クライアントはresources/readを通じて特定のリソースのコンテンツを要求し、URIを渡します。サーバーはリソースのコンテンツを返します(ファイルの場合、テキスト、または構造化されたデータ(MCPはテキスト、JSON、バイナリなどのさまざまなコンテンツタイプをサポートし、MIMEタイプで識別))。リソーステンプレート(パラメータ化されたリソースで、クライアントが埋め込むことができるテンプレートURIで識別されるもの、例えばユーザーがパラメータを提供するデータベースクエリ)もサポートされています。有効な場合、サーバーはリソースが変更されたときに通知を送信できます(例:notifications/resources/updated)またはクライアントがリソースの変更にサブスクライブできます(resources/subscribe)。MCPの設計では、リソースはアプリケーション制御されたコンテキストです:ホストアプリケーション(クライアント)が通常、ユーザーの確認またはUIコンテキストに基づいて、どのリソースのコンテンツをモデルのプロンプトに実際にフィードするかを決定します。

  • ツール: サーバーがモデルに実行させることが可能な実行可能な関数またはアクション。ツールはAIが実行できる操作を表します – 例:外部APIを呼び出す、データベースクエリを実行する、メールを送信する、ファイルを変更するなど。各ツールには名前とJSONスキーマ(入力(およびオプションの出力)パラメータ)があり、AI(またはクライアント)は期待する引数を知ることができます。ツールは通常モデル制御されます:アイデアは、言語モデル(エージェント)が会話中にユーザーのリクエストを満たすためにツールを使用するかどうかを決定することです。ただし、安全性のため、人間のユーザーまたはホストアプリがツールの使用を仲介することがあります(例:確認クリックが必要)。MCPでのツールの使用には、2つの主要な操作があります:一覧表示と呼び出し。クライアントはtools/listを呼び出して、利用可能なツールとそのスキーマを取得できます。例えば、サーバーはget_weatherというツールを一覧表示し、説明と入力スキーマ(“location"文字列が必要)を提供します。その後、モデルがツールを使用する(またはユーザーがそれを呼び出す)場合、クライアントはツールの名前と引数のJSONオブジェクトを含むtools/callリクエストを送信します。サーバーは関数を実行し、結果を返します(通常、result.contentフィールドにテキストまたは構造化されたデータが含まれます(MCPは複数のコンテンツパート(例:テキスト+画像など)を返すこともサポートしていますが、テキストが一般的です))。簡単な例:get_weatherツールを呼び出すと、アシスタントが提示するコンテンツとして「ニューヨークの現在の天気:72°F、曇り」などのテキストペイロードが返されます。ツールはエラーも示すことができます(応答にはisErrorフラグまたはエラーが発生した場合のエラーオブジェクトが含まれます)。プロンプトとリソースと同様に、toolsの能力には、利用可能なツールがランタイムで変化したときに通知するためのオプションのlistChangedフラグがあります(例:動的なプラグインがロードまたはアンロードされた場合)。

上記のサーバー提供の機能に加えて、MCPはクライアント提供の機能(サーバーがクライアントがサポートしている場合に利用できる)も定義しています。これらにはサンプリングルートエリクシテーションが含まれます:

  • サンプリングは、サーバーがクライアント(およびそのLLM)にセッション内でモデル推論を実行させるように要求できるようにします。例えば、サーバーはsampling/requestのようなリクエストを送信してLLMの呼び出しを開始する(例:思考連鎖を続けることや何かを要約すること)ことで、クライアントはモデルをプロンプトし、結果を返します。これにより、エージェンティックな行動が可能になります – サーバーがAIを自身のサブタスクの支援に駆動できるようになります。(すべてのこのような行動は、ユーザーの承認とポリシーの下で実行されます – 例:ユーザーがサーバーがモデルを追加のクエリのために起動することを許可する必要があります。)

  • ルートは、サーバーが特定の許可されたファイルシステムまたはURIルートについて尋ねたり操作したりするようにします。クライアントは、roots/listを通じてサーバーがアクセスを許可されている「ルート」ディレクトリ/URIのリストを提供できます。これは、サーバーが境界を知るためのセキュリティ機能(例:どのフォルダツリーが読み取れるか)です。

  • エリクシテーションは、必要に応じてサーバーがクライアントにユーザーからさらに情報を取得するようにする機能です。例えば、ツールが提供されていない必要な情報がある場合、サーバーはエリクシテーションリクエストを送信し、クライアント(UI)はそれをユーザーのプロンプトに変換します(例:「X統合はあなたのAPIキーが必要です。ご入力ください」)。このように、サーバーはクライアントを通じてインタラクティブに入力を収集できます。

これらの機能はすべてオプションであり、事前に交渉されます。MCPの重要な設計要素の一つは、能力交渉が初期化中に発生することです – クライアントとサーバーは、上記のどの機能をサポートしているかを宣伝し、両方の側がセッションで利用可能な操作を知ることができます。例えば、サーバーがtoolsの能力を宣言していない場合、クライアントはそのサーバーに対してtools/listまたはtools/call操作を試行しません。この拡張性により、MCPは新しい機能とともに進化しながらも、後方互換性を維持できます(サポートされていないメソッドは、交渉されていない場合に単に使用されません)。

実装、SDK、およびMCPサーバーの構築(特にGoでの構築)

公式仕様とドキュメント: 認定されたMCP仕様は、すべてのメッセージタイプの公式なスキーマとともに公開されています。これは、Model Context ProtocolのウェブサイトおよびGitHubで管理されています。仕様はTypeScriptスキーマファイル(対応するJSONスキーマ)で定義されており、すべてのリクエスト、応答、構造を正確に文書化しています。ドキュメントサイト(modelcontextprotocol.io)はガイド、FAQ、各機能とメッセージタイプの詳細な解説、および「MCPインスペクター」ツール(インタラクティブなデバッグ用)を提供しています。MCPは(まだ)IETFまたはISOの標準ではありませんが、コミュニティの入力に基づいてオープンスタンダードとして開発されており、要件にはRFC 2119の用語を使用しています。これは進化するプロトコルであり(バージョンは日付でスタンプされています;例:2025-06-18は最近のリビジョン)、変更を管理するバージョンポリシーがあります。

リファレンス実装: AnthropicはMCPを導入した際に、いくつかのMCPサーバー接続器とSDKをオープンソース化しました。modelcontextprotocolというGitHub組織が、仕様といくつかのリポジトリをホストしています。特に、「servers」リポジトリには、一般的なサービスやデータソース用の事前に構築されたMCPサーバー実装が含まれています。これらはリファレンス統合として機能し、通常はすぐに使用できるか、カスタムサーバーのテンプレートとして使用できます。例えば、公式リポジトリにはGoogle Drive(Google Driveでのファイルアクセスと検索)、Slack(ワークスペースメッセージングとチャンネルコンテンツ)、GitHub/Git(コードリポジトリコンテキスト)、PostgreSQL(読み取り専用データベースクエリとスキーマ情報)、Google Maps(位置とルートAPI)、Puppeteer(ウェブブラウジングとスクレイピング)、など多くのサーバーが含まれています。これらのサーバーをインストールまたは実行することで、ClaudeやCursorなどのAIアプリケーションがすぐにその統合を獲得できます。また、コミュニティドリブンのMCP レジストリサービス(Goでオープンソース)があり、利用可能なサーバーをインデックス化し、多くのサードパーティの寄稿がMCPをさまざまなドメイン(CRMからブロックチェーンデータまで)に拡張しています。

SDKとライブラリ: 自分のMCPサーバー/クライアントを構築するために、複数の言語での公式SDKが提供されています。2025年現在、プロジェクトはTypeScript/NodePythonJava(およびKotlin)、C#(Microsoftと共同開発)、Ruby(Shopifyと共同開発)、Swift、など多くの言語のSDKを提供しています。これらのライブラリはプロトコルのパイプラインを処理します – 例:JSON-RPCトランスポートの管理、仕様スキーマの実装、ツールの登録やリソースの提供に役立つヘルパーAPIを提供します。例えば、TypeScript SDKはNode.jsでサーバーを簡単に書くことができ、Python SDKはPythonアプリケーションでMCPを統合できます。SDKアプローチにより、開発者はJSON-RPCメッセージを手動で構築したり、フルステートマシンを実装したりする必要がなく、高レベルのメソッドを呼び出してリクエストを送信したり、能力を公開したりできます。

Go実装: Goは、MCPサーバーの構築に際して、パフォーマンスと並列処理の強みにより、人気のある選択肢となっています(複数の同時リクエストを処理するのに適しています)。公式Go SDKは、GoogleのGoチームと共同で維持されています。(これは2025年4月頃に発表され、最初の安定リリースは2025年8月を予定しています。)Go SDKは、クライアント/サーバーを構築するためのmcpパッケージと、ツールスキーマ用のjsonschemaヘルパーを提供しています。Go SDKを使用して、開発者はわずかな呼び出しでMCPサーバーを作成できます。例えば、名前とバージョンで新しいサーバーをインスタンス化し、AddToolを通じてツールを追加するには、ツール定義(名前、説明、入力スキーマ)と、そのツールが呼び出されたときに実行するGoハンドラ関数を提供します。SDKは、ツールをプロトコルで公開する(tools/listで宣伝し、tools/callリクエストを処理する)ことを処理します。同様に、リソースやプロンプトを公開するには、類似のAPIを使用できます。最後に、サーバーを実行します – 例えば、server.Run(ctx, mcp.NewStdioTransport())は、クライアントが切断するまで、stdioを通じてJSON-RPCメッセージを処理します。クライアント側では、Go SDKはサブプロセスを起動し、mcp.NewCommandTransport(exec.Command("myserver"))を通じて接続し、クライアントはsession.CallTool(ctx, params)を呼び出してツールを簡単に呼び出し、Goコードで結果を取得できます。

例: 公式Go SDKドキュメントでは、単純な「グリーティング」サーバーの例が示されています。サーバーは、名前を受け取り、挨拶文字列を返す"greet"というツールを登録します。クライアントはこのツールの名前で呼び出し、結果を出力します。これは基本的なパターンを示しています:ツールを定義 → クライアントがツールを呼び出す → 結果を取得。裏では、これはMCP仕様で定義されたJSON-RPCメッセージ("method": "tools/call", params: {"name": "greet", ...}と、result.contentにテキストを含む応答)に対応しています。

公式Go SDKがリリースされる前、コミュニティは独自のGoライブラリを作成しました。特に、Ed Zyndaの**mcp-goプロジェクト(mark3labs/mcp-go)は広く使用され、公式SDKの設計に影響を与えました。もう一つのライブラリ、mcp-golang**(Metoroが提供)はGo実装とAPIを提供し、Elton MinettoのDevコミュニティブログ投稿(2025年初頭)ではこのライブラリを使用しています。これらのコミュニティSDKは、Go開発者がMCPを早期に試験できるようにしました – 例えば、あるチュートリアルでは、Metoroのmcp-golangライブラリを使用して、ブラジルの郵便番号(CEP)を検索するMCPサーバーを構築する方法が示されています。その例では、Goサーバーは外部APIを呼び出してZIPから住所を検索する関数を登録し、結果をテキストとして返します – これにより、AIアシスタントがMCPを通じて必要に応じて住所情報を取得できます。もう一つのガイドでは、カスタムのインメモリデータベース(DiceDB)をMCPサーバーとしてラップする方法を示しています。mark3labsのmcp-go SDKを使用して、pingツールを定義してDB接続性を確認し、データ操作用の他のツールを定義します。これらの例は、MCP統合の作成がどれほど簡単であるかを示しています:コードの大部分はビジネスロジック(API呼び出し、DBクエリなど)であり、SDKがJSON-RPCのワイヤリングを処理します。

GoでMCPサーバーを構築する(チュートリアルのハイライト)

このプロセスを概観するため、Go SDKや類似のライブラリを使用した典型的なフローを以下に示します:

  1. サーバーのセットアップ: 基本情報(名前、バージョン、サポートする機能)で新しいサーバーインスタンスを初期化します。たとえば、Goでは server := mcp.NewServer("MyServer", "1.0.0", nil) とすることで、デフォルトではコアプロトコル機能をサポートするサーバーが作成されます。特定の機能(プロンプト/リソース/ツール)を有効にするには、オプションを使用するか、それらの機能を登録する(ツールやリソースを追加するだけでその機能が有効になります)ことで実現できます。

  2. 機能の登録: 公開したい機能を追加します:

    • ツールを公開する場合、各ツールのスキーマとハンドラを定義します。たとえば、Go SDKの AddTool を使用して、mcp.Tool{Name: "...", Description: "..."} とハンドラ関数(コールリクエストを受け取り、結果を返す関数)を提供します。SDKはハンドラのパラメータタイプから自動的にJSONスキーマを生成します(または明示的に指定することもできます)。
    • リソースを公開する場合、リソース一覧を登録するためのAPIや、コンテンツを読み取るためのコールバックを使用する可能性があります。Python SDKでは、ResourceProviderを継承する方法が利用できますが、GoではSDKがまだ進化中であり、リソースの一覧表示や読み取りを行う関数を提供する必要があります。各リソースには安定したURIが必要です。
    • プロンプトを公開する場合、プロンプトテンプレート(静的なファイルや文字列)を定義し、名前とオプションのパラメータとともに登録します。サーバーはこれらを広告し、クライアントがユーザーに表示するために取得できます。
  3. トランスポートの実装: サーバーがどのように動作するかを決定します。ローカルでの使用には、stdioが最も簡単です。たとえば、Goでは server.Run(ctx, mcp.NewStdioTransport()) とすることで、stdinからJSON-RPCを読み取るようになります。サーバーがネットワーク経由で動作する場合は、JSON-RPCをHTTPで受け取るHTTPハンドラを実装します(公式のGo SDKにもHTTP/SSEトランスポート用のヘルパーが将来的に含まれる予定です)。

  4. クライアントでのテスト: MCPと互換性のあるクライアントでサーバーをテストできます。たとえば、AnthropicのClaude 2(Claude for Desktop)はローカルのMCPサーバーをロードすることをサポートしています。Claudeを設定して、あなたのサーバーのバイナリを起動または接続するようにします。また、mcp-cli というCLIツールや、MCP InspectorというGUIツールも存在し、フルAIクライアントが不要な場合にサーバーをテストするために使用できます。これらのツールは、MCPリクエストをあなたのサーバーに送信し、結果を表示してデバッグを支援します。

  5. セキュリティと権限: サーバーを構築する際には、認証とスコープの設定を考慮する必要があります。ローカルサーバーでは、ホストが特定のOS権限で実行するか、環境変数経由でAPIキーを提供する方法があります。リモートサーバーでは、認証ヘッダーやOAuthフローを使用します。MCPはHTTPトランスポート用の認可仕様を含んでおり(サーバーはトークンを要求でき、クライアントはそれを送信できます)、常にサーバーがユーザーが許可したデータのみにアクセスすることを確保する必要があります(たとえば、クライアントが提供したルートディレクトリを尊重し、他の場所にデータを漏らさない)-MCPガイドラインでは、ユーザーの同意、データプライバシー、ツールの安全性を基本的な要素として強調しています。

要するに、MCPはLLMと外部世界を橋渡しするための正式かつ柔軟なプロトコルです。これは、1社に限定された内部APIではなく、採用が拡大し、豊富な統合エコシステムを持つオープンスタンダードです。このプロトコルは明確なメッセージ構造(JSON-RPCベース)と、プロンプト、ツール、リソースなどの一連の操作(メソッド)を定義しており、どのコンプライアンスクライアント/サーバーでも実装可能です。公式ドキュメントと仕様は利用可能であり、多数のSDK、ライブラリ、例のサーバー(Goを含む)が存在し、実装を容易にしています。MCPを使用することで、開発者はAIを活用したアプリケーションを構築し、既存のデータやサービスを安全に活用し、新しいモデルやデータセットごとに統合ロジックを再構築する必要がありません。

有用なリンク