MCP 协议中台
慧策 · MCP プロトコルミドルウェア
一言で:MCP プロトコル基盤一式——プロダクションラインがデータソースと Tool をセルフ登録し、下流の Agent が標準 MCP プロトコルを通じて検出・呼び出しを行う。プラットフォームは「プロトコルパイプライン」であり、業務ロジックは一切保持しない。
目次
位置づけと境界
なぜ MCP プロトコルミドルウェアなのか?
会社には複数のプロダクションライン(越境 ERP、国内 EC、倉庫 WMS、財務決済……)があり、各プロダクションラインにデータ照会ニーズがある。プロダクションラインを接続するたびに MCP Server をフォークして Tool 実装を変更していたら、「プロダクションラインを接続するたびにコードを変更する」というジレンマに陥る。
中核的な考え方:MCP プロトコル実装とツールディスパッチフレームワークのみを担当するインフラを構築する。プラットフォームがプロトコル契約を定義し、プロダクションラインが契約に従ってセルフ接続する。
プラットフォームが行うこと・行わないこと
┌─────────── 本平台范围 ───────────┐
│ │
AI Agent ──MCP──→ │ MCP Protocol Tool Registry │ ←── API 契约 ←── 产线
│ Auth / Rate Cache / Degrade │
│ Adapter Framework │
│ Admin Console Observability │
│ │
└────────────┬─────────────────────┘
│ Data Source Adapter SPI
▼
┌──────────────────────────────────────┐
│ 产线数据源(产线自管) │
│ MySQL / Doris / StarRocks / HTTP API │
│ Redis / ES / ... │
└──────────────────────────────────────┘✅ In Scope | ❌ Out of Scope |
MCP プロトコル完全実装(Spring AI MCP Server 1.1.2 ベース) | 個別 Tool の SQL/API ロジック(プロダクションライン側) |
Tool レジストリ(CRUD + バージョン管理 + ホットロード) | ETL パイプライン / ワイドテーブル構築 / データクレンジング |
データソースアダプタフレームワーク(MySQL/PG/Doris/HTTP/Redis) | 上流 API 連携(ERP、BI、サードパーティ) |
ミドルウェアパイプライン(認証/レート制限/キャッシュ/フォールバック/ログ/監視) | 業務計算式 / アルゴリズム / ルール |
管理コンソール(データソース管理 + Tool 管理 + 監視ダッシュボード) | OAuth2.0 / RBAC / マルチテナント(Phase 2) |
プロダクションライン SDK(Java + Python) | プロダクションライン接続支援 / Tool 開発 |
重要な設計原則:プラットフォームは業務を理解しない。Tool は MySQL 内の 1 件の設定レコード(名前 + JSON Schema + データソース参照 + クエリテンプレート)に過ぎない。Tool の名前、SQL の書き方、キャッシュ TTL の設定はプロダクションラインが決定する。
中核コンセプト:MCP とは
MCP(Model Context Protocol) は、AI Agent と外部ツール/データがやり取りするための標準プロトコルであり、Anthropic が公開したもの。USB-C に例えると:MCP 以前は、AI アプリケーションがデータソースに接続するたびにカスタムのグルーコードを書く必要があった。MCP があれば、Agent は統一された tools/list → tools/call プロトコルを通じてツールを検出・呼び出しできる。
flowchart LR
A["🤖 AI Agent<br/>Claude Desktop / LangChain / OpenAI"] -->|"tools/list<br/>tools/call<br/>JSON-RPC 2.0"| B["🔌 MCP 协议中台<br/>Spring AI MCP Server"]
B -->|"Adapter SPI"| C["🗄️ MySQL"]
B -->|"Adapter SPI"| D["🗄️ Doris"]
B -->|"Adapter SPI"| E["🌐 HTTP API"]
B -->|"Adapter SPI"| F["📦 Redis"]重要な設計原則:Agent は「意図」を管理し(ユーザーが何を求めているかを理解)、プラットフォームは「プロトコル」を管理し(MCP 実装 + Tool ルーティング + ミドルウェア)、プロダクションラインは「データ」を管理する(データソース登録 + SQL/設定の記述)。
アーキテクチャ概要
レイヤードアーキテクチャ
flowchart TB
subgraph Agent["AI Agent 层(外部)"]
Claude["Claude Desktop"]
LangChain["LangChain Client"]
OpenAI["OpenAI Agent SDK"]
end
subgraph Platform["MCP 协议中台(本平台)"]
direction TB
subgraph Protocol["MCP Protocol Layer"]
Handshake["initialize 握手<br/>协议版本协商 · 能力交换"]
JSONRPC["JSON-RPC 2.0 Router<br/>tools/list · tools/call · tools/schema<br/>resources/list · resources/read"]
Transport["Transport: HTTP SSE / Streamable HTTP"]
end
subgraph Middleware["Middleware Pipeline(Filter Chain)"]
direction LR
Auth["鉴权<br/>API Key + BCrypt"] --> RateLimit["限流<br/>Token Bucket"]
RateLimit --> Cache["缓存<br/>Caffeine L1 + Redis L2"]
Cache --> Degrade["降级<br/>4 级状态机"]
Degrade --> Log["日志·监控<br/>TraceId · Prometheus"]
end
subgraph Core["Tool Engine"]
Dispatcher["ToolDispatcher<br/>Tool 解析 · 路由"]
Registry["Tool Registry<br/>元数据管理 · 版本管理 · 热加载"]
Executor["Tool Executor<br/>参数校验 · 模板渲染<br/>结果映射 · 输出校验"]
end
subgraph Adapter["Data Source Adapter Framework"]
SPI["Adapter SPI<br/>接口契约 · 连接池 · 健康检查 · 查询护栏"]
Builtin["内置适配器<br/>MySQL · PostgreSQL · Doris · HTTP · Redis"]
end
subgraph Admin["Admin Console"]
ToolMgmt["Tool 管理"]
DSMgmt["数据源管理"]
Dashboard["监控大盘"]
Alarm["告警配置"]
end
end
subgraph Datasources["产线数据源(产线自管)"]
MySQL_DS["MySQL 产线 A"]
Doris_DS["Doris 产线 B"]
HTTP_API["HTTP API 产线 C"]
Redis_DS["Redis 产线 D"]
end
Agent -->|"MCP Protocol"| Handshake
Handshake --> JSONRPC
JSONRPC --> Auth
Middleware --> Dispatcher
Dispatcher --> Registry
Dispatcher --> Executor
Executor --> SPI
Admin --> Registry
Admin --> DSMgmt
SPI --> Builtin
Builtin --> Datasourcesレイヤー別責務
レイヤー | 中核責務 | 境界制約 |
MCP Protocol レイヤー |
| プロトコルレイヤーは Tool の出所やデータソースの種類を気にしない |
Middleware Pipeline | 認証 → レート制限 → キャッシュ → フォールバック → ログ監視、Filter Chain パターン、リクエストの必須経路 | 全設定駆動、プロダクションラインが Tool 設定でポリシーを選択 |
Tool Engine | ToolDispatcher がルーティングを解析、Tool Registry がメタデータ管理、Tool Executor がパラメータ検証+テンプレートレンダリング+結果マッピング | ToolDispatcher により Protocol と Registry を疎結合化 |
Adapter Framework | Adapter SPI インターフェース契約 + 5 種類の組み込みアダプタ + クエリガードレール(max_rows/timeout/DDL ブラックリスト) | プラットフォームはアダプションのみ行い、データ内容には関与しない |
Admin Console | データソース管理、Tool 登録管理、監視ダッシュボード、アラート設定(Vue 3 + Arco Design) | プロダクションライン管理者向けのセルフサービス操作 |
中核設計
Tool = メタデータ、コードではない
プラットフォームの視点から見ると、Tool は MySQL の 1 レコードに過ぎない。プロダクションラインは API またはコンソールを通じて Tool を登録する:
{
"id": "my_query_tool",
"name": "my_query_tool",
"description": "查询最近 N 条订单(给 LLM 看的描述)",
"parameters": {
"type": "object",
"properties": {
"limit": { "type": "integer", "default": 20, "maximum": 100 }
}
},
"datasource_id": "ds_my_line",
"query": {
"type": "SQL",
"template": "SELECT a, b, c FROM orders ORDER BY created_at DESC LIMIT {{.limit}}"
},
"cache": { "level": "BOTH", "l1_ttl_sec": 60, "l2_ttl_sec": 300 }
}プラットフォームが行うこと:パラメータの正当性検証 → テンプレートのレンダリング → Adapter 経由での実行 → 結果のマッピング → 返却。業務ロジックはすべてプロダクションラインが決定する。
データモデル(中核テーブル 6 件)
erDiagram
Datasource ||--o{ Tool : "绑定"
Tool ||--o{ ToolVersion : "版本"
Tool ||--o{ CachePolicy : "缓存策略"
Tool ||--o{ DegradePolicy : "降级策略"
Tool ||--o{ InvocationLog : "调用记录"
Datasource {
string id PK "ds_example"
string type "DORIS / MYSQL / PG / HTTP / REDIS"
json connection "主机·端口·库名·凭据引用"
json pool_config "连接池配置"
string status "ONLINE / OFFLINE / ERROR"
}
Tool {
string id PK "my_tool_001"
string name "对 Agent 可见的工具名"
string description "详细的工具描述给 LLM 看"
json parameters "JSON Schema — 输入参数定义"
string datasource_id FK "绑定数据源"
string query_template "SQL 或 HTTP URL 模板"
json result_mapping "字段映射"
json transform "字段级转换规则"
string status "DRAFT / ONLINE / OFFLINE"
}
InvocationLog {
bigint id PK
string tool_id FK
string trace_id "全链路追踪 ID"
int latency_ms "执行耗时"
boolean cache_hit "是否命中缓存"
int degrade_level "降级级别"
timestamp created_at "TTL 7 天"
}ミドルウェア機能(プラットフォームがプロダクションラインに「提供」するもの)
機能 | 説明 |
認証 | API Key + BCrypt、 |
レート制限 | Token Bucket、3 段階:グローバル / プロダクションライン / Tool |
キャッシュ | Caffeine L1(ローカル <1ms)+ Redis L2(分散共有)、TTL はプロダクションラインが設定可能 |
フォールバック | 4 段階の自動フォールバック:期限切れキャッシュ → ローカルキャッシュのみ → 静的デフォルト値 → 503 拒否 |
可観測性 | 自動計装:呼び出し量/成功率/P95/キャッシュヒット率/フォールバック回数、Prometheus + Grafana |
呼び出しログ |
|
3 種類の接続方式
方式 | 適用シーン | プロダクションラインの工数 |
SQL テンプレート | 単一テーブル照会、単純 JOIN、集計 | SQL 1 件 + フォーム入力 |
HTTP テンプレート | プロダクションライン既存 REST API の呼び出し | URL テンプレート入力 |
SDK プラグイン | 多段集約、複雑な計算 | Java/Python 50〜200 行 |
技術スタック
レイヤー | 選定 | バージョン | 理由 |
MCP プロトコル実装 | Spring AI MCP Server | 1.1.2 | 社内 Demo で検証済み、JSON-RPC Router + Transport + |
認証 |
| 0.0.5 | コミュニティライブラリ、Demo で検証済み。API Key + BCrypt |
基盤フレームワーク | Java 21 + Spring Boot | 3.4.7 | 社内 Java 技術スタック、社内 Demo とバージョン整合 |
管理コンソールフロントエンド | Vue 3 + Vite + Arco Design | — | 軽量、社内フロントエンドチームの技術スタック |
メタデータストレージ | MySQL 8.0 | — | Tool 設定、データソース設定、呼び出しログ |
キャッシュ | Caffeine (L1) + Redis 6.2 (L2) | — | L1 ローカル <1ms、L2 分散共有 |
監視 | Micrometer + Prometheus + Grafana | — | Spring Boot ネイティブ統合 |
設定センター | Nacos 2.x | — | 社内既存、認証情報 + 設定ストレージ |
デプロイ | Docker Compose(開発)+ K8s(本番) | — | 社内インフラと整合 |
基盤フレームワーク選定:Spring AI MCP Server 1.1.2 は MCP 2024-11-05 プロトコルを完全実装済み。本プラットフォームはプロトコルレイヤーを再実装せず、Spring AI の上で 3 つのことを行う:(1) 動的 Tool 登録(
@McpTool静的アノテーションの置き換え)、(2) データソースアダプションとテンプレート実行、(3) 汎用ミドルウェアパイプライン。
プロジェクト構成
intent_plan/
├── docs/
│ └── superpowers/
│ └── specs/
│ ├── 2026-07-16-mcp-platform-plan.md # MCP 协议中台建设计划(主文档)
│ └── 2026-07-16-cross-border-mcp-boundary-design.md # 产线协作契约
├── mcp-server/ # MCP Server 核心(Spring Boot)
│ └── src/main/java/com/wangdian/mcp/
│ ├── protocol/ # MCP 协议层(Spring AI 集成)
│ ├── registry/ # Tool 注册中心(动态注册 + 版本管理)
│ ├── executor/ # Tool 执行器(校验 + 模板 + 映射)
│ ├── adapter/ # 数据源适配框架(SPI + 内置适配器)
│ ├── middleware/ # 中间件管道(鉴权/限流/缓存/降级)
│ ├── admin/ # 管理控制台 API(/admin/*)
│ └── sdk/ # 产线 SDK(Java)
├── mcp-server-admin/ # 管理控制台前端(Vue 3 + Arco Design)
├── mcp-sdk-python/ # 产线 SDK(Python)
├── docker-compose.yml # 本地开发环境
└── README.mdクイックスタート
⚠️ プロジェクト開発中、以下は想定される起動フローです。
前提条件
JDK 21 + Maven 3.9+
Docker 20.10+ & Docker Compose 2.20+
社内ネットワークアクセス(Nacos / MySQL / Redis)
ローカル開発
# 1. 克隆项目
git clone <repo-url> && cd intent_plan
# 2. 启动开发环境中间件
docker compose up -d mysql redis nacos-standalone
# 3. 初始化数据库
# 执行 docs/superpowers/specs/ 下的 DDL 脚本
# 4. 启动 MCP Server
cd mcp-server
mvn spring-boot:run
# 5. 验证 MCP 协议
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}},"id":0}'サービスポート
サービス | ポート | 説明 |
MCP Server | 8080 | MCP JSON-RPC エンドポイント ( |
Admin Console | 8080 | 管理コンソール ( |
MySQL | 3306 | メタデータストレージ |
Redis | 6379 | L2 キャッシュ |
Nacos | 8848 | 設定センター / サービスディスカバリ |
プロダクションライン接続
プロダクションラインの接続は 3 ステップのみで、プラットフォーム開発の介入は不要です:
Step 1:データソースの登録
curl -X POST http://mcp-platform:8080/api/v1/datasources \
-H "Content-Type: application/json" \
-H "X-API-Key: <your_api_key>" \
-d '{
"id": "ds_my_line",
"type": "MYSQL",
"connection": {
"host": "10.x.x.x", "port": 3306, "database": "my_db",
"credential_ref": "nacos:my-line/db-pwd"
},
"pool_config": { "min": 2, "max": 10, "timeout_sec": 30 }
}'Step 2:Tool の登録
curl -X POST http://mcp-platform:8080/api/v1/tools \
-H "Content-Type: application/json" \
-H "X-API-Key: <your_api_key>" \
-d '{
"id": "my_query",
"name": "my_query",
"description": "查询我的订单数据",
"parameters": { "type": "object", "properties": { "limit": { "type": "integer" } } },
"datasource_id": "ds_my_line",
"query": { "type": "SQL", "template": "SELECT * FROM orders LIMIT {{.limit}}" }
}'Step 3:Agent による呼び出し
Tool 登録後 30 秒以内に全インスタンスで有効になります。下流の Agent は標準 MCP プロトコルを通じて呼び出します:
Agent → POST /mcp
{"jsonrpc":"2.0", "method":"tools/list", "id":1}
Agent ← {"jsonrpc":"2.0", "result":{"tools":[..., {"name":"my_query", ...}]}, "id":1}
Agent → POST /mcp
{"jsonrpc":"2.0", "method":"tools/call", "params":{"name":"my_query","arguments":{"limit":20}}, "id":2}
Agent ← {"jsonrpc":"2.0", "result":{"content":[{"type":"text","text":"[{\"col\":\"val\"}]"}]}, "id":2}ドキュメント索引
ドキュメント | 用途 | 読者 |
プラットフォームアーキテクチャ、WBS 分解、マイルストーン、リスク | 全員 | |
プロダクションライン協働契約、接続プロトコル | プラットフォームチーム + プロダクションラインチーム |
プロジェクトロードマップ
gantt
title MCP 协议中台路线图
dateFormat YYYY-MM-DD
axisFormat W%W
section M1 · 协议核心(W1)
Spring AI 集成 + 动态 Tool 注册 POC :m1, 2026-07-20, 5d
section M2 · 工具引擎(W2)
Tool Registry + Executor + Adapter :m2, after m1, 5d
section M3 · 生产就绪(W3)
Middleware Pipeline + 降级演练 :m3, after m2, 5d
section M4 · 管理控制台(W4-W5)
Admin Console + SDK :m4, after m3, 10d
section M5 · 上线(W6)
集成测试 + 压测 + 灰度 :m5, after m4, 5dフェーズ | 目標 | 期間 |
Phase 1 · MVP | MCP プロトコルミドルウェア中核機能:動的 Tool 登録 + 5 種類のデータソースアダプタ + ミドルウェアパイプライン + 管理コンソール + SDK | 6 週間 |
Phase 2 · 拡張 | プラグインホットロード + OAuth2.0/RBAC/マルチテナント + カスタム ClassLoader 分離 + 追加アダプタ(ES/Mongo/GraphQL) | 3〜6 か月 |
Phase 3 · 商用化 | MCP Marketplace + 課金計量 + マルチクラスタスケジューリング + データマスキングミラー | 6 か月+ |
プロジェクトステータス:
設計段階 · レビュー待ち| チーム:2.5 人(TL + BE + FE 共有)| 期間:6 週間質問がありますか?まず MCP プロトコルミドルウェア構築計画 をご覧ください。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Hosted MCP endpoint with realistic fake data for prototyping agents. 12 tools, no setup.
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
Control plane for autonomous software labor. Agents claim objectives over MCP with audit trail.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/qiyingshicaiji/mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server