mcpField
M
MCP Access Point

MCP Access Point

ローカル
deepwiki.com開発ツール18533 週間前に更新

MCP Access Point について

MCP Access Point は Pingora を基盤とする軽量なゲートウェイで、コードを変更せずに既存の HTTP サービスを MCP クライアントから利用できるようにします。HTTP 基盤を活用しながら段階的に MCP へ移行したいチームに向いています。

主な機能

  1. 01HTTP サービスから MCP サービスへの変換
  2. 02SSE と Streamable HTTP のトランスポート対応
  3. 03OpenAPI 仕様に基づくサービス設定
  4. 04サービスごとのマルチテナント対応エンドポイント
  5. 05Admin API によるランタイム設定管理

活用シーン

  1. 01Cursor などのクライアントから既存の HTTP マイクロサービスを呼び出す
  2. 02HTTP 構成から MCP へ段階的に移行する
  3. 031 つのゲートウェイで SSE と Streamable HTTP のアクセスを提供する

MCP 対応

本プロジェクトは MCP ゲートウェイとして、バックエンドの HTTP サービスを MCP サービスに変換し、/sse や /mcp などのエンドポイントを MCP クライアントに公開します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"access-point": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/inspector"
]
}
}
}
起動コマンドnpx -y @modelcontextprotocol/inspector

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@modelcontextprotocol/inspector

ツール

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

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

詳細

MCP Access Point

MCP Access Point は、従来の HTTP サービスと MCP(Model Context Protocol)クライアントの間に通信ブリッジを構築するために設計された、軽量なプロトコル変換ゲートウェイツールです。サーバー側のインターフェースを変更することなく、MCP クライアントが既存の HTTP サービスと直接やり取りできるようにします。

README in English 简体中文版 Ask DeepWiki 中文文档

管理ダッシュボード

はじめに

このプロジェクトは Pingora を基盤としています。Pingora は、大規模なリクエストプロキシサービスに対応できる、超高性能なゲートウェイプロキシライブラリです。Pingora は、Cloudflare プラットフォームの中核トラフィックを処理するサービスの構築に使用されており、長年にわたりインターネット全体で毎秒 4,000 万件を超えるリクエストを安定して処理しています。Cloudflare プラットフォームのトラフィックの大部分を支える技術的基盤となっています。

HTTP から MCP への変換

このモードでは、Cursor Desktop のようなクライアントが、サーバー自体が SSE プロトコルに対応していない場合でも、SSE を介してリモート HTTP サーバーと通信できます。

  • 設定例には、次の 2 つのサービスが含まれます。
    • サービス 1 はローカルの 127.0.0.1:8090 で稼働します。
    • サービス 2 はリモートの api.example.com で稼働します。
  • MCP Access Point を介して、コードを変更することなく、両方のサービスを MCP サービスに変換できます。
  • クライアントは MCP プロトコルを介して Service 1 および Service 2 と通信します。MCP Access Point は MCP リクエストを自動的に判別し、適切なバックエンドサービスに転送します。
graph LR
   A["Cursor Desktop"] <--> |SSE| B["MCP Access Point"]
   A2["Other Desktop"] <--> |Streamable Http| B["MCP Access Point"]
   B <--> |http 127.0.0.1:8090| C1["Existing API Server"]
   B <--> |https//api.example.com| C2["Existing API Server"]
  
   style A2 fill:#ffe6f9,stroke:#333,color:black,stroke-width:2px
   style A fill:#ffe6f9,stroke:#333,color:black,stroke-width:2px
   style B fill:#e6e6af,stroke:#333,color:black,stroke-width:2px
   style C1 fill:#e6ffe6,stroke:#333,color:black,stroke-width:2px
   style C2 fill:#e6ffd6,stroke:#333,color:black,stroke-width:2px
トランスポートタイプ(仕様)

現在、SSE と Streamable HTTP のプロトコルに対応しています。

  • ✅ Streamable HTTP(ステートレス)2025-03-26

    • すべてのサービス:ip:port/mcp
    • 単一サービス:ip:port/api/{service_id}/mcp
  • ✅ SSE 2024-11-05

    • すべてのサービス:ip:port/sse
    • 単一サービス:ip:port/api/{service_id}/sse

