90 lines
4.3 KiB
Markdown
90 lines
4.3 KiB
Markdown
# MCP Server Architecture Upgrade Summary
|
|
|
|
**Date:** 2025-02-14
|
|
**Task:** Upgrade 5 MCP servers from simple index.ts to proper main.ts + server.ts architecture with lazy loading
|
|
|
|
## Servers Upgraded
|
|
|
|
### 1. ✅ Trello
|
|
- **Location:** `/mcpengine-repo/servers/trello/`
|
|
- **Tool Files:** 14 (boards, lists, cards, checklists, members, organizations, labels, actions, custom-fields, notifications, search, webhooks, power-ups, tokens)
|
|
- **Changes:**
|
|
- Created `src/main.ts` with env validation (TRELLO_API_KEY, TRELLO_TOKEN) + graceful shutdown
|
|
- Created `src/server.ts` with `TrelloMCPServer` class + lazy-loaded tool modules
|
|
- Renamed `src/index.ts` → `src/index.ts.bak`
|
|
- Updated `package.json`: `main` and `bin` now point to `dist/main.js`
|
|
- **Verification:** `npx tsc --noEmit` ✅ 0 errors
|
|
|
|
### 2. ✅ TouchBistro
|
|
- **Location:** `/mcpengine-repo/servers/touchbistro/`
|
|
- **Tool Files:** 8 (orders, menu, tables, staff, customers, reservations, inventory, payments)
|
|
- **Changes:**
|
|
- Created `src/main.ts` with env validation (TOUCHBISTRO_API_KEY, TOUCHBISTRO_RESTAURANT_ID) + graceful shutdown
|
|
- Created `src/server.ts` with `TouchBistroMCPServer` class + lazy-loaded tool modules
|
|
- Renamed `src/index.ts` → `src/index.ts.bak`
|
|
- Updated `package.json`: `main` and `bin` now point to `dist/main.js`
|
|
- **Verification:** `npx tsc --noEmit` ✅ 0 errors
|
|
|
|
### 3. ✅ CloseBot
|
|
- **Location:** `/mcpengine-repo/servers/closebot/`
|
|
- **Tool Files:** 8 (bot-management, source-management, lead-management, analytics, bot-testing, library, agency-billing, configuration)
|
|
- **Changes:**
|
|
- Created `src/main.ts` with env validation (CLOSEBOT_API_KEY) + graceful shutdown
|
|
- Created `src/server.ts` with `CloseBotMCPServer` class + lazy-loaded tool modules
|
|
- Renamed `src/index.ts` → `src/index.ts.bak`
|
|
- Updated `package.json`: `main` and `bin` now point to `dist/main.js`
|
|
- **Verification:** `npx tsc --noEmit` ✅ 0 errors
|
|
|
|
### 4. ✅ Close
|
|
- **Location:** `/mcpengine-repo/servers/close/`
|
|
- **Tool Files:** 12 (leads, contacts, opportunities, activities, tasks, smart-views, users, custom-fields, sequences, reporting, pipelines, bulk)
|
|
- **Changes:**
|
|
- Created `src/main.ts` with env validation (CLOSE_API_KEY) + graceful shutdown
|
|
- Created `src/server.ts` with `CloseMCPServer` class + lazy-loaded tool modules
|
|
- Renamed `src/index.ts` → `src/index.ts.bak`
|
|
- Updated `package.json`: `main` and `bin` now point to `dist/main.js`
|
|
- **Verification:** `npx tsc --noEmit` ✅ 0 errors
|
|
|
|
### 5. ✅ Google Console
|
|
- **Location:** `/mcpengine-repo/servers/google-console/`
|
|
- **Tool Files:** 6 (discovery, analytics, intelligence, indexing, management, sitemaps)
|
|
- **Changes:**
|
|
- Created `src/main.ts` with auth initialization + cache/rate limiter setup + graceful shutdown
|
|
- Kept existing `src/server.ts` (already had `GSCServer` class with lazy loading)
|
|
- Renamed `src/index.ts` → `src/index.ts.bak`
|
|
- Updated `package.json`: `main` and `bin` now point to `dist/main.js`
|
|
- **Verification:** `npx tsc --noEmit` ✅ 0 errors
|
|
|
|
## Architecture Pattern (Gold Standard)
|
|
|
|
### main.ts
|
|
- ✅ `#!/usr/bin/env node` shebang
|
|
- ✅ Environment variable validation with clear error messages
|
|
- ✅ Instructions for where to get API keys
|
|
- ✅ Graceful shutdown handlers (SIGINT/SIGTERM)
|
|
- ✅ Creates API client → creates server → starts transport
|
|
- ✅ Stdio transport (default)
|
|
|
|
### server.ts
|
|
- ✅ SERVER CLASS pattern (e.g., `TrelloMCPServer`, `TouchBistroMCPServer`)
|
|
- ✅ `toolModules: Map<string, () => Promise<ToolModule>>` for lazy loading
|
|
- ✅ `setupToolModules()` registers each tool file via dynamic import
|
|
- ✅ `setupHandlers()` registers ListToolsRequestSchema + CallToolRequestSchema
|
|
- ✅ `loadAllTools()` resolves all lazy modules on first request
|
|
- ✅ Capabilities: `{ tools: {}, resources: {} }` (where applicable)
|
|
|
|
## Files Preserved
|
|
All original `index.ts` files renamed to `index.ts.bak` for safety. No tool files or client files were modified.
|
|
|
|
## Next Steps
|
|
- Build each server: `npm run build`
|
|
- Test each server with MCP inspector
|
|
- Deploy to production
|
|
|
|
## Notes
|
|
- All servers compile with 0 TypeScript errors
|
|
- All servers follow the exact same architectural pattern
|
|
- Environment validation provides helpful setup instructions
|
|
- Graceful shutdown ensures clean process termination
|
|
- Lazy loading improves startup performance
|