主要内容
MCP 是 agent 世界的 USB-C。在 MCP 出现之前,每个框架都有自己的 tool 定义格式,每个服务(GitHub、Slack、Postgres)都要为每个框架写一遍适配。MCP 让服务方一次开发就能被所有支持 MCP 的客户端(Claude / Cursor / Codex / Windsurf)即插即用。OpenAI 和 Google 的 Agents SDK 也已经支持 MCP server。配套的 Claude Agent SDK 更进一步,把整个 Claude Code 的 harness 暴露成 programmable API:工具循环、PreToolUse / PostToolUse hooks、subagent、allowedTools 权限控制、session 恢复。
核心关注点
关心"同一个工具,不同 agent / 不同 LLM 都能用",以及"危险操作能被层层拦截"。
安装与 hello world
from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions
options = ClaudeAgentOptions(
mcp_servers={
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {"GITHUB_TOKEN": "..."},
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
},
},
allowed_tools=["Read", "Grep", "Bash"],
permission_mode="default",
system_prompt="你是一个代码审查助手。",
)
async def main():
async with ClaudeSDKClient(options=options) as client:
await client.query("检查最近的 PR 是否引入了 SQL 注入风险")
async for msg in client.receive_response():
print(msg)关键 API / 概念
ClaudeAgentOptionsharness 配置中心。mcp_servers、allowed_tools、permission_mode、system_prompt、hooks。
mcp_servers接入 MCP 生态。可以是 stdio(本地进程)、sse / http(远程服务)。
hooks: PreToolUse / PostToolUse工具执行前后拦截,做审计、修改参数、deny 操作。配合 allowedTools 形成权限五层评估。
can_use_tool callback最后一层权限,每个 tool call 都会触发。返回 allow / deny / approve_with_changes / suggest_alternative。
适用场景
MCP Server 开发者
把你公司的 API(内部 CRM、监控系统、代码仓库)封装成 MCP server,所有 agent 客户端即插即用。
MCP Client 开发者
自研 IDE 助手、企业内部 agent 平台,想要一个工具生态,接入 MCP 立刻有数百个 servers 可选。
Coding agent harness
用 Claude Agent SDK 继承 Claude Code 整个 harness,不用从零写 tool loop、context 管理、permission system。
什么时候别用
- 单体应用 agent 只有几个内部工具:直接在 agent 代码里写 function 更简单
- 严格封闭的企业环境:MCP 目前的 transport 和认证方案还在演进
vs 相邻选项
vs LangChain tools
LangChain 的 tool 只在 LangChain 生态用,MCP 跨生态。
vs OpenAI function calling
function calling 是模型层 API,MCP 是跨 agent / 跨模型的协议层。两者互补。