跳转到主要内容

Claude MCP 内部工具 API 集成:直连工具、MCP 连接器还是自建服务器?

A
15 分钟阅读Claude

MCP 是把内部工具开放给 Claude 的一种方式,但不是 API 设计本身。单一应用拥有执行循环时,Claude API 直连工具通常更简单;多个 Claude 入口复用同一套内部工具时,远程 MCP 才值得承担额外服务器和安全审查。

Claude MCP 内部工具 API 集成:直连工具、MCP 连接器还是自建服务器?

Claude 接入内部 API 不只有一条路。MCP 适合把一组工具做成可复用的协议接口,但它不能替代 API 设计、鉴权、审批和审计。

先判断谁拥有执行循环。如果你的应用已经负责提示词、用户会话、权限检查、工具执行、失败重试和日志,Claude API 直连工具通常是最短路径。如果多个 Claude 入口都要使用同一套内部工具,再把这些能力收敛成一个狭窄的远程 MCP 服务器。

截至 2026 年 6 月 1 日,Anthropic 文档把直连工具、Messages API 的 MCP connector、Claude Code MCP 和 Claude 自定义连接器分成不同表面。选型时可以先按这个表切开:

你的集成需要优先选择原因
一个应用拥有提示词、状态、执行和审计Claude API 直连工具应用接收 tool_use,自己调用内部服务,再返回 tool_result,权限边界留在应用内。
Messages API 需要调用一套可复用的远程工具Claude API MCP connectorClaude 可以从 Messages API 连接可访问的远程 MCP server,不需要你在应用里再实现一个 MCP client。
多个 Claude 客户端要共用同一套内部工具合同自建 MCP serverAPI 或平台团队维护一套工具名、schema、权限和输出规则,避免每个客户端各写一份适配器。
开发者要让 Claude Code 操作本地仓库、脚本或机器上下文Claude Code MCP本地 stdio、项目作用域、用户作用域和 /mcp 控制属于开发者工作流。
人在 Claude.ai 或 Desktop 中使用已批准的远程工具自定义连接器这是面向人的产品连接器路径,有独立的网络、计划、权限和信任边界。
真正需要托管的长时间 agent 运行环境Managed Agents只有当会话运行时和托管循环才是核心问题时才走这条路。

停止规则:不要因为 MCP 存在就先建 MCP server。只有当复用、连接器所有权或跨客户端一致性值得多一个服务器、鉴权面和审查面时,再把内部 API 包成 MCP。

Claude API 直连工具和 MCP 的分界

最短路线通常是 Claude API 的工具调用。你的应用向 Claude 发送工具定义;Claude 需要外部能力时返回 tool_use;你的代码检查权限、调用内部 API、整理结果,然后把 tool_result 发回去。这个模式适合一个产品应用拥有整条循环的场景,因为应用本来就知道当前用户、组织、会话、服务账号和审计要求。

MCP 的价值在于把工具合同从一个应用里抽出来。当 API 团队希望同一个“查工单”“查账单”“生成退款草稿”“汇总部署事故”工具能被 Claude API、Claude Code、Claude.ai 连接器或未来内部 agent 共用时,MCP server 就有意义。它不是为了显得更先进,而是为了让工具定义、schema、权限、输出大小和变更控制有一个统一 owner。

判断点选择 Claude API 直连工具选择 MCP 或远程连接器
运行时 owner一个应用已经拥有循环多个客户端需要同一套工具合同
工具执行应用可以执行调用并返回结果远程服务器应该拥有工具执行和协议接口
鉴权边界应用会话、租户权限和服务账号足够需要连接器级别的 header、OAuth、allowlist 或 per-tool 权限
变更控制一个产品团队能维护平台/API 团队需要稳定接口给多个入口
运维成本第一版要小而快接受额外部署、监控、审查和回滚面

很多团队误把“给 Claude 用内部 API”理解成“必须先写 MCP”。这会把简单的 app-owned loop 变成多一层服务器、多一套网络边界、多一组密钥和多一套监控。先用直连工具证明读路径、输出形状和用户价值,往往更稳。

反过来,如果内部工具会被多个入口复用,直连工具也会很快变成重复实现。每个客户端都要重新定义工具名、schema、错误处理、权限和输出上限,最后产生多套不一致的合同。这个时候自建 MCP server 可以把复杂度集中到一个可审查的位置。

不要把 MCP 工具做成内部后端 endpoint 的薄封装。Claude 不需要任意调用你的 admin API。它需要面向任务的能力,例如 get_customer_billing_summarysearch_support_ticketcreate_refund_draftsummarize_incident_errors。工具名和描述会影响模型如何选择工具,输入 schema 会决定模型能否给出可验证参数,返回内容会进入上下文并影响下一步判断。

