backend / src /mcp-server.ts
delqhi's picture
Deploy backend agent
3c7404b verified
Raw
History Blame Contribute Delete
2.61 kB
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
import { executeBackendAgentAction, BackendAgentAction } from './runtime.js';
const server = new Server(
{ name: 'sin-backend', version: '2026.03.22' },
{ capabilities: { tools: {} } },
);
server.setRequestHandler(ListToolsRequestSchema, async () => {
return {
tools: [
{
name: 'sin_backend_health',
description: 'Check 2026 Elite Backend Architect readiness.',
inputSchema: { type: 'object', properties: {} },
},
{
name: 'sin_backend_code_generate',
description: 'Generate Supabase and Agentic Backend architectures.',
inputSchema: {
type: 'object',
properties: {
prompt: { type: 'string' },
contextDir: { type: 'string' },
},
required: ['prompt'],
},
},
{
name: 'sin_backend_code_review',
description: 'Audit existing backends against 2026 standards.',
inputSchema: {
type: 'object',
properties: {
targetDir: { type: 'string' },
},
required: ['targetDir'],
},
},
],
};
});
server.setRequestHandler(CallToolRequestSchema, async (request) => {
try {
let action: BackendAgentAction;
if (request.params.name === 'sin_backend_health') {
action = { action: 'sin.backend.health' };
} else if (request.params.name === 'sin_backend_code_generate') {
const args = request.params.arguments as any;
action = { action: 'sin.backend.code.generate', prompt: args.prompt, contextDir: args.contextDir };
} else if (request.params.name === 'sin_backend_code_review') {
const args = request.params.arguments as any;
action = { action: 'sin.backend.code.review', targetDir: args.targetDir };
} else {
throw new Error(`Unknown tool: ${request.params.name}`);
}
const result = await executeBackendAgentAction(action);
return {
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
};
} catch (error: any) {
return {
content: [{ type: 'text', text: `Error: ${error.message}` }],
isError: true,
};
}
});
export async function runMcpServer() {
const transport = new StdioServerTransport();
await server.connect(transport);
console.error('A2A-SIN-Code-Backend MCP Server running on stdio');
}