本指南将帮助您开始构建 MCP 客户端。我们将使用 TypeScript SDK,但这些概念适用于所有语言。

本指南假设您已经安装了 Node.js 16+ 和 npm

创建新项目

首先创建一个新的 npm 项目并安装依赖:

mkdir my-mcp-client
cd my-mcp-client
npm init -y
npm install @mcp/sdk typescript ts-node @types/node

基本客户端

创建 client.ts 文件:

import { Client } from "@mcp/sdk";

const client = new Client({
  name: "example-client",
  version: "1.0.0"
});

// 连接到服务器
await client.connect("stdio", {
  command: "python server.py"
});

// 获取服务器信息
const info = await client.getServerInfo();
console.log("已连接到:", info.name);

处理资源

访问服务器资源:

// 列出可用资源
const resources = await client.resources.list();
console.log("可用资源:", resources);

// 读取资源内容
const content = await client.resources.read("file:///hello.txt");
console.log("资源内容:", content);

// 监听资源变化
client.resources.watch("file:///data.json", (content) => {
  console.log("资源已更新:", content);
});

使用工具

调用服务器工具:

// 列出可用工具
const tools = await client.tools.list();
console.log("可用工具:", tools);

// 调用计算器工具
const result = await client.tools.call("calculator", {
  operation: "add",
  a: 5,
  b: 3
});
console.log("计算结果:", result);

使用提示

处理服务器提示:

// 列出可用提示
const prompts = await client.prompts.list();
console.log("可用提示:", prompts);

// 执行问候提示
const greeting = await client.prompts.execute("greet", {
  name: "世界"
});
console.log("问候语:", greeting);

错误处理

实现健壮的错误处理:

try {
  await client.resources.read("file:///不存在.txt");
} catch (error) {
  if (error.code === "NOT_FOUND") {
    console.error("资源未找到");
  } else {
    console.error("发生错误:", error.message);
  }
}

事件处理

监听客户端事件:

// 监听连接状态
client.on("connected", () => {
  console.log("已连接到服务器");
});

client.on("disconnected", () => {
  console.log("与服务器断开连接");
});

// 监听错误
client.on("error", (error) => {
  console.error("发生错误:", error);
});

运行客户端

使用 ts-node 运行客户端:

npx ts-node client.ts

下一步