当前位置: 首页 > news >正文

MCP协议实战:30分钟给Claude接上你公司的内部API

上周给团队做Claude落地,折腾了半天怎么让它访问内部API,最后发现MCP协议真的香,30分钟就搞定了。今天把完整流程写出来,大家直接抄作业就行。

为什么要给Claude接内部API?

说实话,现在用大模型做开发的同学,90%都遇到过这个问题:
大模型训练数据都是公开的,根本不知道你公司内部的业务数据,也没法调用你内部的系统接口。
之前我们为了让Claude能查内部的用户数据,搞了个很蠢的方案:每次让用户把数据导出来,复制粘贴到对话框里。
不仅麻烦,还容易泄露敏感数据,而且数据量大的时候根本没法弄。
直到上个月Anthropic官方推出了MCP(Model Context Protocol)协议,完美解决了这个问题。

MCP到底是什么?

简单来说,MCP就是一套让大模型安全访问外部服务的标准协议。
你可以把它理解成大模型和外部系统之间的"翻译官":

  • 你公司的内部API不需要改任何代码,只要写个简单的MCP适配器就行
  • Claude会自动识别什么时候需要调用内部API,不需要你写复杂的提示词
  • 所有请求都经过权限校验,不会泄露敏感数据
    最重要的是,整个配置过程真的非常简单,我亲测30分钟就能跑通。

准备工作

首先你需要准备好这几样东西:

  1. 一个可以正常使用的Claude API Key(没有的话去Anthropic官网申请,几分钟就搞定)
  2. 你公司内部API的访问地址和权限
  3. 一台能同时访问公网和内部网络的服务器(做MCP代理用)
  4. 基础的Node.js/Python环境就行,不用什么复杂的依赖

哦对了,官方有现成的MCP SDK,直接用就行,不用自己从零写协议实现。

第一步:搭建MCP代理服务

我用的是Node.js版本的SDK,写起来最方便。
首先初始化项目:

mkdirclaude-mcp-proxycdclaude-mcp-proxynpminit-ynpminstall@anthropic-ai/mcp-server express cors

然后创建一个server.js文件,核心代码非常简单:

const{MCPServer}=require('@anthropic-ai/mcp-server');constexpress=require('express');constcors=require('cors');constapp=express();app.use(cors());app.use(express.json());// 初始化MCP服务器constmcpServer=newMCPServer({// 定义你要暴露给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;// 这里调用你公司的内部APIconstresponse=awaitfetch(`https://internal-api.your-company.com/users/${user_id}`,{headers:{"Authorization":"Bearer YOUR_INTERNAL_API_TOKEN"}});returnawaitresponse.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;constresponse=awaitfetch(`https://internal-api.your-company.com/orders/statistics?start=${start_date}&end=${end_date}`,{headers:{"Authorization":"Bearer YOUR_INTERNAL_API_TOKEN"}});returnawaitresponse.json();}}]});// 暴露MCP接口app.post('/mcp',async(req,res)=>{constresult=awaitmcpServer.handleRequest(req.body);res.json(result);});// 启动服务constPORT=process.env.PORT||3000;app.listen(PORT,()=>{console.log(`MCP代理服务运行在 http://localhost:${PORT}`);});

是不是超简单?你只要把内部API的地址和参数改一下就行,其他的SDK都帮你处理好了。
启动服务:

nodeserver.js

现在你的MCP代理服务就跑起来了。

第二步:配置Claude使用你的MCP服务

接下来需要告诉Claude,有这么个MCP服务可以用。
如果你用的是官方的Claude API,调用的时候加个mcp_endpoints参数就行:

fromanthropicimportAnthropic 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自动做了这几件事:

  1. 识别到需要调用两个工具:query_internal_user_dataquery_order_statistics
  2. 自动提取参数:user_id=12345,start_date=2026-04-01,end_date=2026-04-30
  3. 调用我的MCP代理服务,拿到两个接口的返回结果
  4. 把结果整合起来,用自然语言回答我
    整个过程不到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秒,足够大部分内部接口响应了。

扩展玩法

