import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { commandQueue } from '../queue/command-queue.js';
import { commandRegistry } from '../registry.js';
import type { CommandType } from '../registry.js';
export function registerTools(server: McpServer): void {
for (const [name, def] of Object.entries(commandRegistry)) {
server.tool(
name,
def.description,
def.schema.shape,
async (args: Record<string, unknown>) => {
const id = commandQueue.enqueue(name as CommandType, args);
try {
const result = await commandQueue.waitForResult(id);
return {
content: [{
type: 'text' as const,
text: JSON.stringify({
...(result.nodeId ? { nodeId: result.nodeId } : {}),
success: !result.error,
...(result.error ? { error: result.error } : {})
})
}]
};
} catch (error) {
return {
content: [{
type: 'text' as const,
text: JSON.stringify({ error: (error as Error).message, success: false })
}],
isError: true
};
}
}
);
}
}