Prompts-MCP 686 skills · ai / design / design-pattern / framework / fundamentals / habit / lang / tech-selection /mcp/sse
ai ai/agent-mcp/mcp-protocol.md high

ai-agent-mcp-protocol

MCP 是 Anthropic 开放标准,标准化工具如何被发现描述(调用仍走 tool use),传输分 stdio 与 Streamable HTTP,Java 用 Spring AI 暴露、LangChain4j 消费。Use when 接入或暴露 MCP 工具 / 选传输 / 评审工具集成时。

mcpmodel context protocolstdio 传输streamable httpmcp server工具暴露
paths
  • *.java
  • *.py
  • *.md

Agent · MCP 协议与工程实践

本条只管「MCP 是什么 + 怎么接」。工具调用循环与防护见 function-calling.md

是什么 · 与 function calling 的关系

说明
MCP Model Context Protocol,Anthropic 2024-11 开放标准;统一 AI 与外部工具/数据源的接入方式(2025-12 捐 Linux 基金会 Agentic AI Foundation)
与 function calling 不冲突 MCP 标准化的是"工具如何被发现、描述、连接";模型实际调用仍走 tool use。MCP = 工具的"USB-C 接口",function calling = 插上后怎么用
解决什么 没有 MCP 时每个工具各写各的对接(N×M 适配);MCP 让一次按标准暴露的能力被任意 MCP 客户端复用

传输选型

传输 用于 说明
stdio 本地子进程 / CLI 工具 同机进程间,最简单,无网络;本仓这类 MCP server 即走 stdio
Streamable HTTP 远程 / 生产 跨网络、可水平扩展、配合鉴权与网关;生产远程接入推荐

Java 角色

你要做
把企业能力(查库/调 API/读文件)暴露为工具 Spring AI MCP Server Boot Starter
消费外部 MCP 工具 LangChain4j MCP Client(Streamable HTTP + stdio)或 Spring AI MCP Client
多 agent / 工具编排 LangGraph4j / langchain4j-agentic

工程实践(规约)

维度 要求
工具即能力,不硬编码 企业能力经 MCP 暴露为工具,别把外部调用硬编码进 agent 代码
server 即 harness MCP server 是模型外的"约束架":精心设计暴露哪些工具、工具描述怎么写(描述就是路由信号),别一股脑全暴露撑爆上下文
工具描述要精准 工具 name + description 直接决定模型选不选它,写法等同 skill 的 description 路由——完整且仅覆盖该工具能力
权限与租户隔离 server 侧按租户/partition 校验,客户端身份不可信;远程传输必上鉴权
结果校验 server 返回与客户端接收都做结构校验,不互相盲信
最小暴露面 只暴露必要工具,敏感操作加二次确认或审批,降越权与误操作面

反例

❌ 远程 MCP server 走 Streamable HTTP 却不加鉴权 → 任意客户端可调企业工具
❌ 一个 server 暴露 50 个工具、描述含糊 → 模型选错工具、上下文被工具清单撑爆
❌ 把"查订单"直接硬编码进 agent 代码而非作 MCP 工具 → 无法被其他 agent 复用、难治理

自检

  • [ ] 工具经 MCP 暴露,没硬编码进 agent?
  • [ ] 传输选对了(本地 stdio / 远程生产 Streamable HTTP)且远程上了鉴权?
  • [ ] Java 角色选对(暴露用 Spring AI MCP Server / 消费用 LangChain4j MCP Client)?
  • [ ] 工具描述精准(作路由信号),且只暴露必要工具不撑爆上下文?
  • [ ] server 侧做了租户隔离 + 结果校验,不盲信客户端身份?

相关