import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
import { createAgentWithMCP } from '../agent.js'
import { HumanMessage } from '@langchain/core/messages'
const server = new McpServer({
name: "genius-agent-mcp",
version: "1.0.0"
});
server.registerTool(
"genius_agent",
{
title: "Genius智能助手",
description: "一个功能强大的AI助手,可以处理各种任务和问题",
inputSchema: z.object({
messages: z.array(z.object({
role: z.string(),
content: z.string()
}))
})
},
async ({ messages }) => {
try {
const langChainMessages = messages.map(msg => {
if (msg.role === 'user') {
return new HumanMessage(msg.content)
}
return new HumanMessage(msg.content)
})
const initializedAgent = await createAgentWithMCP()
const result = await initializedAgent.invoke(
{ messages: langChainMessages },
{ configurable: { thread_id: `thread_${Date.now()}` } }
)
const responseMessage = result.messages[result.messages.length - 1]
return {
content: [{
type: "text",
text: responseMessage.content
}]
}
} catch (error) {
console.error('Error in genius_agent tool:', error)
return {
content: [{
type: "text",
text: `Error: ${error.message}`
}]
}
}
}
);
async function startMcpServer() {
try {
const stdioTransport = new StdioServerTransport();
await server.connect(stdioTransport);
process.stderr.write('Genius Agent MCP Server running over stdio\n');
} catch (error) {
process.stderr.write(`Failed to start MCP server: ${error.message}\n`);
process.exit(1);
}
}
startMcpServer();