initial commit
This commit is contained in:
85
06-Komunikacja/MCP Servers - Model Context Protocol.md
Normal file
85
06-Komunikacja/MCP Servers - Model Context Protocol.md
Normal file
@@ -0,0 +1,85 @@
|
||||
# MCP Servers - Model Context Protocol
|
||||
|
||||
#sympozium #komunikacja #mcp
|
||||
|
||||
## Koncepcja
|
||||
|
||||
MCP (Model Context Protocol) to protokół umożliwiający **rozszerzanie możliwości agentów** o zewnętrzne narzędzia. Sympozium integruje MCP jako first-class citizen z pełnym lifecycle management.
|
||||
|
||||
## Architektura
|
||||
|
||||
```
|
||||
MCPServer CRD → Controller
|
||||
├── Managed: Deploy + Service + probe tools
|
||||
└── External: Just probe tools
|
||||
|
||||
SympoziumInstance.mcpServers[] → reference MCPServer
|
||||
↓
|
||||
AgentRun → Reconciler:
|
||||
1. Resolve MCPServer URLs (status.url)
|
||||
2. Create MCP ConfigMap (server configs)
|
||||
3. Add mcp-bridge sidecar to pod
|
||||
↓
|
||||
Agent Pod:
|
||||
┌──────────┐ ┌──────────────┐ ┌──────────────┐
|
||||
│ Agent │──│ MCP Bridge │──│ MCP Server │
|
||||
│ │ │ Sidecar │ │ (remote) │
|
||||
│ gh_* │ │ Translates: │ │ │
|
||||
│ tools │ │ tool call → │ │ GitHub API │
|
||||
│ │ │ MCP protocol│ │ │
|
||||
└──────────┘ └──────────────┘ └──────────────┘
|
||||
```
|
||||
|
||||
## Tool namespacing
|
||||
|
||||
Problem: wiele MCP serwerów może mieć tool o tej samej nazwie.
|
||||
|
||||
Rozwiązanie: **toolsPrefix** - każde narzędzie z danego serwera dostaje prefix:
|
||||
|
||||
```
|
||||
GitHub MCP (prefix: gh) → gh_create_issue, gh_list_repos
|
||||
Jira MCP (prefix: jira) → jira_create_ticket, jira_search
|
||||
Slack MCP (prefix: sl) → sl_send_message, sl_list_channels
|
||||
```
|
||||
|
||||
## Tool filtering
|
||||
|
||||
```yaml
|
||||
toolsAllow: [create_issue] # TYLKO te narzędzia (whitelist)
|
||||
toolsDeny: [delete_repo] # BLOKUJ te narzędzia (blacklist)
|
||||
```
|
||||
|
||||
`toolsDeny` applied after `toolsAllow` - można pozwolić na all except specific.
|
||||
|
||||
## Auto-discovery
|
||||
|
||||
Controller probeuje MCP server po deploy:
|
||||
1. Wysyła MCP tools/list request
|
||||
2. Odkrywa dostępne narzędzia
|
||||
3. Aplikuje allow/deny filtry
|
||||
4. Zapisuje w `status.tools[]`
|
||||
5. Aktualizuje `status.toolCount`
|
||||
|
||||
## Transport modes
|
||||
|
||||
### stdio → HTTP adapter
|
||||
Serwer MCP używa stdio (stdin/stdout). Controller automatycznie dodaje HTTP adapter:
|
||||
```
|
||||
Container: my-mcp-server --stdio
|
||||
↓
|
||||
HTTP adapter: wraps stdio → HTTP endpoint
|
||||
↓
|
||||
mcp-bridge sidecar connects via HTTP
|
||||
```
|
||||
|
||||
### HTTP (native)
|
||||
Serwer MCP natywnie serwuje HTTP:
|
||||
```
|
||||
Container: my-mcp-server --port 8080
|
||||
↓
|
||||
mcp-bridge sidecar connects directly
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Powiązane: [[MCPServer]] | [[SympoziumInstance]] | [[Przepływ danych i IPC]]
|
||||
Reference in New Issue
Block a user