上周给团队做Claude落地,折腾了半天怎么让它访问内部API,最后发现MCP协议真的香,30分钟就搞定了。今天把完整流程写出来,大家直接抄作业就行。
为什么要给Claude接内部API?
说实话,现在用大模型做开发的同学,90%都遇到过这个问题:
大模型训练数据都是公开的,根本不知道你公司内部的业务数据,也没法调用你内部的系统接口。
之前我们为了让Claude能查内部的用户数据,搞了个很蠢的方案:每次让用户把数据导出来,复制粘贴到对话框里。
不仅麻烦,还容易泄露敏感数据,而且数据量大的时候根本没法弄。
直到上个月Anthropic官方推出了MCP(Model Context Protocol)协议,完美解决了这个问题。
MCP到底是什么?
简单来说,MCP就是一套让大模型安全访问外部服务的标准协议。
你可以把它理解成大模型和外部系统之间的"翻译官":
- 你公司的内部API不需要改任何代码,只要写个简单的MCP适配器就行
- Claude会自动识别什么时候需要调用内部API,不需要你写复杂的提示词
- 所有请求都经过权限校验,不会泄露敏感数据
最重要的是,整个配置过程真的非常简单,我亲测30分钟就能跑通。
准备工作
首先你需要准备好这几样东西:
- 一个可以正常使用的Claude API Key(没有的话去Anthropic官网申请,几分钟就搞定)
- 你公司内部API的访问地址和权限
- 一台能同时访问公网和内部网络的服务器(做MCP代理用)
- 基础的Node.js/Python环境就行,不用什么复杂的依赖
哦对了,官方有现成的MCP SDK,直接用就行,不用自己从零写协议实现。
第一步:搭建MCP代理服务
我用的是Node.js版本的SDK,写起来最方便。
首先初始化项目:
bash
mkdir claude-mcp-proxy
cd claude-mcp-proxy
npm init -y
npm install @anthropic-ai/mcp-server express cors
然后创建一个server.js文件,核心代码非常简单:
javascript
const { MCPServer } = require('@anthropic-ai/mcp-server');
const express = require('express');
const cors = require('cors');
const app = express();
app.use(cors());
app.use(express.json());
// 初始化MCP服务器
const mcpServer = new MCPServer({
// 定义你要暴露给Claude的工具
tools: [
{
name: "query_internal_user_data",
description: "查询公司内部的用户数据,根据用户ID返回用户信息",
parameters: {
type: "object",
properties: {
user_id: {
type: "string",
description: "要查询的用户ID"
}
},
required: ["user_id"]
},
// 工具调用的具体实现
handler: async (params) => {
const { user_id } = params;
// 这里调用你公司的内部API
const response = await fetch(`https://internal-api.your-company.com/users/${user_id}`, {
headers: {
"Authorization": "Bearer YOUR_INTERNAL_API_TOKEN"
}
});
return await response.json();
}
},
// 你可以在这里加更多的内部API工具
{
name: "query_order_statistics",
description: "查询订单统计数据,可以按日期范围查询",
parameters: {
type: "object",
properties: {
start_date: { type: "string", description: "开始日期,格式YYYY-MM-DD" },
end_date: { type: "string", description: "结束日期,格式YYYY-MM-DD" }
},
required: ["start_date", "end_date"]
},
handler: async (params) => {
const { start_date, end_date } = params;
const response = await fetch(`https://internal-api.your-company.com/orders/statistics?start=${start_date}&end=${end_date}`, {
headers: { "Authorization": "Bearer YOUR_INTERNAL_API_TOKEN" }
});
return await response.json();
}
}
]
});
// 暴露MCP接口
app.post('/mcp', async (req, res) => {
const result = await mcpServer.handleRequest(req.body);
res.json(result);
});
// 启动服务
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`MCP代理服务运行在 http://localhost:${PORT}`);
});
是不是超简单?你只要把内部API的地址和参数改一下就行,其他的SDK都帮你处理好了。
启动服务:
bash
node server.js
现在你的MCP代理服务就跑起来了。
第二步:配置Claude使用你的MCP服务
接下来需要告诉Claude,有这么个MCP服务可以用。
如果你用的是官方的Claude API,调用的时候加个mcp_endpoints参数就行:
python
from anthropic import Anthropic
client = Anthropic(api_key="YOUR_ANTHROPIC_API_KEY")
response = client.messages.create(
model="claude-3-opus-20240229",
max_tokens=1024,
messages=[
{"role": "user", "content": "帮我查一下用户ID为12345的用户信息,还有2026年4月的订单统计"}
],
# 在这里配置你的MCP服务地址
mcp_endpoints=[
"https://your-mcp-proxy-server.com/mcp"
]
)
print(response.content[0].text)
就这么简单!Claude会自动识别用户的问题需要调用哪些工具,然后自动去你的MCP服务调用对应的接口,再把结果整合到回答里。
你根本不用写任何提示词告诉它怎么调用API,MCP协议会自动处理所有的参数校验和格式转换。
第三步:测试效果
我测试的时候,问的问题是"帮我查一下用户ID 12345的信息,还有4月的订单总金额"。
Claude自动做了这几件事:
- 识别到需要调用两个工具:
query_internal_user_data和query_order_statistics - 自动提取参数:user_id=12345,start_date=2026-04-01,end_date=2026-04-30
- 调用我的MCP代理服务,拿到两个接口的返回结果
- 把结果整合起来,用自然语言回答我
整个过程不到3秒,完全不需要人工干预,效果真的惊到我了。
踩坑记录
我在配置的过程中也踩了几个坑,大家注意避坑:
1. 内网访问问题
MCP代理服务必须同时能访问公网和内网,不然Claude的请求过来了,但是访问不了内部API。
我一开始把代理服务部署在了公网服务器上,访问不了内部API,折腾了半天。后来改成部署在公司的VPN网络里,对外暴露一个公网端口就好了。
2. 权限校验
千万不要把MCP服务直接暴露在公网上不加任何校验!
我是在MCP服务前面加了一层API Key校验,只有Anthropic的官方IP段才能访问,避免被人恶意调用内部API。
官方文档里有最新的Anthropic IP段列表,直接配置到nginx或者服务层就行。
3. 参数校验
虽然MCP SDK会自动校验参数,但是最好在handler里再加一层业务校验,避免传入非法参数导致内部API出错。
比如用户ID的格式、日期范围的合法性之类的,多一层校验没坏处。
4. 超时时间
内部API的响应可能比较慢,记得把MCP服务的超时时间设长一点,我设的是30秒,足够大部分内部接口响应了。
扩展玩法
搞定基础功能之后,我还扩展了几个好用的功能:
- 加了调用日志,所有的工具调用都记录下来,方便排查问题
- 加了权限控制,不同的用户角色只能调用对应的API
- 加了缓存,相同的查询请求直接返回缓存结果,不用每次都调用内部API
- 加了更多的工具,比如查询内部知识库、创建工单、发送内部通知之类的
现在我们团队的客服、运营甚至产品同学,都直接用Claude查内部数据,不用再找技术同学跑数了,效率提升了至少一倍。
写在最后
说实话,MCP协议真的是我最近半年见过的最实用的AI开发协议。
之前想给大模型接外部工具,要么用复杂的Function Calling提示词工程,要么用各种第三方中间件,麻烦得要死。
现在有了MCP,你只要专注写自己的业务逻辑就行,其他的都交给协议处理。
整个配置过程真的只有30分钟,推荐所有做AI落地的同学都试试。
如果配置过程中遇到问题,欢迎评论区留言,我看到都会回复。