返回文章列表

MCP Server 不是万能插件:工具暴露、权限和审计边界

从 Model Context Protocol 的连接模型出发,梳理 MCP server 在工具暴露、权限控制和审计上的工程边界。

MCP 让 AI 应用连接外部数据和工具变得更标准,但这不意味着所有系统都应该无脑暴露成工具。协议解决的是“如何连接”,安全设计仍然要由应用自己负责。MCP 官方介绍把它定位为连接 AI 应用与外部系统的开放协议。[mcp-001]

工具暴露要最小化

设计 MCP server 时,最重要的不是暴露多少工具,而是每个工具是否有清晰边界:

  • 工具是否只读?
  • 输入参数是否可验证?
  • 输出是否包含敏感字段?
  • 是否有租户或用户权限隔离?
  • 失败时是否返回可恢复错误?

MCP server 应该像内部 API 一样被设计、测试和审计,而不是像脚本集合一样随手添加。

一个工具清单可以先这样审查:

{
  "tool": "search_customer_notes",
  "risk": "sensitive_read",
  "allowed_roles": ["support_agent"],
  "returns_pii": true,
  "requires_audit_log": true
}

写操作需要额外护栏

如果工具会创建、修改或删除数据,就应该默认加入确认流程。Anthropic 的 tool use 文档说明模型可以生成工具调用请求,但并不意味着工具执行可以绕过业务权限。[mcp-002]

实践上可以分三档:

  1. 只读工具:允许自动调用,但记录调用日志。
  2. 低风险写工具:执行前让用户确认关键字段。
  3. 高风险写工具:要求人工审批或后端策略放行。

审计日志要记录模型上下文

传统 API 日志记录请求参数就够了,但 Agent 工具调用还应该记录:

  • 用户原始请求。
  • 模型选择工具的理由摘要。
  • 工具输入和输出摘要。
  • 调用时的权限主体。
  • 是否经过人工确认。

综合 MCP 和工具调用资料可以推断:MCP 的工程价值来自标准化连接,安全价值来自你在 server 边界上做的限制、审计和确认。

参考资料

  1. [mcp-001] Model Context Protocol, “Introduction”, https://modelcontextprotocol.io/docs/getting-started/intro
  2. [mcp-002] Anthropic Docs, “Tool use overview”, https://docs.anthropic.com/en/docs/agents-and-tools/tool-use/overview