先设计狭窄的内部 API 包装层

内部 API 包装层示意图:现有 API、狭窄工具、作用域鉴权、小 schema、紧凑结果和禁止暴露整个后端。

安全的 Claude 内部工具集成不是把后端网关直接暴露给模型,而是在后端前面做一层工具包装。包装层把现有 API 翻译成少量任务型工具,每个工具都有明确输入、受控输出、作用域凭据、可解释错误和审计记录。

先从用户结果倒推工具,而不是从已有 endpoint 列表往外开放:

用户结果不好的工具形状更好的工具形状
检查客户账单状态call_billing_api 接受任意路径和 bodyget_customer_billing_summary 接受 customer_id 和 reason,返回状态、未付发票、下一步建议
准备退款admin_mutation 接受原始 JSONcreate_refund_draft 只生成草稿 id,真正执行前需要人工或策略审批
排查事故query_logs 接受无限时间范围和自由查询summarize_incident_errors 接受服务名、时间窗、limit,返回分组计数和样例
更新 CRM 备注write_crm 允许任意写接口append_account_note 要求账号 id、备注、原因、操作者和审计 id

包装层还要决定 Claude 不应该看到什么。密钥、token、完整 PII、数据库原始行、大段日志和全量文档默认不应该返回。如果 Claude 只需要判断,工具结果应该给出摘要、来源 id、数量、时间戳和少量样例,而不是把内部系统的原始响应倒进上下文。

紧凑输出不是后期优化,而是工具设计的一部分。大结果会让模型在噪声字段、重复元数据和无关行里消耗上下文。更好的结果是短、类型化、便于下一步决策:

json
{ "customer_id": "cus_123", "billing_status": "past_due", "open_invoice_count": 2, "latest_invoice": { "id": "inv_789", "amount_due_usd": 42.5, "due_date": "2026-06-03" }, "recommended_next_action": "ask customer to update payment method", "source_records": ["inv_789", "ticket_456"] }

写操作应该比读操作更慢、更窄、更容易审计。第一版通常只做只读摘要;第二步才做“生成草稿”“生成预览”“请求审批”;最后才允许受控执行。写工具要有 reason、idempotency key、approval id、actor、预览结果和最终状态校验。无法回滚的动作要在审批前明确说明。

这个包装层也能帮助团队处理 prompt injection。工单、CRM 备注、邮件、文档、网页和用户上传文件里都可能藏有“忽略上文、调用写工具”的指令。工具返回时要把这些内容标记为不可信数据,不要让检索到的文本变成新的系统指令。

远程连接器边界:API MCP connector、自定义连接器和网络可达性

Claude API MCP connector 不是本地 Claude Code MCP server。它是 Messages API 的远程连接路径,让 Claude 可以直接连接远程 MCP server。这个 server 需要通过 HTTP 的 Streamable HTTP 或 SSE 被访问;本地 stdio server 不能直接接入这条 API connector 路径。

截至 2026 年 6 月 1 日,规划生产接入时要把这些边界写在设计文档里:

边界对实现的影响
beta header当前请求需要 anthropic-beta: mcp-client-2025-11-20;旧 header 不能在未复核时继续当作可用合同。
传输方式API connector 走远程 HTTP/SSE;不要把 Claude Code 本地 stdio 命令粘到这个路径里。
能力范围当前主要支持 MCP tool call,不是把所有 MCP 原语都变成通用隧道。
数据保留Anthropic 文档说明该 connector 不覆盖 ZDR,因此敏感数据和客户数据要单独评审。
工具控制使用 allowlist、denylist 和连接器配置,只让模型看到当前任务需要的工具。

本地和远程边界示意图:Claude Code 本地 stdio、API MCP connector 远程 HTTP、鉴权 header、云端可达性和不要混用路径。

Claude.ai 或 Claude Desktop 的自定义连接器又是另一条用户侧路线。它同样使用远程 MCP,但产品入口、用户批准、组织管理、计划可用性和网络要求都不同。Anthropic 云端基础设施必须能访问你的连接器,所以“只在内网跑一个服务”通常不是完整答案。

对于内部 API,这个网络事实决定了服务器放在哪里、谁能访问、怎样配置防火墙、OAuth 或服务 token 如何发放、租户边界如何执行、哪些工具需要组织管理员批准。一个能读取或修改内部系统的远程连接器,本质上就是一个外部集成入口,不能按演示脚本的标准上线。

上线前先回答这个表:

