FastMCP + REST API实战:让AI一键调用企业ERP、CRM和第三方系统
关键词:FastMCP、REST API、MCP、Python、ERP、CRM、AI Agent、Claude Desktop、Cursor、企业数字化
如今,大多数企业都已经拥有自己的业务系统,例如:
ERP(企业资源计划)
CRM(客户关系管理)
OA(办公自动化)
MES(制造执行系统)
WMS(仓储管理系统)
财务系统
人力资源系统
这些系统几乎都提供了REST API,但普通员工并不会直接调用API。
例如,销售人员可能只是想问一句:
"今天新增了多少客户?"
或者:
"帮我查询订单A20260716001的状态。"
过去,这些需求通常需要登录系统、查找菜单,甚至编写接口调用代码。
而借助FastMCP + REST API,AI可以直接调用企业系统,实现真正意义上的自然语言操作业务系统。
本文将通过一个完整案例,讲解如何将REST API快速封装为MCP Tool,并接入Claude、Cursor等支持MCP的AI客户端。
一、为什么REST API是企业AI最重要的入口?
目前,绝大多数企业系统都支持REST API。
例如:
ERP │ ├── GET /orders ├── POST /orders ├── GET /inventory └── PUT /inventoryCRM:
CRM │ ├── GET /customer ├── GET /customer/{id} ├── POST /customer └── PUT /customerAI并不需要直接访问数据库。
真正推荐的架构应该是:
Claude / Cursor ↓ FastMCP ↓ REST API ↓ ERP / CRM ↓ 数据库这样不仅安全,而且不会影响企业现有系统架构。
二、准备开发环境
安装FastMCP:
pip install mcp安装HTTP请求库:
pip install requests如果需要异步调用:
pip install httpx在高并发场景下,更推荐使用httpx配合异步请求,以提升整体性能。
三、假设ERP提供了订单接口
例如:
GET /api/orders/10001返回:
{ "id":10001, "customer":"张三", "status":"已发货", "amount":3560 }以前。
开发者需要:
requests.get(...)现在。
只需要封装成:
MCP Tool。
四、封装第一个REST Tool
例如:
from mcp.server.fastmcp import FastMCP import requests app = FastMCP("ERP") @app.tool() def query_order(order_id: int): """ 查询订单信息 """ url = f"https://erp.company.com/api/orders/{order_id}" response = requests.get(url) return response.json()就是这么简单。
AI以后:
可以直接:
调用:
query_order()五、Claude如何调用?
例如:
用户输入:
查询10001订单。
后台:
LLM ↓ 发现: query_order() ↓ HTTP GET ↓ ERP ↓ JSON ↓ AI整理回复最终:
AI回答:
订单10001已发货,客户张三,订单金额3560元。
整个过程无需用户了解API地址或参数。
六、再开发一个CRM接口
例如:
@app.tool() def query_customer(customer_id:int): response=requests.get( f"https://crm.company.com/customer/{customer_id}" ) return response.json()用户:
查询10086客户。
AI:
自动调用:
query_customer()无需:
人工指定。
七、创建订单接口
不仅可以查询。
还可以:
创建。
例如:
ERP:
POST /ordersPython:
@app.tool() def create_order(customer_id:int,amount:float): ... return response.json()以后。
用户:
给客户10086创建一张500元订单。
后台:
LLM ↓ create_order() ↓ POST ↓ ERP ↓ 成功真正实现:
AI办公。
建议:对于创建、修改、删除等写操作,建议增加人工确认机制,例如要求AI先生成待执行内容,待用户确认后再真正调用Tool。
八、为什么不要让AI自己拼URL?
很多新人会这样设计:
@app.tool() def request(url):然后:
AI:
自己:
拼接。
URL。
这种设计:
风险极大。
例如:
/admin/delete /admin/config /internal都有可能:
被访问。
推荐:
固定:
接口。
例如:
query_customer() query_order() query_stock() query_sales()而不是开放一个万能HTTP请求工具。
九、接口认证如何处理?
企业REST API通常需要认证,例如:
Authorization: Bearer xxxxxxxxx不要让AI生成Token。
推荐:
服务器统一管理:
headers = { "Authorization": "Bearer " + TOKEN }Token应保存在环境变量、配置中心或密钥管理服务中,而不是硬编码到代码里。
这样:
AI:
永远不知道:
Token。
十、统一封装HTTP客户端
如果每个Tool都写:
requests.get(...)项目会越来越乱。
建议:
services/ ↓ erp_client.py ↓ crm_client.py例如:
class ERPClient: def query_order(): ... def create_order(): ... def query_stock(): ...Tool:
只负责:
调用。
@app.tool() def query_order(id): return erp.query_order(id)企业项目:
都这样:
分层。
十一、多个系统如何统一管理?
例如:
企业:
有:
ERP CRM OA HR MESFastMCP:
可以:
统一:
暴露。
ERP Tool CRM Tool OA Tool HR ToolAI:
统一:
调用。
用户:
甚至不知道:
后台:
调用了:
几个系统。
例如:
帮我查询张三今天有没有请假,如果没有,请创建一个出差申请。
后台可能完成:
HR ↓ 查询请假 ↓ OA ↓ 创建审批 ↓ 返回成功这就是AI Agent的价值。
十二、错误处理与重试
REST API不可避免会遇到超时、网络异常或服务不可用等问题。
建议在Tool中统一处理:
try: response = requests.get(url, timeout=5) response.raise_for_status() return response.json() except requests.Timeout: return { "success": False, "message": "请求超时,请稍后重试。" } except requests.RequestException as e: return { "success": False, "message": f"接口调用失败:{str(e)}" }同时,可以根据业务需要增加有限次数的自动重试,避免因临时网络波动导致任务失败。
十三、企业级REST API最佳实践
实际项目中,建议遵循以下原则:
| 实践建议 | 说明 |
|---|---|
| 工具职责单一 | 一个Tool完成一个业务动作,例如查询订单或创建客户。 |
| 统一HTTP客户端 | 所有API调用集中管理,便于维护认证、日志和重试。 |
| 参数校验 | 检查必填项、数据类型和业务规则。 |
| 敏感信息保护 | Token、密钥使用环境变量或配置中心管理。 |
| 写操作需确认 | 创建、修改、删除操作增加用户确认步骤。 |
| 日志审计 | 记录接口调用、参数、耗时和结果,便于排查问题。 |
十四、一个完整的企业AI调用流程
假设用户输入:
帮我查询今天新增客户,并统计成交金额最高的前5位客户。
后台可能执行:
用户 ↓ Claude / Cursor ↓ FastMCP ↓ query_new_customers() ↓ CRM API ↓ query_top_sales() ↓ ERP API ↓ JSON数据 ↓ AI分析 ↓ 生成报表整个过程中,AI并没有直接访问数据库,而是通过标准化的MCP Tool调用已有REST API,实现跨系统协同。
总结
对于绝大多数企业来说,接入AI并不意味着重构现有系统。
如果你的ERP、CRM、OA等业务系统已经提供REST API,那么只需通过FastMCP进行简单封装,就能让AI以自然语言调用这些能力。
推荐的架构如下:
Claude / Cursor ↓ FastMCP Tool ↓ ERP / CRM Client ↓ REST API ↓ 业务系统这种方式具有几个明显优势:
复用现有系统能力:无需改造数据库或业务逻辑。
安全可控:认证、权限和日志都集中在服务端管理。
易于扩展:新增一个API,通常只需增加一个Tool即可。
适合企业级AI Agent:能够跨多个系统完成复杂业务流程。
对于希望构建企业AI助手的团队来说,FastMCP + REST API是一种兼顾开发效率、安全性和可维护性的实践方案。
本文知识点
✅ FastMCP封装REST API
✅ ERP、CRM接口接入
✅ GET与POST工具设计
✅ HTTP认证管理
✅ API客户端分层设计
✅ 异常处理与重试
✅ 企业级AI Agent架构