UNPKG

youling-task

Version:

基于POMDP的研发任务分解工具,支持MCP协议

75 lines 2.09 kB
/** * 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