MCP 协议中台
慧策 · MCP 프로토콜 미들웨어
한 줄 요약: MCP 프로토콜 인프라스트럭처 — 생산 라인이 데이터 소스와 Tool을 자체 등록하고, 하위 Agent가 표준 MCP 프로토콜을 통해 발견하고 호출한다. 플랫폼은 "프로토콜 파이프라인"이며, 어떤 비즈니스 로직도 담지 않는다.
목차
포지셔닝과 경계
왜 MCP 프로토콜 미들웨어를 만드는가?
회사에는 여러 생산 라인(크로스보더 ERP, 국내 이커머스, 창고 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의 설정 레코드(이름 + 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 레코드 하나일 뿐이다. 생산 라인은 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 |
호출 로그 |
|
세 가지 연동 방식
방식 | 적용 시나리오 | 생산 라인 작업량 |
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 위에서 세 가지를 수행한다: (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