SSE には IP:PORT/sse を使用します。
Streamable HTTP には IP:PORT/mcp を使用します。

対応 MCP クライアント

主な機能

  • プロトコル変換:HTTP プロトコルと MCP プロトコルをシームレスに変換
  • 既存サービスへの影響なし:既存の HTTP サービスと完全な互換性を実現
  • クライアントの活用:MCP クライアントが標準的な HTTP サービスを直接呼び出せるようにします
  • 軽量プロキシ:効率的なプロトコル変換を実現するシンプルなアーキテクチャ
  • マルチテナンシー:テナントごとに独立した設定とエンドポイントを提供
  • 実行時設定管理:サービスを再起動せずに設定を動的に更新
  • 管理 API:リアルタイムの設定管理に対応する RESTful API

クイックスタート

インストール
# Install from source
git clone https://github.com/sxhxliang/mcp-access-point.git
cd mcp-access-point
cargo run -- -c config.yaml

# Use inspector for debugging (start service first)
npx @modelcontextprotocol/inspector node build/index.js
# Access http://127.0.0.1:6274/
# Select "SSE" and enter 0.0.0.0:8080/sse, then click connect
# or select "Streamable HTTP" and enter 0.0.0.0:8080/mcp
マルチテナンシーのサポート

MCP Access Gateway はマルチテナンシーに対応しており、各テナントは次のエンドポイントからアクセスできる複数の MCP サービスを設定できます。

  • /api/{mcp-service-id}/sse(SSE 用)
  • /api/{mcp-service-id}/mcp(Streamable HTTP 用)

設定例:

# config.yaml example (supports multiple services)

mcps:
  - id: service-1 # Access via /api/service-1/sse or /api/service-1/mcp
    ... # Service configuration
  - id: service-2 # Access via /api/service-2/sse or /api/service-2/mcp
    ... # Service configuration
  - id: service-3 # Access via /api/service-3/sse or /api/service-3/mcp
    ... # Service configuration

すべてのサービスに同時にアクセスするには、次を使用します。

  • 0.0.0.0:8080/mcp(Streamable HTTP)
  • 0.0.0.0:8080/sse(SSE)
設定の詳細
  1. -c config.yaml
    • -c(または --config)で、設定ファイルのパス(config.yaml)を指定します。
    • このファイルでは、MCP Access Point がプロキシして変換する API を定義します。
config.yaml の例

