/**
* Tool registration and handlers
*/
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { CallToolRequestSchema } from "@modelcontextprotocol/sdk/types.js";
import { analyzeCodebase } from "./analyze-codebase.js";
import { generateContext } from "./generate-context.js";
import { updateContext } from "./update-context.js";
import { extractPatterns } from "./extract-patterns.js";
import { analyzeDependencies } from "./analyze-dependencies.js";
import { watchProject } from "./watch-project.js";
import { extractApiSurface } from "./extract-api-surface.js";
import { validateContext } from "./validate-context.js";
import { enrichContext, formatEnrichedContext } from "./enrich-context.js";
export function registerTools(server: Server) {
server.setRequestHandler(CallToolRequestSchema, async (request) => {
const { name, arguments: args } = request.params;
try {
if (!args) {
throw new Error("Missing arguments");
}
switch (name) {
case "analyze_codebase":
return await analyzeCodebase(args as any);
case "enrich_context": {
const result = await enrichContext(args as any);
const formatted = formatEnrichedContext(result);
return {
content: [
{
type: "text",
text: formatted,
},
],
};
}
case "generate_context":
return await generateContext(args as any);
case "update_context":
return await updateContext(args as any);
case "extract_patterns":
return await extractPatterns(args as any);
case "analyze_dependencies":
return await analyzeDependencies(args as any);
case "watch_project":
return await watchProject(args as any);
case "extract_api_surface":
return await extractApiSurface(args as any);
case "validate_context":
return await validateContext(args as any);
default:
throw new Error(`Unknown tool: ${name}`);
}
} catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error);
return {
content: [
{
type: "text",
text: `Error executing ${name}: ${errorMessage}`,
},
],
isError: true,
};
}
});
}