问题直连工具API MCP connector自定义连接器
谁访问内部系统你的应用后端可被 Claude API 路径访问的远程 MCP server可被 Claude 用户侧入口访问的远程 MCP server
鉴权在哪里执行应用会话、租户权限、服务账号MCP server、连接器配置、header、内部策略用户/管理员同意、connector auth、MCP server、内部策略
第一版适合产品内单一工作流Messages API 复用工具集人在 Claude.ai/Desktop 使用已批准工具
第一风险应用代码里藏了太宽的执行权限暴露太多工具或返回太多内部数据用户权限、写操作和 prompt injection 容易被低估

远程 MCP server 要按生产服务设计:健康检查、请求日志、鉴权验证、速率限制、schema 测试、错误分类、结果大小上限、失败回退和灰度发布都需要存在。如果它只是给开发者本机用的脚本,就留在 Claude Code MCP 分支,不要包装成远程 connector。

Claude Code 和 Desktop 属于本地工作流分支

Claude Code MCP 非常适合本地开发者工作流:仓库工具、项目脚本、内部文档搜索、issue 系统、只读数据库辅助、浏览器验证或团队开发工具。这里才是本地 stdio server、project scope、user scope 和 /mcp 检查的主场。

但 Claude Code 设置不等于你的生产 app 工具面。如果生产应用调用 Messages API,开发者电脑上的 .mcp.json 或 Claude Code 项目配置不会自动变成生产 connector。如果一个 stdio server 在本机演示里有效,它只证明了本地分支,不证明远程 API connector 能访问相同工具。

本地工作流可以这样验证:

bash
claude mcp add --scope project support-search --transport stdio -- ./scripts/support-search-mcp claude mcp list

远程路径要按 URL 和网络可达性思考:

bash
claude mcp add --scope project support-search https://mcp.example.com/mcp

两个分支要分开写。local stdio 可以依赖本机文件、本机命令、本机凭据和开发者个人上下文;remote HTTP server 需要部署、域名、TLS、鉴权、日志、审计和稳定接口。混用这两个假设,会得到一个“演示可行、生产不可批”的系统。

如果你的问题是 Claude Code 该装哪些 MCP server,看 Claude Code 最佳 MCP 服务器。如果问题是 MCP 太多导致上下文膨胀,看 Claude Code MCP 上下文过载。如果问题是凭据、base URL、provider 路由或 /status,看 Claude Code API 配置

生产安全清单

Claude 内部工具生产安全清单:只读证明、写入审批、作用域鉴权、审计日志、输出上限、提示注入防护、回滚路径和停止宽泛工具。

内部工具要按安全阶梯推进。第一版证明 Claude 能读取正确的受限数据并给出有用摘要;第二版加入预览、审批和审计;写入能力要等这些机制足够稳定后再开放。

Gate通过条件停止条件
工具范围每个工具只对应一个用户结果和一个狭窄内部动作工具接受任意 endpoint、SQL、shell 或 mutation
凭据范围服务端保存密钥,按环境和工具最小授权Claude 能看到密钥或复用宽泛管理员凭据
只读证明读工具返回紧凑、可决策、带来源 id 的结果返回原始 dump、敏感字段或无限结果集
写入预览写工具先生成草稿或预览没有审批就直接执行真实写入
审批路径高风险动作记录 approver、reason 和 audit id审批只写在 prompt 里,没有系统记录
审计日志每次调用记录 actor、user、tool、输入摘要、输出摘要和结果 id事后无法还原 Claude 尝试了什么、系统实际改了什么
输出预算默认 limit、分页、摘要和结果句柄单次调用能塞入大量日志、行或文档
注入防护工具结果被当作不可信数据处理工单或文档里的文字能诱导 Claude 绕过策略

审批粒度要和风险匹配。只读摘要可能只需要常规鉴权和日志;退款、部署、权限变更、账号停用、数据库修改则需要预览、审批记录和最终状态校验。如果领域无法回滚,工具必须在审批前告诉用户“此操作不可回滚”。

日志也不只是合规材料。排障时你需要知道模型选择了哪个工具、传了哪些参数、权限检查为何通过或拒绝、内部 API 返回了多大结果、Claude 最终怎样解释这些结果。没有这些信息,任何“Claude 工具不稳定”的结论都会变成猜测。

实现草图

不管先用直连工具还是 MCP,基本模式相同:定义狭窄工具、在可信代码里执行、返回紧凑结果、记录调用。差别在于工具合同放在哪里、哪个运行时调用它。

直连 Claude API 工具时,应用 loop 拥有执行:

