test-my-mcpserver

  • Linux
  • Apple

Integrations

  • Enables querying a vector database for RAG (Retrieval Augmented Generation) responses, allowing the LLM to retrieve information from stored knowledge base documents.

  • Implements tools for executing code and performing calculations, allowing the LLM to run Python functions to retrieve or process information.

LLM と MCP サーバーとの相互作用の標準化

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

MCP エコシステムは、次の 3 つの特定のコンポーネントを概説します。

  • MCP サーバーは、ツールの可用性 (利用可能な機能の公開)、ツールの実行 (要求されたときにそれらの機能を実行する)、リソースとしての静的コンテンツ (参照可能なデータの提供)、プリセット プロンプト (一般的なタスクの標準化されたテンプレート) を処理します。
  • クライアントは、サーバーへの接続、LLM統合、コンポーネント間のメッセージ受け渡しを管理します。
  • ホストは、フロントエンド インターフェース、MCP 機能のユーザーへの表示、エコシステム全体の統合ポイントを提供します。

このアーキテクチャは、相互運用性を維持しながら、異なるコンポーネントを独立して開発できるモジュール式システムを構築します。これにより、ユーザーはLLM関連の様々な機能に対応するMCPサーバーを作成し、サポートされている様々なアプリケーション間でプラグアンドプレイで利用できるようになります。一般的には、サービスAPIやツールの統合、または自身のマシン上のローカルデータソースへの接続に使用されます。

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

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

このガイドでは、コア機能を備えたサンプルMCPサーバーの構築と、インタラクションパターンを示すためのシンプルなクライアント実装に焦点を当てます。まずは、MCPサーバーの主要コンポーネントを見ていきましょう。

ツール

ツールとは、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. より複雑な分析ワークフローのために、ユーザーが標準プロンプトを実行できるようにする

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

便利なリソースとして、公式統合およびコミュニティ作成サーバーについては、 MCP のサーバー リストを確認してください。


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

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

MCP_setup.ipynbの指示に従ってベクター データベースを作成し、そこに 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
-
security - not tested
F
license - not found
-
quality - not tested

テスト

  1. MCP Server Components
    1. Tools
    2. Resources
    3. Prompts
  2. Setting Up Our Example
    1. Setup and Installation
      ID: gjpoubbada