一个用于运行MCP(模型上下文协议)服务器的TypeScript SDK和CLI工具。
mcp-runner旨在根据cline_mcp_settings.json中定义的配置来简化MCP服务器的执行。它支持可重用的服务器进程和受控清理,允许使用同一个服务器实例进行多次操作。
您可以通过命令行调用它,也可以在自己的TypeScript项目中作为库使用,甚至可以从其他MCP服务器中使用。
npm install
该包包括一个与MCP服务器交互的命令行接口。
列出指定MCP服务器的所有可用工具:
npm run cli -- list-tools <server-name>
示例:
npm run cli -- list-tools sequential-thinking
运行指定的MCP服务器,可选工具名称和参数:
npm run cli -- runserver <server-name> [tool-name] [params] [options]
# 或
npm run cli -- runserver <server-name> [params] [options] # 使用第一个可用工具
选项:
--text: 输出响应中的纯文本内容而不是完整的JSON示例:
# 运行特定工具
npm run cli -- runserver sequential-thinking sequentialthinking '{"thought": "初始想法", "thoughtNumber": 1, "totalThoughts": 5, "nextThoughtNeeded": true}'
# 使用第一个可用工具
npm run cli -- runserver sequential-thinking '{"thought": "初始想法", "thoughtNumber": 1, "totalThoughts": 5, "nextThoughtNeeded": true}'
# 输出纯文本内容
npm run cli -- runserver sequential-thinking sequentialthinking '{"thought": "初始想法", "thoughtNumber": 1, "totalThoughts": 1}' --text
import { runServer, terminateServer } from 'mcp-runner';
async function main() {
try {
// 第一次调用(特定工具)
const result1 = await runServer('openrouterai', 'chat_completion', {
messages: [
{ role: 'user', content: '说你好!' }
]
});
console.log('结果 1:', result1);
// 第二次调用(使用第一个可用工具)
const result2 = await runServer('openrouterai', undefined, {
messages: [
{ role: 'user', content: '你好吗?' }
]
});
console.log('结果 2:', result2);
// 所有操作完成后终止服务器
await terminateServer();
} catch (error) {
console.error('错误:', error);
await terminateServer();
}
}
SDK 包含全面的错误处理:
使用提供的参数在指定服务器上运行工具。服务器进程将在显式终止之前被后续调用重用。
参数:
serverName: 配置中的服务器名称params: 传递给服务器工具的参数返回:解决为服务器响应的Promise
终止由SDK管理的服务器进程。应在所有操作完成后调用。
返回:服务器终止时解决的Promise
ServerManager类实现为单例,负责MCP服务器进程的生命周期管理。主要职责包括:
管理器确保任何时候只有一个服务器进程在运行,并提供启动、重用和终止服务器的方法。
SDK从标准配置目录中的cline_mcp_settings.json读取服务器配置。每个服务器配置包括:
{
"command": "string",
"args": "string[]",
"env": "Record<string, string>",
"disabled": "boolean",
"alwaysAllow": "string[]"
}
npm run build
npm test
此项目根据Mozilla Public License 2.0许可 - 详情见LICENSE文件。
欢迎贡献!请随意提交Pull Request。