youling-task
Version:
基于POMDP的研发任务分解工具,支持MCP协议
75 lines • 2.09 kB
JavaScript
/**
* MCP stdio模式辅助工具
* 用于标准输入/输出流通信中的MCP协议支持
*/
/**
* 检测是否为MCP CLI模式
* @param args 命令行参数
* @returns 是否为CLI模式
*/
export function isMcpCliMode(args) {
// 根据命令行参数判断是否为MCP CLI模式
// 这里可以根据实际需求调整判断逻辑
// 例如检查是否有--stdio或--mcp-stdio参数
return args.includes('--stdio') || args.includes('--mcp');
}
/**
* 发送MCP就绪状态消息
* 这是MCP协议在stdio模式下必须的第一个消息
* @param serverInfo 服务器信息
*/
export function sendMcpReadyStatus(serverInfo) {
// 创建就绪状态消息,符合MCP协议规范
const statusMessage = {
jsonrpc: '2.0',
method: 'server/status',
params: {
status: 'ready',
mode: 'stdio',
name: serverInfo.name,
version: serverInfo.version,
protocol: 'MCP (JSON-RPC 2.0)',
streaming: true,
supported_methods: ['register', 'tools/list', 'tools/call']
}
};
// 输出到stdout作为第一个消息
// 注意:这里使用console.log而不是自定义logger
// 这是为了确保消息直接输出到stdout
console.log(JSON.stringify(statusMessage));
}
/**
* 发送JSON-RPC响应
* @param result 结果
* @param id 请求ID
*/
export function sendJsonRpcResponse(result, id) {
const response = {
jsonrpc: '2.0',
result,
id
};
console.log(JSON.stringify(response));
}
/**
* 发送JSON-RPC错误响应
* @param code 错误代码
* @param message 错误消息
* @param id 请求ID
* @param data 可选的错误数据
*/
export function sendJsonRpcError(code, message, id, data) {
const errorResponse = {
jsonrpc: '2.0',
error: {
code,
message
},
id
};
if (data !== undefined) {
errorResponse.error.data = data;
}
console.log(JSON.stringify(errorResponse));
}
//# sourceMappingURL=stdio-helper.js.map