mcpField
M
Model Context Protocol (MCP) Implementation

Model Context Protocol (MCP) Implementation

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

Model Context Protocol (MCP) Implementation について

Model Context Protocol (MCP) Implementationは、MCPサーバーとクライアントの学習・構築に使えるモジュール型フレームワークです。プロトコル処理、stdioとHTTP+SSEのトランスポート、テスト用の計算機サンプルを備えています。

主な機能

  1. 01JSON-RPC 2.0とプロトコル初期化
  2. 02ケイパビリティ交渉とツール登録
  3. 03JSON Schema検証とエラー処理
  4. 04STDIOとHTTP+SSEのトランスポート
  5. 05サーバー、クライアント、計算機のサンプル
  6. 06テストクライアントとMCP Inspectorによるデバッグ

活用シーン

  1. 01動作する実装を通じたMCPの学習
  2. 02独自ツールを備えたMCPサーバーの構築
  3. 03両トランスポートでのクライアント・サーバー通信のテスト

MCP 対応

ツールの検出と呼び出し、標準化された結果、エラー処理を含むMCPサーバーとクライアントのコンポーネントを実装しています。STDIOとHTTP+SSEのトランスポートに対応します。

設定

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

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

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

リポジトリ

ツール

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

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

詳細

Model Context Protocol(MCP)の実装

このプロジェクトは、AI ツールを構築するための Model Context Protocol(MCP) を実装しています。MCP 互換のサーバーやクライアントを作成するために使用できる、モジュール式のフレームワークを提供します。


🔍 Model Context Protocol(MCP)とは?

Model Context Protocol(MCP)は、AI アシスタントが外部のツールやデータソースとやり取りできるようにするオープンプロトコルです。

主な機能
  • 利用可能なツールとその機能を一覧表示する
  • パラメーターを指定してツールを呼び出す
  • 一貫した方法でエラーを処理する
  • 標準化された形式でツールの結果を処理する

📚 詳細については、MCP Notes をご覧ください。


✨ 機能

カテゴリー機能
コア✅ JSON-RPC 2.0 メッセージ処理
✅ プロトコルの初期化
✅ ケイパビリティのネゴシエーション
ツール✅ JSON Schema によるツールの登録
✅ ツールの呼び出しと検証
✅ 標準化されたエラー処理
トランスポート✅ STDIO のサポート
✅ HTTP+SSE のサポート
テスト✅ テスト用クライアント

📁 プロジェクト構成

src/
├── core/           # Core MCP server implementation
├── transports/     # Transport layer implementations (stdio, HTTP+SSE)
├── tools/          # Tool definitions and handlers
├── examples/       # Example servers and clients
│   └── public/     # Static files for HTTP server
└── index.js        # Main entry point for the library

🚀 はじめに

前提条件
  • Node.js 20.x 以降
  • npm または pnpm
インストール
# Clone the repository
git clone https://github.com/AshikNesin/learn-mcp-by-building
cd learn-mcp-by-building

# Install dependencies
npm install
# or
pnpm install

🏃‍♂️ サンプルの実行

STDIO サーバーとクライアント

STDIO サーバーを実行します:

npm run server:stdio
# or
node src/examples/stdio-server.js

STDIO クライアントでテストします:

npm run client:stdio
# or
node src/examples/stdio-client.js

両方を一緒に実行して、一連のテストを確認します:

npm run test:stdio
# or
node src/examples/stdio-client.js | node src/examples/stdio-server.js
HTTP+SSE サーバーとクライアント

HTTP+SSE サーバーを実行します:

npm run server:sse
# or
node src/examples/http-sse-server.js --port 5000

利用可能なオプション:

  • --port:リッスンするポート(デフォルト:5000)
  • --host:バインドするホスト(デフォルト:localhost)
  • --path:エンドポイントのパス(デフォルト:/sse)
  • --cors:CORS を有効にする(デフォルト:true)
  • --serve-static:src/examples/public から静的ファイルを配信する(デフォルト:true)

HTTP+SSE クライアントでテストします:

npm run client:sse
# or
node src/examples/http-sse-client.js --server http://localhost:5000/sse

起動すると、ブラウザーで http://localhost:5000 にアクセスして、ウェブベースのクライアントインターフェースを利用することもできます:

SSE クライアントインターフェース

このインターフェースでは、使いやすい方法で MCP サーバーとやり取りできます。電卓のコントロールとリアルタイムログが横並びに表示されます。

🔍 MCP Inspector の使用

公式の MCP Inspector を使って、サーバーをデバッグできます:

npm run debug

MCP Inspector は、MCP サーバーの監視とデバッグを行うためのビジュアルインターフェースを提供します:

MCP Inspector


🧮 電卓ツール

操作

  • ➕ 加算
  • ➖ 減算
  • ✖️ 乗算
  • ➗ 除算

パラメーター

  • operation - 操作の種類
  • a - 第 1 オペランド
  • b - 第 2 オペランド

エラー処理

  • ゼロ除算
  • 無効な操作
  • 型の検証
  • パラメーターの不足

🧑‍💻 MCP フレームワークでの開発

新しいサーバーの作成
import { McpServer } from '../core/index.js';
import { StdioTransport } from '../transports/index.js';
import { calculatorToolDefinition, handleCalculatorTool } from '../tools/index.js';

// Create server instance
const server = new McpServer(
  { name: 'my-server', version: '1.0.0' },
  { capabilities: { tools: { listChanged: true } } }
);

// Register tool handlers
server.setRequestHandler('tools/list', () => ({ tools: [calculatorToolDefinition] }));
server.setRequestHandler('tools/call', async (params) => {
  if (params.name === 'calculator') {
    return handleCalculatorTool(params.arguments);
  }
  throw new Error(`Tool ${params.name} not found`);
});

// Start the server
const transport = new StdioTransport();
server.connect(transport)
  .then(() => console.error('Server ready!'));
新しいツールの作成
  1. src/tools/ に新しいファイルを作成します:
// src/tools/my-tool.js
export const myToolDefinition = {
  name: 'my-tool',
  description: 'Description of my tool',
  inputSchema: {
    type: 'object',
    properties: {
      // Define parameters
    },
    required: []
  }
};

export async function handleMyTool(args) {
  // Implement tool logic
  return {
    content: [
      {
        type: 'text',
        text: 'Result from my tool'
      }
    ]
  };
}
  1. src/tools/index.js でツールをエクスポートします:
export * from './my-tool.js';

🛠️ プロトコルの機能

  • ✅ ケイパビリティのネゴシエーション
  • ✅ ツールリストの変更通知
  • ✅ 標準化されたエラー処理
  • ✅ JSON Schema による検証
  • ✅ 構造化されたツールの結果
  • ✅ トランスポート層の抽象化

📚 外部リソース


📝 ライセンス

MIT

コメント

MCP は初めてですか?

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

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