mcpField
S
Standardizing LLM Interaction with MCP Servers

Standardizing LLM Interaction with MCP Servers

ローカル
lucek.aiAI・エージェント6286 週間前に更新

Standardizing LLM Interaction with MCP Servers について

Tools、Resources、Prompts を示す簡潔な MCP サーバーとクライアントの実装例です。MCP の基本コンポーネントと、クライアントとサーバーの連携方法を学びたい開発者に適しています。

主な機能

  1. 01MCP サーバーの実装例
  2. 02シンプルなコマンドラインクライアント
  3. 03ベクトルデータベースを検索するツール
  4. 04コンテキストを提供するリソースの選択
  5. 05分析ワークフロー向けのプロンプトテンプレート

活用シーン

  1. 01MCP サーバーの基本コンポーネントの学習
  2. 02ChromaDB を使ったナレッジベース型チャットボットの構築例
  3. 03クライアントとサーバーの連携パターンの理解

MCP 対応

本プロジェクトは MCP サーバー(mcp_server.py)とコマンドラインクライアント(client.py)を含み、サーバーは Tools、Resources、Prompts の 3 種類の機能を公開します。

設定

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

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

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

リポジトリ

ツール

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

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

詳細

MCP サーバーとの LLM のやり取りを標準化する

Model Context Protocol(MCP)は、アプリケーションが LLM にコンテキストを提供する方法を標準化するオープンプロトコルです。つまり、LLM ベースのアプリケーションがデータソースに接続してコンテキストを取得し、ツールを使用し、標準化されたプロンプトを実行するための統一されたフレームワークを提供します。

README の画像

MCP エコシステムは、次の3つのコンポーネントで構成されます。

  • MCP サーバーは、ツールの利用可能性(使用できる関数の公開)、ツールの実行(要求された関数の実行)、リソースとしての静的コンテンツ(参照できるデータの提供)、プリセットプロンプト(一般的なタスク向けの標準化されたテンプレート)を担当します。

  • クライアントは、サーバーへの接続、LLM との統合、コンポーネント間のメッセージのやり取りを管理します。

  • ホストは、フロントエンドインターフェース、ユーザーへの MCP 機能の提示、エコシステム全体の統合ポイントを提供します。

このアーキテクチャにより、相互運用性を維持しながら、異なるコンポーネントを独立して開発できるモジュール型システムが実現します。これにより、ユーザーはさまざまな LLM 関連機能向けの MCP サーバーを作成し、対応する多様なアプリケーションに自由に組み込めます。一般的には、サービス API やツールの統合、自分のマシン上にあるローカルデータソースへの接続に使用されます。

MCP サーバーのコンポーネント

MCP サーバーは、明確に定義されたインターフェースを通じて標準化された機能を公開することで、プロトコルの基盤を形成します。ホストやクライアントはプロトコル標準を使用してこれらのサーバーに接続できますが、ユーザーに機能をどのように提示するかは柔軟で、開発者に委ねられています。つまり、コマンドラインインターフェースやグラフィカルアプリケーションを通じて実装するか、大規模なシステムに組み込むかなど、実装とユーザー体験は開発者次第です。

このガイドでは、主な機能を備えた MCP サーバーのサンプルと、やり取りのパターンを示すシンプルなクライアントの実装について説明します。まずは、MCP サーバーの主なコンポーネントを見ていきましょう。

README の画像
ツール

ツールは、LLM がアクションを実行したり情報を取得したりするために呼び出せる関数です。各ツールは次の要素で定義されます。

{
  name: string;          // Unique identifier for the tool
  description?: string;  // Human-readable description
  inputSchema: {         // JSON Schema for the tool's parameters
    type: "object",
    properties: { ... }  // Tool-specific parameters
  }
}

ツールを使うと、LLM は外部システムとやり取りしたり、コードを実行したり、データベースにクエリを実行したり、計算を行ったりできます。ツールは、作用をもたらす操作や新しい情報を計算する操作を表します。

リソース

リソースは、クライアントアプリケーションがアクセスできるデータソースを表します。URI で識別され、次のものが含まれます。

{
  uri: string;           // Unique identifier for the resource
  name: string;          // Human-readable name
  description?: string;  // Optional description
  mimeType?: string;     // Optional MIME type
}

リソースには、設定ファイルのような静的なものと、データベースレコードや API レスポンスのような動的なものがあります。関数呼び出しを必要とせずに、LLM にコンテキストを提供します。

プロンプト

プロンプトは、特定のやり取りのパターンを定義する再利用可能なテンプレートです。サーバーは、標準化された会話の流れを公開できます。

{
  name: string;              // Unique identifier for the prompt
  description?: string;      // Human-readable description
  arguments?: [              // Optional list of arguments
    {
      name: string;          // Argument identifier
      description?: string;  // Argument description
      required?: boolean;    // Whether argument is required
    }
  ]
}

プロンプトを使うと、一般的なタスク向けに一貫性のある専用のやり取りを作成でき、スラッシュコマンドなどの UI 要素からユーザーが呼び出せるようになります。

注:ツールは LLM とのやり取り(関数呼び出しに類似)に特化して設計されていますが、プロンプトとリソースは MCP エコシステム内で異なる役割を果たします。プロンプトは通常、ユーザーが制御するテンプレートで、スラッシュコマンドなどの UI 要素から直接呼び出せます。リソースはアプリケーションが制御するデータソースで、LLM のコンテキストに含める前に、ユーザーが選択できる形で提示されることがあります。

詳細やその他の機能については、MCP の公式ドキュメントをご覧ください。


サンプルのセットアップ

この MCP サーバーでは、ツール、リソース、プロンプトについて説明します。基本的なコンセプトは、次の機能を備えたシンプルなナレッジベースチャットボットのフローを作成することです。

  1. LLM がツールを使ってベクトルデータベースに問い合わせ、RAG の応答を生成できるようにする
  2. ユーザーが既存のリソースを選択してコンテキストとして提供できるようにする
  3. ユーザーが標準的なプロンプトを実行して、より複雑な分析ワークフローを実施できるようにする
README の画像

上の図は、mcp_server.py で実装されており、対応するシンプルな CLI クライアントは client.py にあります。

参考情報として、公式の統合機能やコミュニティ製のサーバーについては、MCP のサーバー一覧をご覧ください。


セットアップとインストール

  1. リポジトリをクローンする
git clone https://github.com/ALucek/quick-mcp-example.git
cd quick-mcp-example
  1. ChromaDB データベースを作成する

M C P _ s e t u p . i p y n b の手順に従って、ベクトルデータベースを作成し、PDF を埋め込んでください。

  1. 仮想環境を作成してパッケージをインストールする
# Using uv (recommended)
uv venv
source .venv/bin/activate  # On macOS/Linux
# OR
.venv\Scripts\activate     # On Windows

# Install dependencies
uv sync
  1. クライアントとサーバーを実行する
python client.py mcp_server.py

コメント

MCP は初めてですか?

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

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