Skip to main content
Glama

慧策 · 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/listtools/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 계층

initialize 핸드셰이크, JSON-RPC 2.0 Router, SSE/Streamable HTTP Transport(Spring AI MCP Server 1.1.2 기반, 바퀴 재발명 없음)

프로토콜 계층은 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, mcp-server-security 0.0.5 + Spring Security 기반

속도 제한

Token Bucket, 3단계: 글로벌 / 생산 라인 / Tool

캐시

Caffeine L1(로컬 <1ms) + Redis L2(분산 공유), TTL 생산 라인 설정 가능

서킷 브레이커

4단계 자동 다운그레이드: 만료 캐시 → 로컬 캐시만 → 정적 기본값 → 503 거부

관측성

자동 계측: 호출량/성공률/P95/캐시 히트율/다운그레이드 횟수, Prometheus + Grafana

호출 로그

InvocationLog 테이블, 생산 라인은 "Agent가 내 Tool을 호출할 때 어떤 파라미터를 보냈고 무엇을 반환했는지" 조회 가능

세 가지 연동 방식

방식

적용 시나리오

생산 라인 작업량

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 + initialize 핸드셰이크. 프로토콜 바퀴 재발명 없음

인증

mcp-server-security + Spring Security

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 엔드포인트 (:8080/mcp)

Admin Console

8080

관리 콘솔 (:8080/admin/*)

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}

문서 인덱스

문서

용도

독자

MCP 프로토콜 미들웨어 구축 계획

플랫폼 아키텍처, WBS 분해, 마일스톤, 리스크

전체

MCP 서비스 책임 경계 설계

생산 라인 협업 계약, 연동 프로토콜

플랫폼 팀 + 생산 라인 팀


프로젝트 로드맵

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 프로토콜 미들웨어 구축 계획을 확인하세요.

-
license - not tested
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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.

View all MCP Connectors

Latest Blog Posts

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