mcpField
M
MCP Tutorials

MCP Tutorials

ローカル
github.com/kwonci開発ツール080 週間前に更新

MCP Tutorials について

MCP Tutorialsは、Python SDKでMCPサーバーを実装する開発者向けのサンプル集です。ツール、リソース、プロンプト、画像の返却を扱い、Clineからの接続テストも記録しています。

主な機能

  1. 01MCP サーバーのツール例
  2. 02リソースの検出と読み取り例
  3. 03プロンプトの検出と利用例
  4. 04画像返却の例

活用シーン

  1. 01MCP Python SDKでのリソース定義の学習
  2. 02クライアントによるリソース検出と読み取りの理解
  3. 03再利用可能なプロンプトのサーバー実装の調査

MCP 対応

ツール、リソース、プロンプトのサーバーインターフェースを解説し、Clineからサンプルサーバーへ接続するテストを記録しています。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

MCP チュートリアル

リファレンス

https://modelcontextprotocol.io/quickstart/server

  • [v] チュートリアルで提供されている MCP サーバーを Cline 経由で使ってみる
  1. Cline でエラーが発生したとのことですが、Cline がデバッグレベルのログを出力する過程で、成功したエラーまで stderr に出力しているのではないかと推測しました。loglevel を error にしたところ解決しました(リンク)
  • [] Tools の引数に関する説明が正しく表示されない。問題なのかどうか確認が必要
  • [v] Python のリンターとフォーマッターを再インストール(→ ruff をインストール)

API リクエストを使わないわけではありません。(自分のリクエスト+MCP サーバーが提供するツール)を LLM が見て判断し、自動的に実行するため、この過程で API リクエストが 2 回発生します。$0.05、$0.03。いずれにせよ、ツールをうまく利用して情報を取得できることが分かりました。

  1. 例を確認する
  • filesystem:ツールを使用
  • drive:リソースを使用。→ リソースで可能なすべての操作はツールでも可能ですが、異なる抽象化を提供します(REST API の GET と POst 程度の違いとして理解)

例の追加

Python SDK に含まれる内容を理解する

https://github.com/modelcontextprotocol/python-sdk

  1. リソースの定義

https://modelcontextprotocol.io/docs/concepts/resources#resource-templates

MCP サーバーが MCP クライアントに提供する、あらゆる種類のデータです。

  • リソースの検出(MCP クライアントは、MCP サーバーで利用可能なリソースをどのように把握するのか)
    • 直接的なリソース:resources/list エンドポイントを通じて、以下の形式でリソースを公開します
{
  uri: string;  // Unique identifier of the resource
  name: string; // human-readable name of resource
  description?: string; // optional description
  mimeType?: string; // optionam mimetype
}
  • リソーステンプレート:uritemplate を通じて提供するリソースを公開します
{
  uriTemplate: string;   // URI template following RFC 6570
  name: string;          // Human-readable name for this type
  description?: string;  // Optional description
  mimeType?: string;     // Optional MIME type for all matching resources
}
  • MCP クライアントがリソースの検出を通じて、利用可能なリソースを MCP サーバーから取得した場合、どのように呼び出せるでしょうか?
    • リソース読み取りハンドラーを定義する方法は 2 つあります
      • @mcp.resource() を通じて uri を受け取る関数をデコレートして定義する
      • または、@mcp.resource(uri_template) を通じて定義する

まとめると、MCP サーバーはリソースの検出を可能にするため、リソースの URI を直接、またはテンプレートを通じて公開します。mcpclients は利用可能なリソースを検出した後、URI を通じてそのリソースをリクエストできます。

  1. プロンプトの定義

目的に応じたプロンプトの提供:サーバーが再利用可能なプロンプトテンプレートを提供することで、LLM とのやり取りに標準化された方法を提供します(ユーザーが操作し、ユーザーが明示的にプロンプトを選択できることを意図しています)。

実装する API

  • プロンプトの検出

    • 戻り値:(名前、説明、引数)
  • プロンプトの使用

    • 引数:(名前、プロンプトで宣言された引数)
    • 戻り値:プロンプト(動的(リソースベースのプロンプト)、複数も可能)
  1. 画像の返却

画像を返す機能があります

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。