mcpField
M
mcp-z-client

mcp-z-client

github.com/mcp-z开发1110 次安装3 周前更新
代码仓库

关于 mcp-z-client

用于管理 MCP 服务配置、启动、连接、能力发现、调用和清理的 JavaScript 客户端库。它以带类型的数据处理工具、提示词和资源响应,并提供表示转换辅助方法。

主要功能

  1. 01管理 MCP 服务配置
  2. 02通过 HTTP 或 stdio 启动和连接
  3. 03发现并调用工具、提示词和资源
  4. 04转换响应表示形式
  5. 05关闭受管理的客户端和进程

适用场景

  1. 01连接多个 MCP 服务
  2. 02启动并使用本地服务
  3. 03检查和测试服务能力

MCP 相关

它管理 MCP 服务的配置与连接,并发现和调用工具、提示词及资源。也可关闭受管理的客户端和已启动进程。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mcp-z/client --skill mcp-z-client

安装后在 Claude Code 中输入/mcp-z-client确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

resources/
automated-testing.md
connect-public-server.md
discover-capabilities.md
embedded-cluster.md
multiple-servers.md
spawn-local-server.md

详细介绍

@mcp-z/client

@mcp-z/client 用于管理 MCP 服务配置、进程启动、连接、发现、调用和清理。工具、提示词和资源调用会返回常规响应,其中包含类型化的 MCP 数据和表示辅助方法。

安装

npm install @mcp-z/client

在自行编写配置之前,请先读取使用该客户端的项目现有 MCP 配置。标准 .mcp.json 会将条目存储在 mcpServers 下。

使用客户端

HTTP 条目包含 type: 'http'。Stdio 条目使用 command,并可选使用 args 和 env。

registry.close() 会关闭所有受管理的客户端和已启动的进程。请将其放在 finally 中;如果使用该客户端的运行时和项目惯例支持显式资源管理,也可以使用 await using registry = createServerRegistry(config)。

工具名称和架构由已连接的服务定义,而非本技能定义。调用不熟悉的工具前,请先调用 client.listTools(),并使用返回的输入架构。发现操作是只读的。工具调用可能会更改外部状态,因此调用必须限于用户要求的操作。

便捷方法接受简单参数:

  • client.callTool(name, args)
  • client.getPrompt(name, args)
  • client.readResource(uri)

工具响应会公开 content、structuredContent、isError 和 _meta;提示词响应会公开 description、messages 和 _meta;资源响应会公开 contents 和 _meta。json() 和 text() 辅助方法会保留其转换语义。对于工具,如果存在 structuredContent,json() 会返回该内容;否则会解析第一个文本块。使用 JSON.stringify(response) 可序列化完整的 MCP 结果,包括扩展内容。

等待 callTool() 的结果时,如果 MCP 结果的 isError 为真,则会抛出 ToolResponseError;其 response 会保留完整的 MCP 错误结果。协议和传输错误会继续向上传播。解析失败或内容不兼容错误会在调用 json() 或 text() 时发生。

示例

连接选项

createServerRegistry(config, { cwd, env, dialects }) 用于控制已启动的进程。提供 env 会替换基础环境,而不是与 process.env 合并。

默认的 dialects: ['servers'] 会启动使用 command 的 stdio 条目。带有 start 块的 HTTP 条目需要设置 dialects: ['start'];如果两种形式都应启动,则需要设置 ['servers', 'start']。

registry.connect(name, { versionNegotiation: { mode: 'auto' } }) 会探测当前协议修订版本,并在失败时回退到旧版序列。只有调用方要求使用特定协议时,才固定协议修订版本。

评论

支持 Markdown