Google Cloud MCP Server

by krzko
Verified
# Smithery.ai configuration startCommand: type: stdio # Increase timeout to prevent early disconnection timeout: 120000 # 120 seconds timeout for initialization # Increase ping interval to ensure connection stays alive pingInterval: 5000 # 5 seconds between pings # Increase ping timeout to be more lenient pingTimeout: 30000 # 30 seconds before timing out a ping configSchema: # JSON Schema defining the configuration options for the MCP type: object properties: projectId: type: string description: "Google Cloud Project ID (optional)" debug: type: boolean description: "Enable debug logging for troubleshooting" default: false lazyAuth: type: boolean description: "Enable lazy loading of authentication (recommended for Smithery). Authentication will still be required but will be initialized when first needed rather than at startup." default: true credentials: oneOf: - type: object properties: clientEmail: type: string description: "Google Cloud service account client email" privateKey: type: string description: "Google Cloud service account private key" required: ["clientEmail", "privateKey"] description: "Google Cloud service account credentials as environment variables" - type: object properties: keyFilePath: type: string description: "Path to Google Cloud service account key file (JSON)" required: ["keyFilePath"] description: "Google Cloud service account credentials as a key file" - type: string description: "Path to Google Cloud service account key file (JSON) - direct string format" description: "Google Cloud service account credentials (optional)" additionalProperties: false commandFunction: # A function that produces the CLI command to start the MCP on stdio |- (config) => { const env = {}; // Add Google Cloud project ID if provided if (config.projectId) { env.GOOGLE_CLOUD_PROJECT = config.projectId; } // Enable debug logging if requested if (config.debug) { env.DEBUG = "true"; } // Set authentication mode (lazy loading) if (config.lazyAuth !== false) { // Default to true if not specified env.LAZY_AUTH = "true"; } // Add Google Cloud credentials if provided if (config.credentials) { // Handle different credential formats if (typeof config.credentials === 'string') { // Direct string path format (used by Claude Desktop) env.GOOGLE_APPLICATION_CREDENTIALS = config.credentials; } else if (typeof config.credentials === 'object') { // Method 1: Using client email and private key directly if (config.credentials.clientEmail && config.credentials.privateKey) { env.GOOGLE_CLIENT_EMAIL = config.credentials.clientEmail; env.GOOGLE_PRIVATE_KEY = config.credentials.privateKey; } // Method 2: Using a key file (standard approach) if (config.credentials.keyFilePath) { env.GOOGLE_APPLICATION_CREDENTIALS = config.credentials.keyFilePath; } } } return { "command": "node", "args": [ "dist/index.js" ], "env": env }; }