首页/AI自动化/构建并提供 MCP (模型上下文协议) 服务器
AI自动化需要一定基础

构建并提供 MCP (模型上下文协议) 服务器

预估收入:未提及未提及见收入

本文介绍如何利用 MCP 协议构建一个标准化的 AI 工具服务器。通过将特定 API 封装为 MCP 服务器,开发者可以一次性实现集成,使其能被多种 AI 代理框架通用,从而提高 AI 工具的开发效率和兼容性。

使用工具

TypeScriptNode.jsMCP (Model Context Protocol)HTTP API

从零构建MCP服务器:把HTTP API变成AI Agent的工具

构建并提供 MCP (模型上下文协议) 服务器

在AI开发圈子里,重复造轮子是个老问题。每换一个Agent框架,就要为同一个API写一套新的适配代码。MCP(模型上下文协议)的出现改变了这种局面:它给工具集成定义了一个稳定的协议边界。你只需要实现一次服务器,任何兼容MCP的客户端都能直接使用。

本文用一个真实场景——问题追踪系统的集成——带你从零搭建并测试一个MCP服务器。整个过程使用TypeScript和Node.js,不依赖特定的厂商SDK。最终,你的Agent可以通过自然语言查询未解决问题,而模型本身不需要知道HTTP细节。

为什么需要MCP服务器

假设你有一个问题追踪API,比如GET /v1/issues?project=OPS&status=open&limit=10。如果没有MCP,你想让LLM调用它,就得为每个Agent框架写单独的适配器:LangChain写一个工具,AutoGPT再写一个,以后换个框架又得重写。

MCP把这一切标准化。你只需构建一个MCP服务器,将API封装成一个工具,比如search_open_issues。服务器的职责是校验输入、调用API、规范化响应,返回模型可以直接理解的紧凑结果。之后,任何支持MCP的Agent主机都能连接这个服务器,而无需改动业务逻辑。

这就像在闲鱼或猪八戒网上接单:你只需要提供一个标准服务入口,客户(Agent框架)通过统一协议来调用你,不需要关心你的具体实现。

架构与协议边界

整个链路分为三层:

  • API客户端:负责认证、超时处理、HTTP状态码判断和响应规范化。
  • MCP服务器:负责工具发现、输入校验、工具描述和协议格式的结果输出。
  • Agent主机:负责模型提示词、工具调用审批、对话状态和停止条件。

这种分离意味着,未来你从某个Agent框架切换到另一个,只要新框架支持MCP,你的问题追踪适配器完全不用改。

准备项目

用TypeScript启动一个Node.js项目,安装必要的依赖。建议使用@modelcontextprotocol/sdk作为MCP协议实现,用dotenv管理环境变量,用tsxts-node运行TypeScript代码。

环境变量中设置ISSUE_TRACKER_API_URLISSUE_TRACKER_TOKEN,不要将凭据硬编码到源码里。这样账号信息安全,也方便在不同环境间切换。

构建HTTP API客户端

这一层是纯粹的业务代码,与MCP无关。创建一个http-client.ts文件,封装对上游API的请求。核心功能包括:

  • 拼接请求URL,处理查询参数。
  • 发送带Bearer Token的HTTPS请求。
  • 处理非200响应,抛出可读的错误信息。
  • 将响应JSON规范化为统一的Issue[]接口。

这里的关键是保持客户端的纯粹性。你可以在测试中单独验证它,而无需启动MCP服务器。

实现MCP服务器

MCP服务器的主要工作是定义工具。使用SDK提供的Server类和McpServer接口,注册search_open_issues工具。

工具定义包含:

  • 输入模式:使用JSON Schema描述参数,比如projectKey是必填字符串,limit是可选数字。
  • 处理函数:校验参数后调用HTTP客户端,将结果转换为MCP的CallToolResult结构。
  • 错误处理:捕获异常并返回错误消息,让Agent知道问题所在。

可选地,还可以实现一个getProjectStatus工具,但本文聚焦一个工具,足够演示完整流程。

测试服务器:不经过模型

不要急着连接LLM。先用一个简单的MCP客户端测试服务器是否能正常工作。在测试文件中,通过stdio与服务器建立会话,调用listTools确认工具存在,然后调用callTool传入参数,断言返回的结果。

这种确定性测试是必要的。它能在不消耗token的情况下验证整个链路,包括输入校验、API调用和响应格式化。你甚至可以伪造一个本地HTTP服务来模拟上游API,实现完全自动化测试。

连接到LLM Agent

当服务器通过测试后,就可以接入Agent。一个典型的Agent循环如下:

  • 用户提问:"OPS项目有多少未解决的问题?"
  • Agent主机加载系统提示词,包含可用的工具列表。
  • 模型决定调用search_open_issues,生成一个工具调用请求。
  • MCP客户端将该请求转发给服务器,服务器执行HTTP调用。
  • 结果返回给模型,模型总结成自然语言回复用户。

