MCP异步网桥服务器
MCP桥接服务器并添加异步处理功能MCP服务器。
机能
- 非同期化:现有MCP服务器上的所有工具
sync添加参数(默认值:async) - 超时处理:如果在1秒内没有响应,则返回执行控制手柄
- 状况确认:异步工具的运行状况管理和取消功能
- 资源/预订:
task://{taskId}中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。resources/subscribe可在中预订更新
安装,安装
1.安装相关性
npm install2.构建
npm run build3. 実行
npm start4.开发模式
npm run dev设定
环境变数
MCP_TARGET_SERVER:桥接位置MCP服务器命令(例如:python server.py)MCP_TIMEOUT_MS:超时时间(毫秒,默认值:1000)MCP_ENV:目标MCP声明要传递给进程的环境变量(以空格分隔)。
- 形式: ::= NAME | NAME=VALUE 空格 - VALUE 可缩放为壳式(“…”为文字,“…”/非缩放为 $VAR ${VAR} 展开,退出\\$ - 值省略时 NAME="$NAME" (从当前环境复制) - 按声明顺序级联展开(可在后一段引用之前定义的变量) - 例: MCP_ENV='FOO=abc BAR="$FOO-suf" BAZ=${BAR}-end'
MCP_WORKDIR:目标MCP进程工作目录(未指定时继承)
默认情况下未指定的环境变量: PATH, HOME, SHELL(为了安全,不显示值)。
VS Code调试
此项目包括MCP包含设置(.vscode/mcp.json)。VS Code的MCP可以调试为服务器。
体系结构
组件
- 异步桥接服务器:主要MCP服务器
- 目标服务器代理:现有MCP服务器代理
- AsyncTaskManager:管理异步任务
- 超时处理程序:超时处理
交付工具
桥接工具
- 现有MCP服务器上的所有工具
sync添加参数 - 缺省情况下异步运行
sync: true执行同步
请求有效载荷格式
Model Context Protocol 的规格,通过桥的工具调用如下 arguments 请将原始参数存储在对象中。
{
"arguments": {
"a": 1,
"b": 2
},
"sync": false // 省略時は false(非同期実行)
}与现有客户端兼容的顶级参数 (例: { "a": 1, "b": 2 })也自动 arguments 将条目添加到文档注册表 为了符合规格,建议以上述形式使用。
管理工具
async_list_pending_tasks:未完成的异步任务列表async_get_task_result:获取任务结果(完成时打开句柄)async_cancel_task:取消正在运行的任务
响应获取资源和预订
- 桥波
resources发布功能task://{taskId}中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。 - 启动异步工具时的响应
ResourceLink(task://{taskId}),模板名称将采用不同的格式。 - 客户机通过以下流程跟踪最新状态:。
resources/subscribe的task://{taskId}预订- 从服务器
notifications/resources/updated收到的话 resources/read的task://{taskId}(JSON:status,result)
例(概念):
// リソース購読
{
"method": "resources/subscribe",
"params": { "uri": "task://" }
}
// 更新通知(サーバー→クライアント)
{
"method": "notifications/resources/updated",
"params": { "uri": "task://" }
}
// リソース読み取り
{
"method": "resources/read",
"params": { "uri": "task://" }
}使用例
// 非同期実行(デフォルト)
const handle = await callTool('some_tool', { param: 'value' });
// 同期実行
const result = await callTool('some_tool', { param: 'value', sync: true });
// 非同期結果の確認
const tasks = await callTool('async_list_pending_tasks');
const result = await callTool('async_get_task_result', { taskId: handle });开発
项目结构
src/
├── index.ts # エントリーポイント
├── server/
│ ├── AsyncBridgeServer.ts # メインサーバー
│ └── TargetServerProxy.ts # プロキシ実装
├── async/
│ ├── TaskManager.ts # タスク管理
│ └── TimeoutHandler.ts # タイムアウト処理
├── types/
│ └── index.ts # 型定義
└── utils/
└── logger.ts # ログ機能测试
npm test许可证
麻省理工学院
