
MCP Server构建方式引言什么是MCPPython 服务的MCP Server开发基于Python的MCP 框架FastMCPFastAPI 项目Java 服务的MCP Server开发Higress网关Higress简介核心优势使用场景Higress Docker快速部署最后引言在AI大模型驱动浪潮下新的科技革命正在迅速的改变我们的生活和工作。软件开发也从1.02.0正在加速进入3.0时代。在软件3.0模式下大语言模型给软件架构提供了全新接口使得自然语言正在成为一种新的“编程语言”。大模型可以识别自然语言凭借自有知识可以与人类沟通对话但却无法直接执行相应的操作。如此MCP运营而生它被形象的称作LLM的手协助LLM完成必要的指令。本文重点讲述在传统服务中MCP Server的构建技术选型和部分案例以便助力传统服务的AI智能升级。文中的总结都是笔者亲手实践。什么是MCPMCP是一种开发协议皆在标准化LLM大模型与外部工具数据源之间的通信。它如同“AI界的USB-C接口” 统一了智能体与外部资源的交互方式是智能体的“万能工具手”。Python 服务的MCP Server开发基于Python的MCP 框架FastMCPFastMCP是构建MCP服务器和客户端的标准且完备的框架。最新2.0版本引入完整客户端支持服务器组合OpenAPI/FastAPI集成远程服务器代理内置测试工具等。服务端# pip install fastmcp2.10.3fromfastmcpimportFastMCPfrompydanticimportFieldimportos# 初始化 MCP 服务mcpFastMCP(python-mcp-server,sse_path/mcp/see)# 注册工具函数带类型注解和描述mcp.tool(nameget_weather,description查询指定城市的实时天气,)asyncdefget_weather(city:strField(description城市名称例如北京))-dict:模拟天气查询逻辑实际可接入第三方 APIreturn{city:city,temperature:25.3,condition:sunny,humidity:65%}# 带认证的中间件可选fromfastapiimportRequest,HTTPExceptionfromstarlette.middleware.baseimportBaseHTTPMiddlewareclassAuthMiddleware(BaseHTTPMiddleware):asyncdefdispatch(self,request:Request,call_next):ifrequest.headers.get(Authorization)!os.getenv(MCP_SECRET):raiseHTTPException(status_code401,detailUnauthorized)returnawaitcall_next(request)# 启动服务含认证if__name____main__:fromuvicornimportServer,Config# 方式一直接将mcp_sse_app()作为应用对象appmcp.sse_app()# 获取 SSE 应用对象# app.add_middleware(AuthMiddleware) # 添加认证中间件serverServer(Config(appapp,host0.0.0.0,port8080,reloadTrue))server.run()客户端# pip install asyncio fastmcp2.10.3importasynciofromfastmcpimportClientasyncdefmain():# 测试 mcp 客户端的功能asyncwithClient(http://127.0.0.1:8080/mcp/sse)asmcp_client:toolsawaitmcp_client.list_tools()print(fAvailable tools:{tools})resultawaitmcp_client.call_tool(get_weather,{city:北京})print(fResult:{result})if__name____main__:asyncio.run(main())FastAPI 项目如果Python服务为FastAPI项目可以通过FastAPI-MCP直接将现有api转换为MCP为智能体调用。FastAPI-MCP是一个能将FastAPI应用端点自能转为符合大模型上下文协议MCP的开源工具。通过解析FastAPI的OPenAPI文档实现零配置转换完整保留接口的请求/响应模型和Swagger文档。该工具支持直接集成到现有FastAPI应用中也可作为独立服务部署。# pip install fastapi-mcp0.3.7# pip install fastapi# pip install uvicornfromfastapiimportFastAPIfromfastapi_mcpimportFastApiMCP appFastAPI()# 定义接口# ····mcpFastApiMCP(app)# Mount the MCP server directly to your FastAPI appmcp.mount(mount_path/mcp,transportsse)if__name____main__:importuvicorn uvicorn.run(app,host0.0.0.0,port8080)服务启动后MCP client可以通过https://app.base.url/mcp进行访问。注意Python 3.10 (Recommended 3.12)Java 服务的MCP Server开发笔者公司的项目使用的java版本是8和11相对来说是很古老的。目前Java官方MCP SDK以及Spring-AI 要求Java 版本 17。经过查询发现solon-mcp这个国内开源轻量级mcp框架兼容低版本java8同时支持注解和编程式对sse和stdio协议友好。使用 SolonMCP可以支持 java8、java11、java17、java21 开发也可以内嵌到 SpringMVC 和 SpringBoot2 Web 里。项目的开源地址为https://gitee.com/opensolon/solon-ai-mcp-embedded-examples.git。Higress网关直接开发MCP Server无论是哪种技术框架都会涉及对原项目的侵入还得考虑对原项目的技术栈的兼容。这将会成为技术选型中不可避免的障碍。另一种选型方案为MCP Server网关。通过MCP网关无论是python的接口还是java的接口都可以进行注册形成一个统一个MCP服务平台实现对原有的系统架构的零侵入。Higress 是阿里开源的AI网关提供了MCP Server统一托管能力可以帮助AI Agent快速对接各类数据源。通过HigressAgent可以方便方位数据库REST API现存SSE Server等外部服务无需关心具体细节。其中数据库对接能力是网关内置能力而外部REST API可以通过简单的配置转换为MCP Server。Higress可以单独i实现MCP网关。但是对于复杂的大型微服务将会存在大量的配置管理工作。可以采用HigressNacos3.0来实现对微服务的管理和MCP协议转换达到零代码实现存量API到MCP协议的适配。Higress简介Higress是一款云原生 API 网关其内核基于Istio和Envoy。它可以使用 Go、Rust、JS 等编写 Wasm 插件并提供了数十个现成的通用插件以及开箱即用的控制台。核心优势生产等级Higress 脱胎于阿里巴巴多年生产验证的内部产品支持每秒请求量达数十万级的大规模场景。它彻底摆脱了 Nginx reload 引起的流量抖动配置变更毫秒级生效且业务无感对 AI 业务等长连接场景特别友好。便于扩展Higress 提供丰富的官方插件库涵盖 AI、流量管理、安全防护等常用功能满足90%以上的业务场景需求。通过沙箱隔离确保内存安全支持多种编程语言允许插件版本独立升级实现流量无损热更新网关逻辑。安全易用基于 Ingress API 和 Gateway API 标准提供开箱即用的 UI 控制台WAF 防护插件、IP/Cookie CC 防护插件开箱即用。支持对接 Let’s Encrypt 自动签发和续签免费证书并且可以脱离 K8s 部署一行 Docker 命令即可启动方便个人开发者使用。流式处理支持真正的完全流式处理请求/响应 BodyWasm 插件很方便地自定义处理 SSE Server-Sent Events等流式协议的报文。在 AI 业务等大带宽场景下可以显著降低内存开销。使用场景AI 网关Higress 能够用统一的协议对接国内外所有 LLM 模型厂商同时具备丰富的 AI 可观测、多模型负载均衡/fallback、AI token 流控、AI 缓存等能力。Kubernetes Ingress 网关Higress 可以作为 K8s 集群的 Ingress 入口网关并且兼容了大量 K8s Nginx Ingress 的注解可以从 K8s Nginx Ingress 快速平滑迁移到 Higress。支持 Gateway API 标准支持用户从 Ingress API 平滑迁移到 Gateway API。相比 ingress-nginx资源开销大幅下降路由变更生效速度有十倍提升。微服务网关Higress 可以作为微服务网关能够对接多种类型的注册中心发现服务配置路由例如 Nacos, ZooKeeper, Consul, Eureka 等。并且深度集成了 Dubbo, Nacos, Sentinel 等微服务技术栈基于 Envoy C 网关内核的出色性能相比传统 Java 类微服务网关可以显著降低资源使用率减少成本。安全防护网关Higress 可以作为安全防护网关提供 WAF 的能力并且支持多种认证鉴权策略例如 key-auth, hmac-auth, jwt-auth, basic-auth, oidc 等。参考Higress官网Higress Docker快速部署首先安装RedisMCP Server 的 SSE 功能需要依赖 Redis 服务用于数据缓存。可以使用以下命令在后台启动一个 Redis 服务容器并将其 6379 端口映射到本机。docker run -d --rm --name higress-redis -p 6379:6379 higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/redis-stack-server:7.4.0-v3安装Higressdocker run -d --rm --name higress-ai -v D:/higress:/data -p 8001:8001 -p 8080:8080 -p 8443:8443 higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/all-in-one:latest修改配置通过浏览器访问higress控制台http://localhost:8001 修改添加Redis配置apiVersion:v1kind:ConfigMapmetadata:name:higress-confignamespace:higress-systemcreationTimestamp:2000-01-01T00:00:00ZresourceVersion:1data:higress:|-mcpServer:sse_path_suffix:/sse# SSE 连接的路径后缀enable:true# 启用 MCP Serverredis:address:IP:6379# Redis服务地址。这里需要使用本机的内网 IP不可以使用 127.0.0.1username:# Redis用户名可选password:# Redis密码可选db:0# Redis数据库可选match_list:[]# MCP Server 会话保持路由规则当匹配下面路径时将被识别为一个 MCP 会话通过 SSE 等机制进行会话保持servers:[]downstream:# 以下配置无需修改此处省略Nacos3.0安装如果大型复杂微服务需要借助Nacosdocker run -d --name nacos -e MODEstandalone -e NACOS_AUTH_TOKENmXASd5girPWQQH8HgKwPpw/wHUlhWQPo3QS6iFm7d2U -e NACOS_AUTH_IDENTITY_KEYnacos.security.identity.key -e NACOS_AUTH_IDENTITY_VALUE1884bf51db5a5bee5cd2c22c29aeaa7c -p 8080:8080 -p 8848:8848 -p 9848:9848 nacos-registry.cn-hangzhou.cr.aliyuncs.com/nacos/nacos-server:v3.0.0浏览器访问http://ip:8080参考MCP Server 快速开始最后对于简单小型的项目可以直接采用相关兼容技术栈实现MCP服务避免在架构中引入Higress增加管理复杂度。如果项目所涉及的技术架构复杂或者想实现对原工程的零侵入HigressNacos是非常不错的选择。Higress是一款功能强大且灵活的云原生 API 网关适用于多种业务场景特别是在 AI 和微服务领域表现出色。愿你我都能在各自的领域里不断成长勇敢追求梦想同时也保持对世界的好奇与善意!