Skip to main content
Glama
registerAllTools.ts4.46 kB
/** * Tool Registration - Central registration point for all tools * * This file uses the new ToolRegistry system to register all tools. */ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { ToolRegistry } from "./ToolRegistry.js"; import { adaptServerOnlyTool, adaptGeminiServiceTool, adaptNewGeminiServiceToolObject, adaptNewMcpClientServiceToolObject, } from "./ToolAdapter.js"; import { logger } from "../../utils/logger.js"; import { GeminiService } from "../../services/GeminiService.js"; import { McpClientService } from "../../services/mcp/McpClientService.js"; // Import tool registration functions import { geminiGenerateContentConsolidatedTool } from "../geminiGenerateContentConsolidatedTool.js"; import { geminiChatTool } from "../geminiChatTool.js"; import { geminiRouteMessageTool } from "../geminiRouteMessageTool.js"; // Image generation tools import { geminiGenerateImageTool } from "../geminiGenerateImageTool.js"; // --- Cache Tools --- import { geminiCacheTool } from "../geminiCacheTool.js"; // Code review tools import { geminiCodeReviewTool, geminiCodeReviewStreamTool, } from "../geminiCodeReviewTool.js"; import type { GeminiCodeReviewArgs } from "../geminiCodeReviewParams.js"; // URL Context tools import { geminiUrlAnalysisTool } from "../geminiUrlAnalysisTool.js"; // MCP tools import { mcpClientTool } from "../mcpClientTool.js"; // File utils tool import { writeToFileTool } from "../writeToFileTool.js"; /** * Register all tools with the MCP server using the new registry system * @param server MCP server instance * @returns McpClientService instance for managing connections */ export function registerAllTools(server: McpServer): McpClientService { logger.info("Initializing services and tool registry..."); // Create service instances const geminiService = new GeminiService(); const mcpClientService = new McpClientService(); // Create the tool registry const registry = new ToolRegistry(geminiService, mcpClientService); try { // Register all tools with appropriate adapters // Note: Example tool removed as per refactoring // Content generation tools registry.registerTool( adaptGeminiServiceTool( geminiGenerateContentConsolidatedTool, "geminiGenerateContentConsolidatedTool" ) ); // Chat tools registry.registerTool( adaptGeminiServiceTool(geminiChatTool, "geminiChatTool") ); registry.registerTool( adaptGeminiServiceTool(geminiRouteMessageTool, "geminiRouteMessageTool") ); // Image generation tools registry.registerTool( adaptNewGeminiServiceToolObject(geminiGenerateImageTool) ); // Cache management tools registry.registerTool( adaptGeminiServiceTool(geminiCacheTool, "geminiCacheTool") ); // URL Context tools registry.registerTool( adaptGeminiServiceTool(geminiUrlAnalysisTool, "geminiUrlAnalysisTool") ); // Code review tools registry.registerTool( adaptNewGeminiServiceToolObject(geminiCodeReviewTool) ); // Note: geminiCodeReviewStreamTool returns an AsyncGenerator, not a Promise // We need to wrap it to collect all chunks into a single response registry.registerTool( adaptNewGeminiServiceToolObject({ ...geminiCodeReviewStreamTool, execute: async (args: GeminiCodeReviewArgs, service: GeminiService) => { const results = []; const generator = await geminiCodeReviewStreamTool.execute( args, service ); for await (const chunk of generator) { results.push(chunk); } // Return the last chunk which should contain the complete result return results[results.length - 1]; }, }) ); // MCP client tool registry.registerTool( adaptNewMcpClientServiceToolObject({ ...mcpClientTool, execute: mcpClientTool.execute, // No cast needed }) ); // File utility tools registry.registerTool( adaptServerOnlyTool(writeToFileTool, "writeToFileTool") ); // Register all tools with the server registry.registerAllTools(server); } catch (error) { logger.error( "Error registering tools:", error instanceof Error ? error.message : String(error) ); } // Return the McpClientService instance for use in graceful shutdown return mcpClientService; }

Implementation Reference

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bsmi021/mcp-gemini-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server