設定ファイルではマルチテナントに対応しており、各 MCP サービスの上流サービスとルーティングルールを個別に設定できます。主な設定項目は次のとおりです。

  1. mcps - MCP サービスの一覧

    • id:アクセスパスの生成に使用する一意のサービス識別子
    • upstream_id:関連付けられた上流サービス ID
    • path:OpenAPI 仕様ファイルのパス。ローカルファイル(例:config/openapi.json)とリモート HTTP/HTTPS URL(例:https://petstore.swagger.io/v2/swagger.json)に対応しています。JSON 形式と YAML 形式の両方をサポートしています。
    • routes:カスタムルーティング設定(任意)
    • upstream:上流サービス固有の設定(任意)
  2. upstreams - 上流サービスの設定

    • id:上流サービス ID
    • nodes:バックエンドノードのアドレスと重み
    • type:負荷分散アルゴリズム(roundrobin/random/ip_hash)
    • scheme:上流プロトコル(http/https)
    • pass_host:HTTP Host ヘッダーの処理方法
    • upstream_host:Host ヘッダー値の上書き

設定の完全な例:

# config.yaml example (supports multiple services)
mcps:
  - id: service-1 # Unique identifier, accessible via /api/service-1/sse or /api/service-1/mcp
    upstream_id: 1
    path: config/openapi_for_demo_patch1.json # Local OpenAPI spec path

  - id: service-2 # Unique identifier
    upstream_id: 2
    path: https://petstore.swagger.io/v2/swagger.json # Remote OpenAPI spec

  - id: service-3 
    upstream_id: 3
    routes: # Custom routing
      - id: 1
        operation_id: get_weather
        uri: /points/{latitude},{longitude}
        method: GET
        meta:
          name: Get Weather
          description: Retrieve weather information by coordinates
          inputSchema: # Optional input validation
            type: object
            required:
              - latitude
              - longitude
            properties:
              latitude:
                type: number
                minimum: -90
                maximum: 90
              longitude:
                type: number
                minimum: -180
                maximum: 180

upstreams: # Required upstream configuration
  - id: 1
    headers: # Headers to send to upstream service
      X-API-Key: "12345-abcdef"        # API key
      Authorization: "Bearer token123" # Bearer token
      User-Agent: "MyApp/1.0"          # User agent
      Accept: "application/json"       # Accept header
    nodes: # Backend nodes (IP or domain)
      "127.0.0.1:8090": 1 # Format: address:weight

  - id: 2 
    nodes:
      "127.0.0.1:8091": 1

  - id: 3 
    nodes:
      "api.weather.gov": 1
    type: roundrobin # Load balancing algorithm
    scheme: https # Protocol
    pass_host: rewrite # Host header handling
    upstream_host: api.weather.gov # Override Host

設定ファイルを指定して MCP Access Gateway を実行するには:

cargo run -- -c config.yaml

Docker で実行する

クイックスタートとしてローカルで実行する
# Note: Replace /path/to/your/config.yaml with actual path
docker run -d --name mcp-access-point --rm \
  -p 8080:8080 \
  -e port=8080 \
  -v /path/to/your/config.yaml:/app/config/config.yaml \
  ghcr.io/sxhxliang/mcp-access-point:main
Docker イメージをビルドする(任意)
  • Docker をインストールする
  • リポジトリをクローンしてイメージをビルドする
# Clone repository
git clone https://github.com/sxhxliang/mcp-access-point.git
cd mcp-access-point

# Build image
docker build -t liangshihua/mcp-access-point:latest .
  • Docker コンテナを実行する
# Using environment variables (service running on host)
# Note: Replace /path/to/your/config.yaml with actual path

docker run -d --name mcp-access-point --rm \
  -p 8080:8080 \
  -e port=8080 \
  -v /path/to/your/config.yaml:/app/config/config.yaml \
  liangshihua/mcp-access-point:latest
環境変数
  • port:MCP Access Point のリスニングポート(デフォルト:8080)

典型的なユースケース

  • 段階的なアーキテクチャ移行:HTTP から MCP への段階的な移行を促進します
  • ハイブリッドアーキテクチャのサポート:既存の HTTP インフラストラクチャを MCP エコシステム内で再利用します
  • プロトコルの互換性:両方のプロトコルをサポートするハイブリッドシステムを構築します

シナリオの例: MCP ベースの AI クライアントがレガシーな HTTP マイクロサービスと連携する必要がある場合、MCP Access Gateway はミドルウェア層として機能し、シームレスなプロトコル変換を実現します。

実践的な例を含む記事を執筆してくださった @limcheekin に心より感謝します:https://limcheekin.medium.com/building-your-first-no-code-mcp-server-the-fabric-integration-story-90da58cdbe1f

実行時の設定管理

MCP Access Point は RESTful Admin API による動的な設定管理に対応しました。サービスを再起動せずに設定を更新できます。

Admin API の機能
  • リアルタイムの設定更新:上流サービス、サービス、ルート、その他のリソースをオンザフライで変更できます
  • 依存関係の検証:変更前にリソースの依存関係を自動的に検証します
  • 一括操作:複数の設定変更をアトミックに実行します
  • 設定の検証:適用前に変更を検証するドライランモード
  • リソース統計:設定の状態を監視および追跡します
Admin API の設定

Admin API を有効にするには、config.yaml に次の内容を追加します。

access_point:
  admin:
    address: "127.0.0.1:8081"  # Admin API listening address
    api_key: "your-api-key"    # Optional API key for authentication
Admin API エンドポイント
リソース管理
  • GET /admin/resources - リソースの概要と統計を取得する
  • GET /admin/resources/{type} - 指定した種類のすべてのリソースを一覧表示する
  • GET /admin/resources/{type}/{id} - 特定のリソースを取得する
  • POST /admin/resources/{type}/{id} - 新しいリソースを作成する
  • PUT /admin/resources/{type}/{id} - 既存のリソースを更新する
  • DELETE /admin/resources/{type}/{id} - リソースを削除する
高度な操作
  • POST /admin/validate/{type}/{id} - リソース設定を検証する
  • POST /admin/batch - 一括操作を実行する
  • POST /admin/reload/{type} - 指定した種類のリソースを再読み込みする
  • POST /admin/reload/config - ファイルから設定全体を再読み込みする(デフォルトは config.yaml)。任意の JSON ボディ:{ "config_path": "path/to/config.yaml" }
サポートされるリソースの種類
  • upstreams - バックエンドサーバーの設定
  • services - サービス定義
  • routes - ルーティングルール
  • global_rules - グローバルプラグインルール
  • mcp_services - MCP サービスの設定
  • ssls - SSL 証明書の設定
Admin API の例
新しいアップストリームを作成する
curl -X POST http://localhost:8081/admin/resources/upstreams/my-upstream \
  -H "Content-Type: application/json" \
  -d '{
    "id": "my-upstream",
    "type": "RoundRobin",
    "nodes": ["127.0.0.1:8001", "127.0.0.1:8002"],
    "timeout": {
      "connect": 5,
      "read": 10,
      "send": 10
    }
  }'
