youling-agent-mcp
Version:
MCP服务器实现POMDP研发任务拆解
63 lines (56 loc) • 1.51 kB
JavaScript
/**
* MCP stdio模式辅助工具
* 用于标准输入/输出流通信中的MCP协议支持
*/
/**
* 检测是否为MCP CLI模式
* @param {string[]} args 命令行参数
* @returns {boolean} 是否为CLI模式
*/
export function isMcpCliMode(args) {
// 通过检查环境变量和命令行参数判断是否为stdio模式
return args.includes('--stdio') ||
args.includes('--mcp') ||
process.env.transportType === 'stdio';
}
/**
* 发送MCP就绪状态消息
* @param {object} serverInfo 服务器信息
*/
export function sendMcpReadyStatus(serverInfo) {
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
}
};
// 直接写入stdout,避免console.log可能添加的额外字符或格式
process.stdout.write(JSON.stringify(statusMessage) + '\n');
}
/**
* 发送JSON-RPC错误响应
* @param {number} code 错误代码
* @param {string} message 错误消息
* @param {string|number|null} id 请求ID
* @param {any} [data] 可选的错误数据
*/
export function sendJsonRpcError(code, message, id, data) {
const errorResponse = {
jsonrpc: '2.0',
error: {
code,
message
},
id
};
if (data !== undefined) {
errorResponse.error.data = data;
}
process.stdout.write(JSON.stringify(errorResponse) + '\n');
}