AIHero
    02 / 06模型上下文协议教程

    通过标准输出提供 MCP 服务器

    只用一个 TypeScript 文件搭建 MCP 服务器,并连接 Claude Code、顺畅运行脚本。

    Matt Pocock
    Matt Pocock
    源代码下一课
    本页目录

    我将展示搭建 MCP Server 最简单的方法。

    我们会创建一个 MCP Server,把它连接到 Claude Code,再通过它运行任意脚本。

    整个过程只使用一个 TypeScript 文件,而且不需要构建步骤。

    开始吧。

    Server

    首先创建一个 main.ts 文件。

    接下来初始化一个 McpServer:

    import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
    const server = new McpServer({
    name: "Weather Service",
    version: "1.0.0",
    });

    这个 MCP Server 来自 @modelcontextprotocol/sdk 包。

    滚动式代码讲解

    1

    接下来可以向 Server 添加工具。首先定义工具名称: getWeather.

    2

    然后定义工具运行时需要接收的参数。这里仅需要 city,它是一个字符串,并使用 Zod 进行定义。

    3

    最后添加一个仅在工具被调用时运行的回调函数。它返回内容对象数组;在本例中,返回的是文本,并说明该地点天气晴朗。

    如果要真正实现这个功能,就应该在该函数中调用天气 API。

    server.tool("getWeather");

    至此 Server 已经完成,但还需要一种方式让 Claude Code 与它通信。

    Claude Code 会运行这个文件,并通过 stdin 与其通信。

    为了实现这一点,可以使用 StdioServerTransport from @modelcontextprotocol/sdk.

    先定义 Transport,再把 Server 连接到该 Transport。

    import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
    const transport = new StdioServerTransport();
    await server.connect(transport);

    连接 Claude Code

    现在可以在 Claude Code 中运行 claude mcp add。这会启动交互式对话,让你选择想要连接的 Server。

    目前 Claude Code 只支持 stdio Transport,而这正是我们使用的方式。

    上方视频演示了交互式操作步骤,不过也可以通过一条命令完成:

    claude mcp add "weather-example" npx tsx "/path-to-the-file.ts"

    这会告诉 Claude:要运行该文件,应调用 npx tsx /path-to-the-file.ts.

    npx ,它允许我们直接运行 npm. tsx 是无需构建步骤即可运行 TypeScript 文件的绝佳方式。随后传入文件路径即可。

    这样就可以运行 claude 并与 MCP Server 通信。可以查看上方视频中的演示。

    它为什么很酷?

    这项能力非常棒,因为它让我们无需配置构建步骤或服务器,就能把任意 TypeScript 函数连接到 Claude Code。

    这是自定义 Claude Code 实例的强大方式,也适用于 Cursor、Windsurf 等其他 MCP Host。

    随着越来越多桌面应用开始集成 MCP,这将成为使用自定义能力扩展这些应用的强大方式。

    登录以保存进度。