搞定基础功能之后,我还扩展了几个好用的功能:

  1. 加了调用日志,所有的工具调用都记录下来,方便排查问题
  2. 加了权限控制,不同的用户角色只能调用对应的API
  3. 加了缓存,相同的查询请求直接返回缓存结果,不用每次都调用内部API
  4. 加了更多的工具,比如查询内部知识库、创建工单、发送内部通知之类的
    现在我们团队的客服、运营甚至产品同学,都直接用Claude查内部数据,不用再找技术同学跑数了,效率提升了至少一倍。

写在最后

说实话,MCP协议真的是我最近半年见过的最实用的AI开发协议。
之前想给大模型接外部工具,要么用复杂的Function Calling提示词工程,要么用各种第三方中间件,麻烦得要死。
现在有了MCP,你只要专注写自己的业务逻辑就行,其他的都交给协议处理。
整个配置过程真的只有30分钟,推荐所有做AI落地的同学都试试。
如果配置过程中遇到问题,欢迎评论区留言,我看到都会回复。

http://www.jsqmd.com/news/667085/

相关文章:

  • 逆向(二):CALL的实战构建与线程注入
  • G-Helper终极指南:让你的华硕笔记本飞起来的免费神器
  • 如何高效使用ComfyUI-Inpaint-CropAndStitch:智能局部修复技术完全指南
  • OrigamiSimulator:如何在浏览器中实现实时3D折纸模拟与应力分析?
  • 手把手教你理解MIPI CSI-2的RAW10数据打包:从像素到字节流的保姆级拆解
  • 从零构建智能商品分类系统:BERT微调、混合精度训练到FastAPI部署全解析
  • 国产洗瓶机|施启乐(广州)仪器有限公司 - 品牌推荐大师
  • 2026国产SCARA机械臂选型指南:电子装配与分拣品牌深度分析 - 品牌种草官
  • 数据库安全性与完整性 - 软考备战(三十三)
  • WarcraftHelper终极指南:魔兽争霸3全版本完美兼容解决方案
  • AGI伦理丑闻爆发后必须立即执行的5步响应清单(含真实监管约谈话术模板)
  • 如何在Windows 10/11上完美运行经典DirectX游戏:DDrawCompat终极指南
  • 综述 电解液中的 磺酸酯类添加剂
  • 【仅限首批200家认证企业开放】AGI营销成熟度评估矩阵V2.1:含12维动态评分与定制化优化路径图
  • J-Link-OB改造版 vs 正版J-Link:除了价格,调试STM32还有哪些差异和限制?
  • 从‘烦恼的高考志愿’到‘高效的二分查找’:洛谷P1678如何帮你理解算法抽象与建模
  • 病区清洗消毒设备|施启乐(广州)仪器有限公司 - 品牌推荐大师
  • 全网无水印视频下载终极指南:3步轻松获取微信视频号、抖音、快手等平台资源
  • 手把手教你用Simulink搭建电池双向DC/DC模型:从Buck/Boost模式到ADRC+FCS-MPC实战
  • GoB插件深度指南:3天精通Blender与ZBrush无缝协作
  • Xilinx FIFO IP核实战避坑:手把手教你搞定安全电路与读写时序(Vivado 2021.3)
  • Windows 11 先装,Arch Linux 后装:UEFI 双系统启动菜单避坑全记录
  • 软工毕业设计简单的题目分享
  • TTP223触摸模块的‘点动’和‘自锁’到底怎么选?一份给单片机新手的避坑指南
  • VNP46A1和VNP46A2怎么选?搞懂NASA‘黑大理石’夜间灯光数据的月光校正与适用场景
  • 全自动洗瓶机厂家|施启乐(广州)仪器有限公司 - 品牌推荐大师
  • 038 编辑距离 动态规划
  • 不止于修改器:用Cheat Engine的Lua脚本和D3D Hook给你的单机游戏‘加MOD’
  • 别再只用get()了!Java Stream中filter+findAny的3种安全写法与避坑指南
  • 给实验室萌新的投稿避坑指南:CCF、中科院分区与‘黑名单’期刊全解析