2.5 KiB
2.5 KiB
MCPServer
#sympozium #crd #mcp
Definicja
MCPServer zarządza lifecycle serwerów MCP (Model Context Protocol) w klastrze. Wspiera stdio (z HTTP adapterem), HTTP i external transport.
Plik: api/v1alpha1/mcpserver_types.go
Spec
apiVersion: sympozium.ai/v1alpha1
kind: MCPServer
metadata:
name: github-mcp
spec:
transportType: stdio|http
# Dla external/pre-existing serwerów (bez deploymentu):
url: "http://external-mcp.example.com/mcp"
# Dla managed serwerów:
deployment:
image: ghcr.io/my-org/github-mcp:v1
cmd: "/usr/bin/github-mcp-server"
args: ["--stdio"]
port: 8080
env:
LOG_LEVEL: info
secretRefs:
- name: github-token
resources:
requests:
cpu: "100m"
memory: "128Mi"
serviceAccountName: github-mcp-sa
toolsPrefix: gh # Prefix unikający kolizji
timeout: 30
replicas: 1
toolsAllow: [create_issue] # Whitelist narzędzi
toolsDeny: [delete_repo] # Blacklist narzędzi
Dwa tryby
Managed (z deployment spec)
Controller tworzy Deployment + Service:
- stdio → HTTP adapter automatycznie
- Probing narzędzi po starcie
- Lifecycle zarządzany przez controller
External (z URL)
Tylko referencja do istniejącego serwera:
- Brak deploymentu
- Probing narzędzi pod podanym URL
- Użytkownik zarządza lifecycle
Tool Discovery
Po starcie MCPServer, controller:
- Probeuje endpoint MCP
- Odkrywa dostępne narzędzia
- Aplikuje
toolsAllow/toolsDenyfiltry - Zapisuje listę narzędzi w
status.tools - Prefiksuje nazwy:
gh_create_issue,gh_list_repos
Status
status:
ready: true
url: "http://github-mcp.sympozium-system.svc:8080"
toolCount: 12
tools: [create_issue, list_repos, ...]
Integracja z agentem
SympoziumInstance → mcpServers: [{name: github-mcp, toolsPrefix: gh}]
↓
AgentRun tworzony → Reconciler:
1. Rozwiązuje MCPServer CR → pobiera URL ze status
2. Tworzy MCP ConfigMap z konfiguracją serwerów
3. Dodaje mcp-bridge sidecar do poda
↓
Agent w podzie:
- mcp-bridge sidecar tłumaczy tool calls → MCP protocol
- Narzędzia widoczne jako prefixed: gh_create_issue, gh_list_repos
Tool namespacing
Prefiksy zapobiegają kolizjom gdy wiele MCP serwerów jest aktywnych:
gh_create_issue(GitHub MCP)jira_create_ticket(Jira MCP)slack_send_message(Slack MCP)
Powiązane: MCP Servers - Model Context Protocol | SympoziumInstance | Przepływ danych i IPC