UNPKG

@codervisor/devlog-mcp

Version:

MCP server for managing development logs and working notes

93 lines (92 loc) 2.99 kB
/** * Factory for creating MCP adapters * Uses HTTP API client for secure and isolated access to devlog operations */ import { MCPApiAdapter } from './mcp-api-adapter.js'; import { loadMCPConfig, validateMCPConfig, printConfigSummary, } from '../config/mcp-config.js'; /** * Create an MCP adapter using HTTP API client */ export async function createMCPAdapter(config) { // Load configuration if not provided const mcpConfig = config || loadMCPConfig(); // Validate configuration validateMCPConfig(mcpConfig); // Print configuration summary for debugging printConfigSummary(mcpConfig); // Create API-based adapter const apiConfig = { apiClient: { baseUrl: mcpConfig.webApi.baseUrl, timeout: mcpConfig.webApi.timeout, retries: mcpConfig.webApi.retries, }, defaultProjectId: mcpConfig.defaultProjectId ? Number(mcpConfig.defaultProjectId) : undefined, autoDiscoverWebService: mcpConfig.webApi.autoDiscover, }; const adapter = new MCPApiAdapter(apiConfig); console.log('Created MCP API Adapter (HTTP client mode)'); // Initialize the adapter await adapter.initialize(); return adapter; } /** * Check if web API is available for API mode */ export async function checkWebApiAvailability(baseUrl) { try { const response = await fetch(`${baseUrl}/api/projects`, { method: 'GET', headers: { 'Content-Type': 'application/json' }, signal: AbortSignal.timeout(5000), // 5 second timeout }); return response.ok; } catch { return false; } } /** * Auto-discover web API URL (for development) */ export async function discoverWebApiUrl() { const candidates = [ 'http://localhost:3200', 'http://localhost:3000', 'http://127.0.0.1:3200', 'http://127.0.0.1:3000', ]; for (const url of candidates) { console.log(`Checking web API at ${url}...`); if (await checkWebApiAvailability(url)) { console.log(`Found web API at ${url}`); return url; } } return null; } /** * Create MCP adapter with automatic web API discovery */ export async function createMCPAdapterWithDiscovery() { const config = loadMCPConfig(); // If auto-discovery is enabled, try to find web API if (config.webApi.autoDiscover) { const discoveredUrl = await discoverWebApiUrl(); if (discoveredUrl) { // Update config with discovered URL config.webApi.baseUrl = discoveredUrl; console.log(`Using discovered web API URL: ${discoveredUrl}`); } else { console.warn('Could not discover web API, using configured URL:', config.webApi.baseUrl); } } return createMCPAdapter(config); } /** * Type guard for API adapter (always true now) */ export function isApiAdapter(adapter) { return adapter instanceof MCPApiAdapter; }