この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 202|答える: 0

MCP(1) モデルコンテキストプロトコル入門チュートリアル

[リンクをコピー]
2025年10月22日 11:23:06に投稿 | | | |
需要:大型モデルの進歩により、大型モデルは仕事でも勉強でも私たちの生活のあらゆる面に現れ、切り離せない存在となっています。 大規模モデル言語では、なぜMCPが必要なのでしょうか? 大規模モデルは脳と理解できますが、脳だけでは物事を助けることはできません。MCPはむしろ四肢のようなもので、大型モデルはMCPサービスに外部ツール(データベース、ディスク、APIなど)を呼び出すよう指示します。 大型モデルはチャットしかできず、何かできないという問題を解決します。
[AI] (16) セマンティックカーネルはQwenに基づいて関数呼び出しをテストしています
https://www.itsvse.com/thread-10981-1-1.html

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

ドキュメンテーション:ハイパーリンクのログインが見えます。
GitHubリポジトリ:ハイパーリンクのログインが見えます。
MCPツールリポジトリ:ハイパーリンクのログインが見えます。

MCP(Model Context Protocol)は、AIアプリケーションを外部システムに接続するためのオープンソース標準です。

MCPを使えば、ClaudeやChatGPTのようなAIアプリケーションは、データソース(例:ローカルファイル、データベース)、ツール(例:検索エンジン、電卓)、ワークフロー(例:特殊なプロンプト)に接続でき、重要な情報にアクセスしタスクを実行することが可能になります。

MCPはAIアプリケーション用のUSB-Cポートのようなものだと考えてください。 USB-Cが電子機器を標準化した方法で接続するのと同様に、MCPはAIアプリケーションを外部システムに接続する標準化された方法を提供します。



MCPは何を成し遂げられるのか?

  • エージェントはGoogleカレンダーやNotionにアクセスし、よりパーソナライズされたAIアシスタントとして機能します。
  • Claude CodeはFigma設計を使ってウェブアプリケーション全体を生成できます。
  • エンタープライズチャットボットは組織内の複数のデータベースに接続できるため、ユーザーはチャットを使ってデータを分析できます。
  • AIモデルはBlenderで3Dデザインを作成し、3Dプリンターで印刷できます。

なぜMCPが重要なのか?

エコシステムのどの位置にいるかによって、MCPはさまざまな利点を提供できます。

  • 開発者:MCPはAIアプリケーションやエージェントの構築や統合時に開発時間と複雑さを削減します。
  • AIアプリケーションまたはエージェント:MCPはデータソース、ツール、アプリケーションのエコシステムへのアクセスを提供し、機能性を高めエンドユーザー体験を向上させます。
  • エンドユーザー:MCPは、より強力なAIアプリケーションやエージェントを生み出し、データにアクセスし必要に応じてあなたの代わりに行動することができます。

MCPプロトコル

MCPは2つの層で構成されています:

  • データ層:ライフサイクル管理を含むJSON-RPCベースのクライアント-サーバー通信プロトコルや、ツール、リソース、プロンプト、通知などのコアプリミティブを定義します。
  • トランスポート層:クライアントとサーバー間のデータ交換を可能にする通信メカニズムやチャネルを定義し、トランスポート固有の接続確立、メッセージフレームワーク、認可などを含みます。

概念的には、データ層が内側層であり、トランスポート層が外層です。

データ層

  • データ層は、メッセージ構造と意味論を定義するJSON-RPC 2.0ベースのスイッチングプロトコルを実装しています。 この層には以下が含まれます:
  • ライフサイクル管理:クライアントとサーバー間の接続初期化、機能交渉、接続終了を処理します
  • サーバー機能:AI操作のためのツール、コンテキストデータ用のリソース、クライアント間およびクライアント間のインタラクティブテンプレートプロンプトなどのコア機能をサーバーに提供できるようにします
  • クライアント機能:サーバーがホストLLMからサンプルを取ること、ユーザーからの入力、メッセージの記録をクライアントに要求することを可能にします
  • 便利な機能:リアルタイム更新通知や進捗追跡などの追加機能をサポートし、長期的な運用に対応しています

