@opichi/smartcode
Version:
Universal code intelligence MCP server - analyze any codebase with TypeScript excellence and multi-language support
96 lines • 3.15 kB
JavaScript
/**
* Lightweight Code Intelligence MCP Server
* Provides fast, precise code analysis without ML dependencies
*/
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 { codeIntelligenceTools, codeIntelligenceHandlers } from './tools/code-intelligence.js';
/**
* Create and configure the MCP server
*/
function createServer() {
const server = new Server({
name: 'opichi-smartcode',
version: '0.3.0',
}, {
capabilities: {
tools: {},
},
});
// List available tools
server.setRequestHandler(ListToolsRequestSchema, async () => {
return {
tools: codeIntelligenceTools
};
});
// Handle tool calls
server.setRequestHandler(CallToolRequestSchema, async (request) => {
const { name, arguments: args } = request.params;
try {
// Route to appropriate handler
const handler = codeIntelligenceHandlers[name];
if (!handler) {
return {
content: [{
type: 'text',
text: `Unknown tool: ${name}`
}]
};
}
return await handler(args || {});
}
catch (error) {
return {
content: [{
type: 'text',
text: `Error executing tool ${name}: ${error instanceof Error ? error.message : String(error)}`
}]
};
}
});
return server;
}
/**
* Start the MCP server
*/
async function main() {
const server = createServer();
const transport = new StdioServerTransport();
// Log startup to stderr (not stdout which is used for MCP communication)
console.error('🚀 Code Intelligence MCP Server v0.3.0 starting...');
console.error('💡 Lightweight LSP-based analysis ready!');
try {
await server.connect(transport);
console.error('✅ Server connected and ready for requests');
}
catch (error) {
console.error('❌ Failed to start server:', error);
process.exit(1);
}
}
// Handle graceful shutdown
process.on('SIGINT', () => {
console.error('🛑 Received SIGINT, shutting down gracefully...');
process.exit(0);
});
process.on('SIGTERM', () => {
console.error('🛑 Received SIGTERM, shutting down gracefully...');
process.exit(0);
});
// Start the server
main().catch((error) => {
console.error('💥 Fatal error:', error);
process.exit(1);
});
async function runServer() {
const transport = new StdioServerTransport();
await server.connect(transport);
console.error("🧠 Opichi Smartcode v0.2.0 running on stdio");
console.error("Semantic code intelligence ready!");
}
runServer().catch((error) => {
console.error("Fatal error running server:", error);
process.exit(1);
});
//# sourceMappingURL=index-old.js.map