mcpField
M
mcp-server-proxy

mcp-server-proxy

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

mcp-server-proxy について

mcp-server-proxyは、MCPのSSEトランスポートを標準的なHTTPリクエスト/レスポンスに変換します。SSEの詳細を実装せずに、MCPクライアントをHTTPベースのサーバー実装へ接続したい開発者や、通信内容を調べたい開発者向けです。

主な機能

  1. 01MCP SSEとHTTPリクエストの中継
  2. 02リクエストとレスポンスの内容確認
  3. 03initialize、tools/list、tools/callに対応
  4. 04inspectとserveコマンド

活用シーン

  1. 01MCPクライアントからHTTP実装へ接続
  2. 02MCPクライアントとサーバー間の通信を調査
  3. 03対応する3つのMCPメソッドをテスト

MCP 対応

SSEを使うMCPクライアントと、標準的なHTTPリクエスト/レスポンスで処理するサーバーの間でプロキシとして動作します。現在、`initialize`、`tools/list`、`tools/call`に対応しています。

設定

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

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

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

リポジトリ

ツール

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

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

詳細

mcp-server-proxy

MCP プロトコルの SSE トランスポート層を標準的な HTTP リクエスト/レスポンスに変換するプロキシサーバーです。MCP サーバーの開発と利用を簡素化します。

このツールが必要な理由

MCP(Model Context Protocol)は、AI アプリケーションに標準化されたデータソースとツールの統合方法を提供するオープンプロトコルです。現在、MCP は主に次の 2 種類のトランスポートプロトコルをサポートしています。

  1. Stdio トランスポートプロトコル:

    • 😫 ユーザーのローカル環境にコマンドラインツールをインストールする必要があり、実行環境に特定の要件があります
    • 😫 ユーザーは環境を適切に設定する必要があります
  2. SSE(Server-Sent Events)トランスポートプロトコル:

    • 👍 HTTP の長時間接続に基づいているため、ユーザーの設定は比較的簡単で、主にサービスアドレスを設定するだけです
    • 😫 現時点では、関連する開発ツールやサンプルが比較的少ないです

このツールは、次の方法で MCP サーバーの開発と利用を簡素化します。

  1. SSE トランスポートプロトコルを使用して MCP クライアントと通信するため、ユーザーはサービスアドレスを設定するだけで利用できます
  2. MCP ツールの呼び出しを標準的な HTTP リクエスト/レスポンスに変換するため、開発者は SSE プロトコルの詳細を気にせず、任意のプログラミング言語で実装できます

機能

  • MCP プロトコルの SSE トランスポート層を標準的な HTTP リクエスト/レスポンスに変換できます
  • リクエストとレスポンスを検査する機能を備えています。主に MCP クライアントとサーバーのやり取りを調査するために使用します
  • 現在、initialize、tools/list、tools/call の 3 つのメソッドをサポートしています

インストール

go install github.com/leizongmin/mcp-server-proxy@latest

使い方

このツールには、主に 2 つのコマンドがあります。

1. inspect コマンド

リクエストとレスポンスの内容を検査するために使用します。主に MCP クライアントとサーバーのやり取りを調査するために使用します。

mcp-server-proxy inspect <local_url> <target_url>

例:

mcp-server-proxy inspect http://localhost:8080 http://example.com
2. serve コマンド

プロキシサーバーを起動し、MCP クライアントからの呼び出しを標準的な HTTP リクエスト/レスポンスに変換します。

mcp-server-proxy serve <local_url> <target_url>

例:

mcp-server-proxy serve http://localhost:8080 http://example.com

サンプル

プロジェクトには JavaScript のサンプル(example/js-echo ディレクトリ内)が含まれています。シンプルな echo 機能を実装しており、MCP 関連の SDK に依存せず、いくつかの簡単な HTTP リクエストを処理するだけで動作します。

  1. サンプルディレクトリに移動します。
cd example/js-echo

このサンプルは Hono フレームワークを使用して実装されています。主なコードは次のとおりです。

import { Hono } from "hono";
import { logger } from "hono/logger";

const app = new Hono();
app.use("*", logger());

app.post("/initialize", async (c) => {
  const sessionId = c.req.query("sessionId");
  const params = await c.req.json();
  console.log("initialize: sessionId=%s, params=%j", sessionId, params);
  return c.json({
    protocolVersion: "2024-11-05",
    capabilities: {
      tools: {},
    },
    serverInfo: { name: "example-mcp-server", version: "1.0.0" },
  });
});

app.post("/tools/list", async (c) => {
  const sessionId = c.req.query("sessionId");
  const params = await c.req.json();
  console.log("tools/list: sessionId=%s, params=%j", sessionId, params);
  return c.json({
    tools: [
      {
        name: "echo",
        description: "Echoes 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#",
        },
      },
    ],
  });
});

app.post("/tools/call/:name", async (c) => {
  const sessionId = c.req.query("sessionId");
  const name = c.req.param("name");
  const params = await c.req.json();
  console.log(
    "tools/call: sessionId=%s, name=%s, params=%j",
    sessionId,
    name,
    params
  );
  return c.json({
    content: [
      { type: "text", text: `SESSION ID: ${sessionId}` },
      { type: "text", text: `ECHO: ${params.arguments?.message}` },
    ],
  });
});

export default app;
  1. 依存関係をインストールします。
npm install
  1. サーバーを起動します。
node server.js
  1. プロキシサーバーを起動します。
# 代理服务器监听 http://localhost:3002
# 代理服务器将请求转发到 http://localhost:3001
mcp-server-proxy serve http://localhost:3002 http://localhost:3001
  1. MCP クライアントを設定します。
  • 種類:sse
  • サーバー URL:http://localhost:3002/sse
  1. ツールを呼び出します。

Cursor を例にすると、echo message "hello"という内容を送信すると、echo ツールを呼び出す必要があると認識されます。このとき【Call Tool】ボタンが表示されるので、クリックして確定するとツールの呼び出し結果を確認できます。

cursor-call-echo-tool

ライセンス

MIT

貢献

問題や Pull Request の提出を歓迎します!

コメント

MCP は初めてですか?

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

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