UNPKG

defect-inspection-tools-mcp-server

Version:

Defect inspection tools server handling defect detection, analysis, and reporting with AI/ML capabilities for quality control

106 lines 4.38 kB
/** * Defect Inspection Tools MCP Server * A server implementation using Model Context Protocol for defect inspection and quality control */ import { Server } from "@modelcontextprotocol/sdk/server/index.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { ListResourcesRequestSchema, ReadResourceRequestSchema, ListToolsRequestSchema, CallToolRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, ListResourceTemplatesRequestSchema } from "@modelcontextprotocol/sdk/types.js"; import { ToolHandler } from "./tools/index.js"; import { PromptHandler } from "./prompts/index.js"; import { ResourceHandler } from "./resources/index.js"; import { logger } from "./utils/logger.js"; import { toolDefinitions } from "./tools/schema.js"; async function main() { logger.info("Starting Defect Inspection Tools MCP server..."); const server = new Server({ name: "defect-inspection-tools-mcp-server", version: "1.0.0" }, { capabilities: { resources: { read: true, list: true, templates: true }, tools: { list: true, call: true }, prompts: { list: true, get: true } } }); const toolHandler = new ToolHandler(server); const promptHandler = new PromptHandler(server); const resourceHandler = new ResourceHandler(server); // Resources list server.setRequestHandler(ListResourcesRequestSchema, async () => { logger.info("Handling ListResourcesRequest"); const resources = resourceHandler.getResourceList(); return { resources }; }); // Resource read server.setRequestHandler(ReadResourceRequestSchema, async (request) => { logger.info("Handling ReadResourceRequest", { request }); const result = await resourceHandler.handleReadResource(request.params.uri); return result; }); // Empty resource templates server.setRequestHandler(ListResourceTemplatesRequestSchema, async () => { return { templates: [] }; }); // Tools list server.setRequestHandler(ListToolsRequestSchema, async (request) => { logger.info("Handling ListToolsRequest", { request }); let tools = [...toolDefinitions]; const params = request.params || {}; const category = params.category; const search = params.search; const includeDeprecated = params.include_deprecated; // Apply category filter if provided if (category) { tools = tools.filter(tool => { const toolName = tool.name.toLowerCase(); return toolName.includes(category.toLowerCase()); }); } // Apply search filter if provided if (search) { const searchTerm = search.toLowerCase(); tools = tools.filter(tool => tool.name.toLowerCase().includes(searchTerm) || (tool.description?.toLowerCase() || '').includes(searchTerm)); } // Filter out deprecated tools unless explicitly requested if (!includeDeprecated) { tools = tools.filter(tool => !tool.name.includes('deprecated')); } return { tools }; }); // Tool call server.setRequestHandler(CallToolRequestSchema, async (request) => { const result = await toolHandler.handleCallTool(request.params.name, request.params.arguments || {}); return { content: result }; }); // Prompts list server.setRequestHandler(ListPromptsRequestSchema, async () => { logger.info("Handling ListPromptsRequest"); const prompts = promptHandler.getPromptList(); return { prompts }; }); // Prompt get server.setRequestHandler(GetPromptRequestSchema, async (request) => { logger.info("Handling GetPromptRequest", { request }); const result = await promptHandler.handleGetPrompt(request.params.name, request.params.arguments); return result; }); // Connect to transport and start server const transport = new StdioServerTransport(); await server.connect(transport); } main().catch((error) => { logger.error("Fatal error:", error); process.exit(1); }); //# sourceMappingURL=index.js.map