MCP客户端套件
](https://www.npmjs.com/package/mcp-client-kit) ](https://www.npmjs.com/package/mcp-client-kit)
mcp-client-kit TypeScript/Node.js客户端库,用于连接到多个模型上下文协议(MCP)服务器,并通过统一接口聚合它们的功能。
特性
- 多服务器支持:同时连接到多个MCP服务器
- 多种传输协议:支持SSE、HTTP流和stdio传输
- JSON-RPC 2.0:完整的JSON-RPC 2.0协议实现
- 聚合API:与所有连接的服务器进行交互的统一界面
- TypeScript:完全支持TypeScript和类型定义
- 认证:内置对Bearer令牌身份验证的支持
安装
npm install mcp-client-kit快速开始
1.创建配置文件
创建一个 mcp_servers.json 项目根目录中的文件:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"d:/DevSpaces/MNTWS/CVAWS"
]
},
"canva-dev": {
"command": "npx",
"args": ["-y", "@canva/cli@latest", "mcp"]
},
"leo-sse-mcp": {
"type": "sse",
"url": "http://localhost:3000/sse",
"headers": {
"Authorization": "Bearer leo-dGluaHRkLmluZm9AZ21haWwuY29t"
}
}
}
}2.使用客户端
import { McpClient } from 'mcp-client-kit';
import * as path from 'path';
async function main() {
// Initialize the client
const configPath = path.join(process.cwd(), 'mcp_servers.json');;
const client = new McpClient(configPath);
try {
// Connect to all servers
await client.connect();
// List all available tools from all servers
const tools = await client.listTools();
console.log(`Found ${tools.length} tools`);
tools.forEach((tool) => {
console.log(`- [${tool.serverName}] ${tool.name}`);
});
// Call a specific tool
const result = await client.callTool('leo-sse-mcp', 'my-tool', {
param1: 'value1',
});
console.log('Result:', result);
} finally {
// Always disconnect when done
await client.disconnect();
}
}
main().catch(console.error);运输类型
SSE(服务器发送事件)
{
"type": "sse",
"url": "http://localhost:3000/sse",
"headers": {
"Authorization": "Bearer token"
}
}HTTP流
{
"type": "httpStream",
"url": "http://localhost:3000/stream",
"headers": {
"Authorization": "Bearer token"
}
}stdio(本地进程)
{
"type": "stdio",
"command": "node",
"args": ["./mcp-server.js"],
"env": {
"DEBUG": "mcp:*"
}
}API 参考
Mcp客户端
constructor(configPath: string)
创建新的MCP客户端实例。
configPath:通往mcp_servers.json配置文件
connect(): Promise
初始化并连接到所有已配置的服务器。
disconnect(): Promise
断开与所有服务器的连接。
listTools(): Promise
列出所有连接服务器中的所有工具。每个工具包括 serverName 属性,指示它属于哪个服务器。
listResources(): Promise
列出所有连接服务器的所有资源。
listPrompts(): Promise
列出来自所有连接服务器的所有提示。
callTool(serverName: string, toolName: string, params?: unknown): Promise
在特定服务器上执行特定工具。
serverName:服务器名称(来自配置)toolName:要调用的工具的名称params:工具的可选参数
readResource(serverName: string, uri: string): Promise
从特定服务器读取资源。
getPrompt(serverName: string, promptName: string, args?: Record): Promise
从特定服务器获取提示。
getConnectedServers(): string[]
获取已连接服务器名称的列表。
isServerConnected(serverName: string): boolean
检查是否连接了特定服务器。
示例
请参阅 示例 更多使用示例的目录:
basic-usage.ts-基本客户端使用advanced-usage.ts-高级功能和错误处理stdio-transport.ts-对本地服务器使用stdio传输
测试
该库在 测试 目录:
快速测试(单服务器)
npm run test:quick全面测试(所有服务器)
npm run test:all本地服务器测试
npm run test:local发展
构建
npm run build观看模式
npm run build:watch运行单元测试
npm test棉绒
npm run lint建筑
有关更详细的体系结构信息,请参见 项目_结构.md.
文档
其他文件可在 文档 目录:
- 项目_结构.md -详细的项目结构和架构
许可证
麻省理工学院
贡献者
由我和克劳德发起,我希望尽可能简单透明地为这个项目做出贡献。所以,只需简单地进行更改,然后创建PR
