, ,

MCP 开发

官方SDK 非业务代码,一般就会封装出来。 使用@modelcontextprotocol/sdk可以更方便的…

官方SDK

非业务代码,一般就会封装出来。

使用@modelcontextprotocol/sdk可以更方便的开发MCP Server

npm install @modelcontextprotocol/sdk

server.js

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
import fs from "fs";

const server = new McpServer({
  name: "my mcp server",
  version: "0.1.0",
});

// 注册一个工具
server.registerTool(
  "sum", // 工具名称
  {
    title: "两数求和",
    description: "得到两个数的和",
    inputSchema: {
      a: z.number().describe("第一个数"),
      b: z.number().describe("第二个数"),
    },
  },
  ({ a, b }) => {
    // 正常的工具(函数)的逻辑
    return {
      content: [
        {
          type: "text",
          text: `两个数的和为${a + b}`,
        },
      ],
    };
  }
);

server.registerTool(
  "createFile",
  {
    title: "创建文件",
    description: "在指定目录下创建一个文件",
    inputSchema: {
      filename: z.string().describe("文件名"),
      content: z.string().describe("文件内容"),
    },
  },
  ({ filename, content }) => {
    try {
      fs.writeFileSync(filename, content);
      return {
        content: [
          {
            type: "text",
            text: `文件创建成功!`,
          },
        ],
      };
    } catch (err) {
      return {
        content: [
          {
            type: "text",
            text: err.message || "文件创建失败!",
          },
        ],
      };
    }
  }
);

const transport = new StdioServerTransport(); // 创建一个 stdio 的传输通道
server.connect(transport); // 进行连接

对接AI应用程序

常见的AI应用程序:

  • ChatGPT
  • DeepSeek Chat Page
  • Claude Desktop
  • VSCode
  • Cursor

凡是支持 MCP 协议的 AI 应用,就可以充当客户端,连接 MCP 服务器。

此时可以通过 MCP 服务器扩宽大模型的能力边界。

工具是谁调用,大模型调用么?

不是大模型调用,大模型只接收 输入输出

所以大模型会回复:我需要调用 XXX 工具。

两个核心概念:

  • MCP Host: 往往指代AI应用本身,用于发现MCP Server以及其中的工具列表
  • MCP Client: 用于和MCP Server通信的客户端,往往在Host内部开启,通常情况下,每启动一个MCP Server,就会开启一个MCP Client

例如:

  1. 在Claude Desk 中打开一个新的聊天窗口
  2. Claude查看当前启用了哪些MCP Server
  3. Claude(host)为每个MCP Server创建一个Client
  4. 每个Client分别启动各自的MCP Server,并且进行了2次通信,一次是初始化,另外一次是tools/list。
  5. 当时机到达时(要调用工具的时候),每个Client负责调用各自的工具并把结果传递给Host
  6. Host根据结果处理后续逻辑

Previous Post

Next Post

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

About the Author

每个人都有自己得时区,在自己得时区里,一切都是准时的。

BlockSpare — News, Magazine and Blog Addons for (Gutenberg) Block Editor