サービスを作成する
curl -X POST http://localhost:8081/admin/resources/services/my-service \
  -H "Content-Type: application/json" \
  -d '{
    "id": "my-service",
    "upstream_id": "my-upstream",
    "hosts": ["api.example.com"]
  }'
一括操作
curl -X POST http://localhost:8081/admin/batch \
  -H "Content-Type: application/json" \
  -d '{
    "dry_run": false,
    "operations": [
      {
        "operation_type": "create",
        "resource_type": "upstreams",
        "resource_id": "batch-upstream",
        "data": {
          "id": "batch-upstream",
          "type": "Random",
          "nodes": ["192.168.1.10:8080"]
        }
      },
      {
        "operation_type": "create",
        "resource_type": "services",
        "resource_id": "batch-service",
        "data": {
          "id": "batch-service",
          "upstream_id": "batch-upstream"
        }
      }
    ]
  }'
リソースの統計情報を取得する
curl http://localhost:8081/admin/resources
Admin Dashboard UI
  • ルート:GET /admin は組み込みダッシュボード(static/admin_dashboard.html)を提供します。
    1. mcp_services、2) ssls、3) global_rules、4) routes、5) upstreams、6) services。
  • 各カードには、API レスポンスから取得した count と、書式設定された last_updated が表示されます。
ファイルから設定を再読み込みする
# Uses default config.yaml
curl -X POST http://localhost:8081/admin/reload/config \
  -H "Content-Type: application/json" \
  -H "x-api-key: your-api-key"

# Or specify a different config path
curl -X POST http://localhost:8081/admin/reload/config \
  -H "Content-Type: application/json" \
  -H "x-api-key: your-api-key" \
  -d '{"config_path": "./config.yaml"}'
Admin API のテスト

提供されているテストスクリプトを使用して、Admin API の機能を確認してください。

# Make the test script executable
chmod +x test-admin-api.sh

# Run comprehensive API tests
./test-admin-api.sh

Admin API の詳細なドキュメントについては、RUNTIME_CONFIG_API.md を参照してください。

コントリビューションガイドライン

  1. このリポジトリをフォークします。
  2. ブランチを作成し、変更をコミットします。
  3. プルリクエストを作成し、マージされるまで待ちます。
  4. コードが Rust のコーディング規約に従っていることを確認してください。

コメント

MCP は初めてですか?

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

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