写点什么

手把手教你搭建 MCP 服务器

  • 2025-08-27
    黑龙江
  • 本文字数:1947 字

    阅读完需:约 6 分钟

在 AI 智能体开发领域,Model Context Protocol(MCP) 正迅速成为连接大模型与外部工具的黄金标准。通过 MCP 协议,开发者无需修改 AI 核心代码,即可让 Claude、Cursor 等智能体调用私有数据库、本地命令行甚至云服务。本文将详解两种主流搭建方案,带你构建专属的 AI 工具扩展引擎。


测试开发全景图:人工智能测试、智能驱动、自动化、测试开发、左移右移与DevOps的持续交付



一、MCP 核心价值:为什么它成为 AI 开发新范式?

MCP 协议的本质是标准化工具调用接口,解决了传统 AI 开发的三大痛点:


  1. 碎片化集成:每个 AI 应用需单独开发插件适配不同工具

  2. 安全风险:直接暴露 API 密钥或数据库连接给大模型

  3. 开发效率:工具变更需重新部署整个 AI 系统


通过 MCP 服务器,开发者可将任意能力封装成工具函数,AI 智能体通过统一协议发现和调用这些工具。例如:


  • 天气查询 → 封装为get_weather(city)函数

  • 数据库操作 → 封装为sql_query(query)函数

  • 本地命令执行 → 封装为run_command(cmd)函数



二、方案一:Python + FastMCP 极速搭建(适合轻量级工具)

环境准备

# 创建Python环境(推荐uv)uv init mcp-demo && cd mcp-demouv venv && source .venv/bin/activateuv add fastmcp requests  # 核心依赖
复制代码

工具函数开发

from fastmcp import FastMCPimport requests
mcp = FastMCP(name="Weather Tools")
@mcp.tooldef get_weather(city: str) -> dict: """ 获取城市实时天气 参数:city - 城市名称(如“北京”) 返回:JSON格式天气数据(温度/湿度/天气状况) """ api_url = f"https://weather-api.com/{city}" return requests.get(api_url).json()
复制代码

启动 MCP 服务器

# 本地stdio模式(适合Claude/Cursor本地连接)mcp.run(mode="stdio")
# 远程SSE模式(需配合Higress网关)mcp.run(transport="streamable-http", host="0.0.0.0")
复制代码


关键配置项说明


  • @mcp.tool:装饰器自动注册工具函数

  • mode="stdio":通过标准输入输出通信,无需网络

  • transport="streamable-http":支持云部署和远程调用



三、方案二:Nacos+Higress 企业级方案(零改造接入存量 HTTP 服务)

该方案适合已有 RESTful 服务的企业,无需重写代码即可接入 MCP 生态。

1. 环境部署(Docker)

# 创建共享网络docker network create mcp
# 启动Higress网关docker run -d --name higress -p 8080:8080 \ --network mcp higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/all-in-one:latest
# 启动Nacos注册中心docker run -d --name nacos -p 8848:8848 \ -e MODE=standalone --network mcp \ nacos-registry.cn-hangzhou.cr.aliyuncs.com/nacos/nacos-server:v3.0.1
复制代码

2. 配置 HTTP 服务转 MCP 协议

在 Nacos 控制台(http://localhost:8848):


  1. 进入 MCP Registry → 创建 MCP Server

  2. 添加工具转换配置:


{  "requestTemplate": {    "url": "http://your-service/weather", // 原服务地址    "method": "GET",    "argsToUrlParam": true  // 自动映射参数到URL  }}
复制代码


  1. 发布配置后,通过 Higress 端点访问:

  2. http://localhost:8080/mcp/weather/sse?city=北京



四、AI 客户端配置:让 Claude/Cursor 识别你的工具

▶ Claude Desktop 配置

编辑claude_desktop_config.json(位置参考):


{  "mcpServers": {    "weather-service": {      "command": "python",      "args": ["-m", "mcp_server", "--mode", "stdio"]    }  }}
复制代码

▶ Cursor 配置(项目级隔离)

在项目根目录创建.cursor/mcp.json


{  "mcpServers": {    "db-query": {      "url": "http://localhost:8080/mcp/sql/sse" // Higress暴露的端点    }  }}
复制代码



五、企业级应用场景:插件化释放 AI 生产力


高阶技巧:通过会话变量实现跨工具状态传递


# 在MCP工具中读写会话状态def place_order(user_id: str, product_id: str):    # 从会话获取用户VIP等级    vip_level = mcp.session.get(f"user_{user_id}.vip_level")    # 设置订单超时时间    mcp.session.set("order_expire", "2025-12-31 23:59:59")
复制代码



六、避坑指南:安全与性能优化实践

  1. 敏感数据隔离

  2. 使用环境变量存储 API 密钥

  3. Higress 网关自动过滤非常规参数

  4. 执行超时控制

  5. 在 FastMCP 中设置超时阈值:


   mcp = FastMCP(        name="SafeTools",        tool_timeout=10  # 强制超时(秒)    )
复制代码


  1. SSE 模式心跳检测

  2. 避免长连接中断:


   # Higress配置   mcpServer:     sse_heartbeat_interval: 30
复制代码


MCP 协议正在重塑 AI 开发范式——它让大模型从“封闭的大脑”进化为“可连接万物的神经系统”。无论是个人开发者快速扩展 AI 能力,还是企业整合遗留系统,MCP 都提供了标准化解决方案。


测试开发全景图:人工智能测试、智能驱动、自动化、测试开发、左移右移与DevOps的持续交付


当工具调用变得像呼吸一样自然,AI 才能真正成为生产力的延伸。

用户头像

社区:ceshiren.com 微信:ceshiren2023 2022-08-29 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料、实事更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬

评论

发布
暂无评论
手把手教你搭建MCP服务器_#人工智能_测吧(北京)科技有限公司_InfoQ写作社区