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 APIAI可以直接调用企业系统实现真正意义上的自然语言操作业务系统。本文将通过一个完整案例讲解如何将REST API快速封装为MCP Tool并接入Claude、Cursor等支持MCP的AI客户端。一、为什么REST API是企业AI最重要的入口目前绝大多数企业系统都支持REST API。例如ERP │ ├── GET /orders ├── POST /orders ├── GET /inventory └── PUT /inventoryCRMCRM │ ├── GET /customer ├── GET /customer/{id} ├── POST /customer └── PUT /customerAI并不需要直接访问数据库。真正推荐的架构应该是Claude / Cursor ↓ FastMCP ↓ REST API ↓ ERP / CRM ↓ 数据库这样不仅安全而且不会影响企业现有系统架构。二、准备开发环境安装FastMCPpip 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 fhttps://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): responserequests.get( fhttps://crm.company.com/customer/{customer_id} ) return response.json()用户查询10086客户。AI自动调用query_customer()无需人工指定。七、创建订单接口不仅可以查询。还可以创建。例如ERPPOST /ordersPythonapp.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, timeout5) 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架构