89 lines
2.4 KiB
Markdown
89 lines
2.4 KiB
Markdown
# Model Context Protocol (MCP) Integration
|
|
|
|
Dexorder uses the Model Context Protocol for user-specific tool execution and state management.
|
|
|
|
## Container Architecture
|
|
|
|
Each user has a dedicated Kubernetes pod running:
|
|
- **Agent Container**: Python environment with conda packages
|
|
- **Lifecycle Sidecar**: Manages container lifecycle and communication
|
|
- **Persistent Storage**: User's git repository with indicators/strategies
|
|
|
|
## Authentication Modes
|
|
|
|
Three MCP authentication modes:
|
|
|
|
### 1. Public Mode (Free Tier)
|
|
- No authentication required
|
|
- Container creates anonymous session
|
|
- Limited to read-only resources
|
|
- Session expires after timeout
|
|
|
|
### 2. Gateway Auth Mode (Standard)
|
|
- Gateway authenticates user
|
|
- Passes verified user ID to container
|
|
- Container trusts gateway's authentication
|
|
- Full access to user's tools and data
|
|
|
|
### 3. Direct Auth Mode (Enterprise)
|
|
- User authenticates directly with container
|
|
- Gateway forwards encrypted credentials
|
|
- Container validates credentials independently
|
|
- Highest security for sensitive operations
|
|
|
|
## MCP Resources
|
|
|
|
The container exposes standard resources:
|
|
|
|
### context://user-profile
|
|
User preferences and trading style
|
|
|
|
### context://conversation-summary
|
|
Recent conversation context and history
|
|
|
|
### context://workspace-state
|
|
Current chart, indicators, and analysis state
|
|
|
|
### context://system-prompt
|
|
User's custom agent instructions
|
|
|
|
### indicators://list
|
|
Available indicators with signatures
|
|
|
|
### strategies://list
|
|
User's trading strategies
|
|
|
|
## Tool Execution Flow
|
|
|
|
1. User sends message to gateway
|
|
2. Gateway queries user's MCP resources for context
|
|
3. LLM generates response with tool calls
|
|
4. Gateway routes tool calls:
|
|
- Platform tools → handled by gateway
|
|
- User tools → proxied to MCP container
|
|
5. Tool results returned to LLM
|
|
6. Final response sent to user
|
|
7. Conversation saved to MCP container
|
|
|
|
## Container Lifecycle
|
|
|
|
### Startup
|
|
1. Gateway receives user connection
|
|
2. Checks if container exists
|
|
3. Creates pod if needed (cold start ~5-10s)
|
|
4. Waits for container ready
|
|
5. Establishes MCP connection
|
|
|
|
### Active
|
|
- Container stays alive during active session
|
|
- Receives tool calls via MCP
|
|
- Maintains workspace state
|
|
- Saves files to persistent storage
|
|
|
|
### Shutdown
|
|
- Free users: timeout after 15 minutes idle
|
|
- Paid users: longer timeout based on license
|
|
- Graceful shutdown saves state
|
|
- Persistent storage retained
|
|
- Fast restart on next connection
|