用 28 行代码实现 MCP 服务,兼容任意 MCP 客户端

只需 28 行代码,你就可以搭建一个 MCP 服务,完美适配 Cursor、Windsurf、Claude Code、Zed 等任意支持 MCP 协议的客户端。让我们一探究竟,看看这个小巧而强大的服务是如何实现的!

工作原理

  • MCP 协议:MCP(Model Context Protocol)是一种专为 AI 模型与工具交互设计的协议。它让 AI 工具能够轻松调用外部服务和 API,扩展功能。
  • 功能示例:当客户端调用名为 "getWeather" 的工具并传入城市名称时,服务器会返回一条消息:"The weather in {城市名} is sunny!"。
  • 数据验证:借助 Zod 库,确保输入的 city 参数是有效的字符串类型,保障数据可靠性。
  • 通信方式:通过标准输入/输出(stdio)作为传输层,使得服务可以在命令行环境中无缝运行。

代码解读

以下是实现这一服务的完整逻辑,简洁却功能强大:

  1. 导入依赖

javascript

javascript 复制代码
import { McpServer } from "modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
  • McpServer:核心类,用于创建 MCP 服务器。
  • StdioServerTransport:处理标准输入输出的通信模块。
  • zod:轻量级数据验证库,确保参数格式正确。
  1. 创建服务器

javascript

vbscript 复制代码
const server = new McpServer({
  name: "Weather Service",
  version: "1.0.0"
});
  • 初始化一个 MCP 服务器,命名为 "Weather Service",版本号为 "1.0.0"。
  1. 定义工具

javascript

css 复制代码
server.addTool({
  name: "getWeather",
  description: "Get the weather for a city",
  inputSchema: z.object({
    city: z.string().describe("The name of the city")
  }),
  execute: async ({ city }) => {
    return {
      content: `The weather in ${city} is sunny!`
    };
  }
});
  • 工具名称:getWeather,用于获取城市天气。
  • 输入验证:使用 Zod 定义 city 参数为字符串类型,并附带描述。
  • 执行逻辑:接收 city 参数后,返回一条格式化的天气信息。
  1. 设置通信

javascript

ini 复制代码
const transport = new StdioServerTransport();
server.connect(transport);
  • 创建 StdioServerTransport 实例,负责通过 stdio 进行通信。
  • 将服务器绑定到该传输层,启动服务。

总结

仅用 28 行代码,这个 MCP 服务就实现了从搭建服务器到定义工具再到通信的全流程。它不仅展示了 MCP 协议的简洁性,也体现了对开发者友好的设计理念。无论是 Cursor、Windsurf,还是其他支持 MCP 的客户端,你都可以轻松集成这个服务,扩展 AI 工具的能力。

想试试看?复制代码,运行起来,让你的客户端与 "Weather Service" 互动吧!

相关推荐
救救孩子把4 小时前
MCP本地高效与云端实时:stdio 与 HTTP+SSE 传输机制深度对比
网络·网络协议·http·sse·mcp·stdio
带刺的坐椅2 天前
SpringBoot3 使用 SolonMCP 开发 MCP
java·ai·springboot·solon·mcp
华为云开发者联盟2 天前
MCP与华为云CSE珠联璧合,打造AI时代微服务生态引擎
微服务·mcp·华为云ecs
带刺的坐椅3 天前
SpringBoot2 可以使用 SolonMCP 开发 MCP(江湖救急)
java·spring·ai·solon·mcp
key_3_feng3 天前
中国版Cursor:基于CodeBuddy与EdgeOne Pages的在线键盘测试工具开发方案
mcp·codebuddy·edgeonepage
小白跃升坊3 天前
【网站推荐】推荐几个MCP(Model Context Protocol,模型上下文协议)的网站
ai·mcp
江小皮不皮3 天前
为何选择MCP?自建流程与Anthropic MCP的对比分析
人工智能·llm·nlp·aigc·sse·mcp·fastmcp
爬呀爬的水滴5 天前
工具篇-如何在Github Copilot中使用MCP服务?
copilot·mcp
带刺的坐椅5 天前
jFinal 使用 SolonMCP 开发 MCP(拥抱新潮流)
java·ai·solon·jfinal·mcp
菜鸟分享录5 天前
MCP 入门实战:用 C# 开启 AI 新篇章
ai·c#·semantic kernel·mcp