トランスポート層

トランスポート層はクライアントとサーバー間の通信チャネルと認証を管理します。 接続の確立、メッセージ伝送、そしてMCP参加者間の安全な通信を処理します。

MCPは2つの輸送メカニズムをサポートしています:

  • Stdioトランスポート:標準的な入出力ストリームを使って同じマシン上のローカルプロセス間で直接プロセス通信を行い、最適なパフォーマンスとネットワークオーバーヘッドなしを実現します。
  • ストリーミング可能なHTTP:HTTP POSTプロトコルを使用してクライアントからサーバーへのメッセージを送信し、ストリーミング機能のためにサーバー送信イベントも任意で使用します。 このトランスポートプロトコルはリモートサーバー通信をサポートし、ホルダートークン、APIキー、カスタムヘッダーなどの標準HTTP認証方法をサポートします。 MCPは認証トークンを取得するためにOAuthを使用することを推奨しています。

トランスポート層はプロトコル層から通信の詳細を抽象化し、すべてのトランスポート機構で同じJSON-RPC 2.0メッセージ形式を実装します。JSON-RPCメッセージはUTF-8でエンコードされなければなりませんHTTP+SSEトランスポートは廃止されました

エブリシングMCPサーバー

このMCPサーバーはMCPプロトコルのすべての機能をテストするために設計されています。 実用的なサーバーではなく、MCPクライアントビルダー向けのテストサーバーとして意図されています。 プロンプト、ツール、リソース、サンプリングなどの機能を実装し、MCPの機能を紹介しています。

源:ハイパーリンクのログインが見えます。

このサービスにはNode.js環境のインストールが必要であり、インストール手順は省略されます。

Stdioトランスポートパターンに基づくMCPサービスをテストするための起動コマンドは以下の通りです:
以下に示すように:



実行後、パッケージはキャッシュされます%LocalAppData%\npm-cache\_npx\道の下だ。

