ARCHITECTURE.mdβ’9.23 kB
# MCP Server Architecture
## ποΈ ΠΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΏΠΎΡΠ»Π΅ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Π°
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β HTTP Client (MCP Inspector/Smithery) β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββ
β HTTP Requests
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β streamable-http-wrapper.js β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Express Server β β
β β - CORS Middleware β β
β β - JSON Parsing β β
β β - Route: /mcp β handleMCPRequest() β β
β β - Route: /health β Health Check β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β handlers/mcp-handler.js β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Main Request Router β β
β β - Parse JSON-RPC requests β β
β β - Route to specific handlers β β
β β - Handle HTTP methods (GET, POST, DELETE) β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββΌββββββββββββββ
β β β
βΌ βΌ βΌ
βββββββββββββββ βββββββββββββββ βββββββββββββββ
β handlers/ β β handlers/ β β handlers/ β
β initialize.jsβ β tools.js β β resources.jsβ
β β β β β β
β - initializeβ β - tools/listβ β - resources/β
β β β - tools/callβ β list β
β β β β β - resources/β
β β β β β read β
βββββββββββββββ βββββββββββββββ βββββββββββββββ
β β β
βββββββββββββββΌββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β handlers/notifications.js β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Notification Handlers β β
β β - notifications/initialized β β
β β - ping β β
β β (No response needed - HTTP 200 only) β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β mcp-manager.js β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β MCP Server Manager β β
β β - Spawn MCP process β β
β β - Send JSON-RPC requests β β
β β - Handle responses β β
β β - Connection management β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββ
β stdio communication
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β mcp-server.js β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Core MCP Server β β
β β - Tools: enrich_user_data β β
β β - Resources: users://list, users-bio://{userId} β β
β β - Dynamic paths support β β
β β - JSON-RPC 2.0 protocol β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
```
## π ΠΠΎΡΠΎΠΊ Π΄Π°Π½Π½ΡΡ
:
1. **HTTP Request** β `streamable-http-wrapper.js`
2. **Route** β `handlers/mcp-handler.js`
3. **Method Detection** β Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ
4. **MCP Call** β `mcp-manager.js`
5. **Process Communication** β `mcp-server.js`
6. **Response** β ΠΠ±ΡΠ°ΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π· ΡΠ΅ΠΏΠΎΡΠΊΡ
## π¦ ΠΠΎΠ΄ΡΠ»ΠΈ:
### **Core Modules:**
- `streamable-http-wrapper.js` - HTTP ΡΠ΅ΡΠ²Π΅Ρ
- `mcp-manager.js` - Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ MCP ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ
- `mcp-server.js` - ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ MCP ΡΠ΅ΡΠ²Π΅Ρ
### **Handler Modules:**
- `handlers/mcp-handler.js` - ΠΠ»Π°Π²Π½ΡΠΉ ΡΠΎΡΡΠ΅Ρ
- `handlers/initialize.js` - ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ
- `handlers/tools.js` - ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ
- `handlers/resources.js` - Π Π΅ΡΡΡΡΡ
- `handlers/notifications.js` - Π£Π²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ
## π― ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°:
- **Separation of Concerns** - ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΡΠ²ΠΎΡ ΠΎΠ±Π»Π°ΡΡΡ
- **Single Responsibility** - ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠ΄ΡΠ»Ρ = ΠΎΠ΄Π½Π° ΡΡΠ½ΠΊΡΠΈΡ
- **Easy Testing** - ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎ
- **Maintainability** - Π»Π΅Π³ΠΊΠΎ Π½Π°ΠΉΡΠΈ ΠΈ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
- **Extensibility** - ΠΏΡΠΎΡΡΠΎΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