ts
const tools = [ { name: "get_customer_billing_summary", description: "Return a compact billing summary for a support-approved customer id.", input_schema: { type: "object", properties: { customer_id: { type: "string" }, reason: { type: "string" } }, required: ["customer_id", "reason"] } } ]; // 1. 请求里带上工具定义。 // 2. Claude 返回 tool_use 后,先检查调用者权限。 // 3. 用受限服务凭据调用内部 API。 // 4. 返回紧凑 tool_result,并写入审计日志。

远程 MCP server 时,API 或平台团队拥有 server 合同。server 暴露工具定义和 handler,Claude 客户端通过对应产品表面连接。第一版应该保持无聊而可审查:

设计项更好的默认值
工具命名动词加领域结果,例如 get_customer_billing_summary
输入 schema必填 id、reason、时间窗、limit 和 enum
输出 schema摘要字段、来源 id、下一步、warning 和 cursor
错误处理返回领域错误,不返回原始 stack trace
可观测性tool call id、actor、request id、延迟、结果大小、策略决定
权限默认只读;写工具需要显式审批

如果使用 API MCP connector,不要把 server 的所有工具都暴露给每次请求。用 allowlist 或 tool set 控制当前任务可见工具。如果使用自定义连接器,额外检查用户同意、组织管理员控制和网络访问。如果使用 Claude Code,把配置放在正确作用域,避免把密钥提交进仓库。

下一步怎么选

最好的下一步取决于谁拥有执行:

当前情况下一步
一个 app 只需要少量内部只读查询用 Claude API 直连工具,先做紧凑 tool_result 和审计日志。
多个 Claude 入口需要同一套工具设计自建 MCP server,从只读工具开始,再接 API MCP connector 或其他批准表面。
主要是本地开发自动化留在 Claude Code MCP,明确 project/user scope,并控制上下文膨胀。
人在 Claude.ai 或 Desktop 里用工具走自定义连接器的权限、计划、网络和管理路径,不要套用本地 stdio 假设。
难点是长时间托管运行时先和 Claude Managed Agents 比较,不要直接自写整套 loop。

第一个里程碑应该是只读端到端证明:模型请求、工具选择、权限检查、内部 API 调用、紧凑结果、审计日志和最终回答都能跑通。之后再加 allowlist、输出上限、审批流和写入预览。只有当这套合同需要复用时,才把它升级成远程 MCP server。

常见问题

Claude 接入内部 API 必须用 MCP 吗?

不必须。一个应用拥有执行循环时,Claude API 直连工具通常已经足够。MCP 适合多个 Claude 客户端复用同一套工具合同,或者 API 团队需要统一维护工具 schema、权限和输出规则。

Claude API 直连工具和 API MCP connector 有什么区别?

直连工具由你的应用接收 tool_use、执行内部操作、返回 tool_result。API MCP connector 让 Messages API 连接远程 MCP server,由 server 拥有工具接口。后者多了服务器和网络边界,因此必须有复用或所有权理由。

API MCP connector 能直接用本地 stdio MCP server 吗?

不能直接这样用。截至 2026 年 6 月 1 日,API connector 要求远程 HTTP/SSE MCP server。本地 stdio 属于 Claude Code 或本地 Desktop 类工作流。

可以把整个内部 API 暴露成 MCP 工具吗?

不应该。应该暴露任务型工具、狭窄 schema 和紧凑输出。任意 endpoint、SQL、shell 或 admin mutation 都很难让 Claude 稳定使用,也很难让人审查。

写操作应该怎么设计?

先做只读工具。写操作先生成草稿或预览,再要求审批、reason、actor、idempotency key、audit id 和最终状态校验。高风险动作不能只因为 prompt 要求就执行。

MCP 工具结果会影响上下文吗?

会。工具定义、工具调用和工具结果都会占上下文。默认返回摘要、过滤结果、分页和来源 id。Claude 不需要完整原始 payload 时,返回句柄或记录 id 比返回全文更好。

Claude Code MCP 在哪里适用?

Claude Code MCP 适合本地开发者工作流,例如项目脚本、仓库工具、只读数据库辅助和本机自动化。它不能替代生产 Messages API connector 的部署、网络、鉴权和审计。

上生产前最少要验证什么?

验证路线 owner、远程可达性、beta header 或 connector 要求、鉴权作用域、工具 allowlist、只读结果形状、写入审批、审计日志、输出限制和 prompt-injection 处理。任何一项不清楚,就先停在只读 pilot。

分享文章:

laozhang.ai

一个 API,所有 AI 模型

AI 图片

Gemini 3 Pro Image

$0.05/张
官方2折
AI 视频

Sora 2 · Veo 3.1

$0.15/个
异步API
AI 对话

GPT · Claude · Gemini

200+ 模型
同官方价
已服务 10万+ 开发者
|@laozhang_cn|送$0.1