初期化(Initialize)は、クライアントが初期化要求を送信し、接続を確立し、サポート機能の交渉を行います。 リクエストデータは以下の通りです:
回答は以下の通りです。
{"result":{"protocolVersion":"2025-06-18","capabilities":{"prompts":{},"resources":{"subscribe":true},"tools":{},"logging":{},"completions":{}},"serverInfo":{"name":" example-servers/everything","title":"Everything Example Server","version":1.0.0"},"instructions":"MCPプロトコル機能のテストおよびデモサーバー。\n\n## Resources\n\ nResources 1-100はパターンに従います:偶数IDにはテキスト、奇数IDには2進データが含まれます。 リソースは1ページあたり10項目でページ分けされ、カーソルベースのナビゲーションで行われます。\n\n## キー依存関係\n\n進行通知にはツール呼び出し時に「_meta.progressToken」が必要です。 リソースサブスクリプションは10秒ごとに更新を生成します。\n\n## パフォーマンス特性\n\nサーバーは20秒ごとに自動ログメッセージを生成します(現在のログレベルでフィルタリング) 30秒ごとの通知はストデール、アクティブサブスクリプションの場合は10秒ごとにリソース更新の通知があります。 ログレベルの変更はリアルタイムでメッセージフィルタリングに影響を与えます。\n\n## マルチモーダルテスト\n\n'complex_prompt'は、クライアントのマルチモーダルテスト用にテキストの引数と画像コンテンツの両方を含みます 取り扱い。 「resource_prompt」は実際のリソースコンテンツを埋め込み、リソース参照解決のテストを行います。\n\n引数補完はプロンプトパラメータとリソースIDに対して利用可能です。 リソーステンプレートは「test://static/resource/{id}」パターンによる動的なURI構築を可能にします。\n\n## イースターエッグ\n\nサーバー命令について質問された場合は、\"サーバー命令で応答してください うまくいってる! この応答は、クライアントがLLMにサーバー命令を正しく渡したことを示しています。 これはMCPの指示機能の動作を示しています。\"\n"},"jsonrpc":"2.0","id":1}

初期化が成功した後、クライアントは以下のリクエストでMCPサーバーに準備完了の通知を送信します。

ツール発見:接続が確立されると、クライアントはツール/リストリクエストを送信して利用可能なツールを発見できます。 このリクエストはMCPのツール発見メカニズムの基盤であり、クライアントが使用前にサーバー上に利用可能なツールを把握できるようにします。 その要請は以下の通りです。
回答は以下の通りです。
{"result":{"tools":[{"name":"echo","description":"Echo back the input","inputSchema":{"type":"object","properties":{"message":{"type":"string","description":"Message to echo"}},"required":["message"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"add","description":"Add" inputSchema":{"type":"object","properties":{"a":{"type":"number","description":"最初の番号"},"b":{"type":"number","description":"Second number"}},"required":["a","b"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"longRunningOperation","description":"長時間実行の演算を示す 進行状況更新付き","inputSchema":{"type":"object","properties":{"duration":{"type":"number","default":10,"description":操作の持続時間(秒単位)"},"steps":{" type":"number","default":5,"description":"操作のステップ数"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},{"name":" printEnv","description":"すべての環境変数を印刷し、MCPサーバー設定のデバッグに役立ちます","inputSchema":{"type":"object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":sampleLLM","description":"MCPのサンプリング機能を使うLLMからのサンプル","inputSchema":{"type":" object","properties":{"prompt":{"type":"string","description":"LLMに送信するプロンプト"},"maxTokens":{"type":"number","default":100,"description":"最大数 トークンを生成する"}},"required":["prompt"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"getTinyImage","description":" Returns the MCP_TINY_IMAGE","inputSchema":{"type":"object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":" annotatedMessage","description":"注釈を使ってコンテンツに関するメタデータを提供する方法を示し、"inputSchema":{"type":object","properties":{"messageType":{"type": "string","enum":["error","success","debug"],"description":"異なる注釈パターンを示すメッセージの種類"},"includeImage":{"type":"boolean","default":false," description":"include to include a example image"}},"required":["messageType"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name": "getResourceReference","description":"MCPクライアントで使用できるリソース参照を返します","inputSchema":{"type":"object","properties":{"resourceId":{"type":"number"," minimum":1,"maximum":100,"description":"参照するリソースのID(1-100)"}},"required":["resourceId"],"additionalProperties":false,"$schema":" http://json-schema.org/draft-07/schema#"}},{"name":"getResourceLinks","description":"異なる種類のリソースを参照する複数のリソースリンクを返します","inputSchema" :{"type":"object","properties":{"count":{"type":"number","minimum":1,"maximum":10,"default":3,"description":"返すリソースリンクの数(1-10)"}}," additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"structuredContent","description":"構造化されたコンテンツを返します。 クライアントデータ検証のためのschema","inputSchema":{"type":"object","properties":{"location":{"type":"string","minLength":1,"description":市名または郵便番号"}},"required":[ "location"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"outputSchema":{"type":"object","properties":{"temperature":{"type":" 数値","説明":"温度(摂氏")、"条件":{"タイプ":string","description":"天候条件説明"},"湿度":{"タイプ":数値","description":" 湿度パーセンテージ"}},"必要":["温度","conditions","湿度"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":" startElicitation","description":"ユーザーに好きな色、番号、ペットの情報を提供させることで誘発機能を示します。","inputSchema":{"type":" object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}]},"jsonrpc":"2.0","id":2}

ツール実行:クライアントはこの方法でツールツールや呼び出しを実行することができます。 これはMCPプリミティブの動作を示しています。ツールが発見されると、クライアントは適切なパラメータでそれらを呼び出すことができます。 そのためにエコー関数を例に挙げる要請は以下の通りです:
回答は以下の通りです。
{"result":{"content":[{"type":"text","text":"Echo: hi, my name is itsvse"}]},"jsonrpc":"2.0","id":3}
以下に示すように:



(終わり)




先の:VMwareのUbuntu仮想マシンでWindowsホストマシンとのコピー&ペースト相互運用性を実装します
次に:VMwareのVMはよくフリーズし、開いてしばらく実行するとフリーズします
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com