你可以在Node.js中使用openaianthropicSDK,配合MCP客户端库实现。关键点:模型不直接接触HTTP,只看到工具名称、描述和返回的数据,这大大降低了出错的概率。

验证完整路径

建议构建一个端到端测试脚本,模拟用户提问,断言最终回复中包含预期的问题数量。用nockmsw拦截HTTP请求,让测试稳定且不依赖外部系统。

同时,检查服务器是否正确处理了空结果、超大响应和部分失败。这些边界情况决定了你的工具在真实场景中的可靠程度。

失败场景与加固

生产环境中的MCP服务器不能只处理理想路径。你需要考虑:

  • 上游API超时:设置合理的超时时间,例如10秒,超时后返回明确错误。
  • 认证失败:捕获401/403,提示用户重新配置token。
  • 输入不合法:如果缺少projectKey,返回参数校验错误,而不是用默认值默默运行。
  • 协议兼容:确保你使用的SDK版本与客户端匹配,避免消息格式不一致。

加固思路是:暴露给模型的信息必须简洁且有效。不要返回原始HTTP响应,而是提取关键字段,如idtitlestatus,让模型能够快速理解。

局限性与未来方向

本文构建的MCP服务器只是一个起点。它处理了一个简单工具的调用,但真实场景中通常有多个工具、复杂认证和分页数据。下一步可以考虑:

  • 将工具扩展为多个,并处理好工具之间的依赖。
  • 支持OAuth2动态令牌,而不是静态Bearer Token。
  • 将服务器发布到npm或Docker Hub,方便其他开发者通过MCP市场安装。
  • 在服务器中增加遥测和日志,方便观测Agent调用行为。

MCP的价值在于标准化。当你把API集成做成MCP服务器,它就能被所有支持MCP的Agent复用。这就像在淘宝服务市场发布一个标准API接口,买家只需按协议接入,不用关心你的实现语言和部署环境。

如果你正在将现有项目接入AI Agent,试着为你的API写一个MCP层。用TypeScript快速上手,用测试确保稳定,然后连接任意LLM。你会发现,工具集成不再是每个框架都要重写一次的重复劳动。

想要进一步提升开发效率,可以参考AI工具实战笔记中关于协议标准化的具体应用案例。

相关推荐

AI自动化

为软件工具构建并发布 GitHub Actions 工作流

该方法通过为现有的 CLI 工具(如 cxgrd)开发 GitHub Actions 工作流,将手动操作转化为自动化的 CI/CD 流程。通过在 PR 中自动发布分析结果,降低了工具的使用门槛,旨在通过提升用户体验来推动开源工具或软件产品的采用率和增长。

不适用
AI自动化

利用 rtk 工具降低 AI Agent Token 成本

本文介绍了一种通过 rtk (Rust Token Killer) 工具降低 AI 编程助手 Token 消耗的方法。rtk 通过压缩 shell 命令(如 git diff, ps aux)的输出结果,在保留核心信息的同时减少了约 48% 的 token 使用量,从而有效降低 AI 开发成本。

不适用
AI自动化

基于AI Agent的工程团队PR代码审查工作流

本文提出了一种利用AI Agent优化工程团队代码审查(PR)的方法。核心观点是:不要让AI直接写代码,而应让其承担枯燥的“机械化验证”工作(如检查边缘情况、命名规范、移动端适配等),从而让资深工程师专注于架构判断。实测显示,这种工作流每天可为每位工程师节省约30分钟。

无法直接衡量(通过提升人效实现,预计每位工程师每天节省30分钟)
AI自动化

AI驱动的自由职业运营流程优化

该方法并非直接教你如何通过AI创作内容,而是教自由职业者如何利用AI优化运营流程(报价、合同、财务、税务及需求管理)。通过将琐碎的行政工作自动化,减少利润流失,提高专业度并节省大量非计费时间。

取决于自由职业者的专业领域
AI自动化

利用SocialBu进行社交媒体管理与自动化运营

本文是对SocialBu平台的评测,该平台是一个现代化的SaaS和AI驱动的社交媒体管理工具,提供工作流自动化、团队协作及API集成功能,适用于快速增长的企业进行社交媒体内容的自动化运营。

未提及
AI自动化

利用SQL与脚本自动化重复性业务流程

本文分享了通过SQL和脚本将手动业务流程(如报告更新)转为自动化的经验。核心观点强调:自动化前需理解业务逻辑、识别高重复性环节、建立严格的数据验证与错误处理机制,最终目标是构建可信赖的自动化系统而非单纯编写代码。

不适用