4.3 KiB
4.3 KiB
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.tswith env validation (TRELLO_API_KEY, TRELLO_TOKEN) + graceful shutdown - Created
src/server.tswithTrelloMCPServerclass + lazy-loaded tool modules - Renamed
src/index.ts→src/index.ts.bak - Updated
package.json:mainandbinnow point todist/main.js
- Created
- 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.tswith env validation (TOUCHBISTRO_API_KEY, TOUCHBISTRO_RESTAURANT_ID) + graceful shutdown - Created
src/server.tswithTouchBistroMCPServerclass + lazy-loaded tool modules - Renamed
src/index.ts→src/index.ts.bak - Updated
package.json:mainandbinnow point todist/main.js
- Created
- 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.tswith env validation (CLOSEBOT_API_KEY) + graceful shutdown - Created
src/server.tswithCloseBotMCPServerclass + lazy-loaded tool modules - Renamed
src/index.ts→src/index.ts.bak - Updated
package.json:mainandbinnow point todist/main.js
- Created
- 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.tswith env validation (CLOSE_API_KEY) + graceful shutdown - Created
src/server.tswithCloseMCPServerclass + lazy-loaded tool modules - Renamed
src/index.ts→src/index.ts.bak - Updated
package.json:mainandbinnow point todist/main.js
- Created
- 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.tswith auth initialization + cache/rate limiter setup + graceful shutdown - Kept existing
src/server.ts(already hadGSCServerclass with lazy loading) - Renamed
src/index.ts→src/index.ts.bak - Updated
package.json:mainandbinnow point todist/main.js
- Created
- Verification:
npx tsc --noEmit✅ 0 errors
Architecture Pattern (Gold Standard)
main.ts
- ✅
#!/usr/bin/env nodeshebang - ✅ 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