MCP 协议中台
慧策 · MCP 协议中台
Одной фразой: инфраструктура MCP-протокола — позволяет производственным линиям самостоятельно регистрировать источники данных и инструменты, а нижестоящие агенты обнаруживают и вызывают их через стандартный протокол MCP. Платформа — это «протокольный конвейер», она не несёт никакой бизнес-логики.
Содержание
Related MCP server: OmniMCP
Позиционирование и границы
Зачем нужна MCP-платформа?
В компании несколько производственных линий (кросс-граничный ERP, внутренняя электронная коммерция, складская WMS, финансовые расчёты...), и у каждой есть потребности в запросах данных. Если на каждую линию форкать отдельный MCP-сервер и менять реализацию инструментов, мы попадём в ловушку «каждая новая линия — новые правки кода».
Ключевая идея: создать инфраструктуру, которая занимается только реализацией 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 / ... │
└──────────────────────────────────────┘✅ В зоне ответственности | ❌ Вне зоны ответственности |
Полная реализация MCP-протокола (на базе Spring AI MCP Server 1.1.2) | Любая SQL/API-логика конкретных инструментов (это делают линии) |
Реестр инструментов (CRUD + управление версиями + горячая загрузка) | ETL-конвейеры / построение широких таблиц / очистка данных |
Каркас адаптеров источников данных (MySQL/PG/Doris/HTTP/Redis) | Интеграция с вышестоящими API (ERP, BI, сторонние) |
Конвейер промежуточного ПО (аутентификация/лимитирование/кэш/деградация/логирование/мониторинг) | Бизнес-формулы / алгоритмы / правила |
Консоль администрирования (управление источниками данных + управление инструментами + панель мониторинга) | OAuth2.0 / RBAC / мультитенантность (Phase 2) |
SDK для производственных линий (Java + Python) | Сопровождение подключения линий / разработка инструментов |
Ключевой принцип дизайна: платформа не понимает бизнес. Инструмент — это просто запись конфигурации в MySQL (имя + JSON Schema + ссылка на источник данных + шаблон запроса). Производственная линия решает, как назвать инструмент, как написать SQL, какой TTL кэша задать.
Ключевая концепция: что такое MCP
MCP (Model Context Protocol) — это стандартный протокол взаимодействия AI-агентов с внешними инструментами/данными, открытый компанией Anthropic. Аналогия с USB-C: до MCP каждое AI-приложение писало собственный клейкий код для интеграции с источниками данных; с MCP агент обнаруживает и вызывает инструменты через единый протокол 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"]Ключевой принцип дизайна: агент управляет «намерением» (понимает, что нужно пользователю), платформа управляет «протоколом» (реализация MCP + маршрутизация инструментов + промежуточное ПО), производственная линия управляет «данными» (регистрирует источники данных + пишет 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 | рукопожатие | Протокольный уровень не интересуется, откуда берутся инструменты и что за источники данных |
Middleware Pipeline | аутентификация → лимитирование → кэш → деградация → логирование и мониторинг, паттерн Filter Chain, обязательный путь запроса | Полностью конфигурируемый, линии выбирают стратегии в конфигурации инструмента |
Tool Engine | ToolDispatcher разбирает маршруты, Tool Registry управляет метаданными, Tool Executor выполняет проверку параметров + рендеринг шаблонов + маппинг результатов | Развязка Protocol и Registry через ToolDispatcher |
Adapter Framework | контракт SPI-интерфейса адаптеров + 5 встроенных адаптеров + защитные ограничения запросов (max_rows/timeout/чёрный список DDL) | Платформа делает только адаптацию, не интересуется содержимым данных |
Admin Console | управление источниками данных, управление регистрацией инструментов, панель мониторинга, настройка алертов (Vue 3 + Arco Design) | Самообслуживание для администраторов производственных линий |
Ключевой дизайн
Инструмент = метаданные, а не код
С точки зрения платформы инструмент — это просто запись в MySQL. Производственная линия регистрирует инструмент через API или консоль:
{
"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 }
}Что делает платформа: проверяет корректность параметров → рендерит шаблон → выполняет через адаптер → маппит результат → возвращает. Всю бизнес-логику решает производственная линия.
Модель данных (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 уровня: глобальный / производственная линия / инструмент |
Кэш | Caffeine L1 (локальный <1мс) + Redis L2 (распределённый общий), TTL настраивается линией |
Деградация | 4 уровня автоматической деградации: устаревший кэш → только локальный кэш → статическое значение по умолчанию → отказ 503 |
Наблюдаемость | Автоматическая инструментация: объём вызовов/успешность/P95/попадания в кэш/число деградаций, Prometheus + Grafana |
Журнал вызовов | таблица |
Три способа подключения
Способ | Сценарий применения | Объём работы линии |
SQL-шаблон | запрос одной таблицы, простой JOIN, агрегация | написать 1 SQL + заполнить форму |
HTTP-шаблон | вызов существующего REST API линии | заполнить URL-шаблон |
SDK-плагин | многошаговая агрегация, сложные вычисления | написать 50–200 строк Java/Python |
Технологический стек
Уровень | Выбор | Версия | Причина |
Реализация MCP-протокола | Spring AI MCP Server | 1.1.2 | Проверено на внутреннем демо, встроены JSON-RPC Router + Transport + рукопожатие |
Аутентификация |
| 0.0.5 | Библиотека сообщества, проверена на демо. API Key + BCrypt |
Базовый каркас | Java 21 + Spring Boot | 3.4.7 | Технологический стек Java компании, версии выровнены с внутренним демо |
Фронтенд консоли администрирования | Vue 3 + Vite + Arco Design | — | Лёгкий, стек фронтенд-группы компании |
Хранилище метаданных | MySQL 8.0 | — | Конфигурация инструментов, конфигурация источников данных, журналы вызовов |
Кэш | Caffeine (L1) + Redis 6.2 (L2) | — | L1 локальный <1мс, 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 делает три вещи: (1) динамическую регистрацию инструментов (замена статической аннотации
@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 шага, без участия разработчиков платформы:
Шаг 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 }
}'Шаг 2: регистрация инструмента
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}}" }
}'Шаг 3: вызов агентом
После регистрации инструмент вступает в силу на всех экземплярах в течение 30 секунд. Нижестоящие агенты вызывают через стандартный протокол 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-платформы: динамическая регистрация инструментов + 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 deployed
Maintenance
Related MCP Connectors
AI agent registry — search, discover, register, and connect agents via MCP.
Let AI agents query data and act across all your business apps via MCP.
AgencyAI's public MCP for service discovery and AI-readiness assessment.
A registry of AI agent tools — MCP servers, APIs, CLIs, SDKs — kept current by automated ingestion.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to access a unified catalog of tools from various APIs (OpenAPI, GraphQL, MCP, Google Discovery) through the MCP protocol.2 npmMIT
- AlicenseAqualityDmaintenanceEnables AI agents to discover, monitor, and control industrial hardware like ESP32 machine controllers and inspection cameras through a standardized MCP interface.5MIT
- FlicenseAqualityDmaintenanceCentral registry for AI tools with vector search and knowledge graph, enabling intelligent tool discovery, chaining, and execution via MCP.12-
- AlicenseNot gradedqualityBmaintenanceEnables enterprise AI agents to discover and invoke MCP tools, resources, and prompts across GitHub, ITSM, and business systems through a policy-controlled gateway with human approval and auditability.MIT