Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Důležité
Server PROTOKOLU MCP (SQL Model Context Protocol) je k dispozici v Tvůrci rozhraní Data API verze 1.7 a novější.
SQL MCP Server podporuje dva přenosy: streamovatelné HTTP pro hostované a cloudové scénáře a stdio pro místní vývoj a přímou integraci agenta. Tento článek se zabývá dopravou stdio .
V stdio režimu tvůrce rozhraní DATA API (DAB) komunikuje s klientem MCP zcela přes standardní vstup a výstup (stdin/stdout). Není spuštěn žádný server HTTP ani síťový port. Klient MCP spouští DAB jako podřízený proces a kanáluje zprávy zpět pomocí protokolu MCP (Model Context Protocol).
Kdy použít stdio dopravu
| Scénář | Doporučená doprava |
|---|---|
| Místní vývoj na vývojářské pracovní stanici | stdio |
| VS Code s GitHub Copilot (režim agenta) | stdio |
| Automatizace kanálů CI/CD nebo skriptovaných agentů | stdio |
| Hostování cloudu (Container Apps, App Service) | HTTP |
| Agent Foundry AI s vzdáleným koncovým bodem MCP | HTTP |
| Týmy agentů sdílejí stejný koncový bod | HTTP |
Zvolte stdio , kdy chcete nejjednodušší možnou místní instalaci bez otevřených portů. Zvolte HTTP, když je potřeba, aby byl server MCP dostupný přes síť.
Předpoklady
- Nainstalované CLI pro Data API builder (verze 1.7 nebo novější)
- Existující
dab-config.jsons povolenou službou MCP (viz Požadovaná konfigurace) - Klient kompatibilní s MCP (VS Code s GitHub Copilot, Claude Desktopem nebo vlastním agentem)
Požadovaná konfigurace
Před použitím stdio přenosu povolte MCP ve vašem dab-config.json:
"runtime": {
"mcp": {
"enabled": true,
"path": "/mcp",
"dml-tools": {
"describe-entities": true,
"create-record": true,
"read-records": true,
"update-record": true,
"delete-record": true,
"execute-entity": true,
"aggregate-records": true
}
}
}
Pole path se používá pouze pro přenos HTTP a ignoruje se v režimu stdio. Blok dml-tools řídí, které operace manipulace s daty jsou k dispozici jako nástroje MCP.
Důležité
Pokud chybí blok "mcp": { "enabled": false } nebo mcp, DAB se nespustí v stdio režimu.
Spuštění v stdio režimu
Použijte příznak --mcp-stdio na dab start
dab start --mcp-stdio --config ./dab-config.json
Aby bylo možné spustit pod specifickou rolí oprávnění:
dab start --mcp-stdio role:authenticated --config ./dab-config.json
Argument role:<name> je poziční a musí okamžitě následovat --mcp-stdio. Pokud tento parametr vynecháte, role se ve výchozím nastavení nastaví na anonymous. Název role se musí shodovat s rolí definovanou v oddílu permissions nejméně jedné entity v konfiguraci.
Jak stdio funguje režim
Když je --mcp-stdio detekováno, DAB interně provede následující změny:
Kódování UTF-8 (bez značky pořadí bajtů)
Vstup a výstup konzoly jsou nastaveny na UTF-8 bez označení pořadí bajtů (BOM). Toto nastavení UTF-8 je vyžadováno pro čistou JSON-over-stdio komunikaci, protože mnoho klientů MCP odmítá datové proudy s předponou BOM.
Ověřování simulátoru
Zprostředkovatel ověřování se přepíše do režimu simulátoru bez ohledu na to, co váš konfigurační soubor určuje. Tento režim simulátoru umožňuje použít zadanou roli přímo bez skutečného webového tokenu JSON (JWT) nebo zprostředkovatele identity. Poskytovatel simulátoru je navržen pro vývojové scénáře a neměl by se používat k zabezpečení produkčních HTTP koncových bodů, ale je ideální pro místní stdio relace.
Následující hodnoty jsou aplikovány v paměti a přepisují vaši konfiguraci po dobu trvání relace.
| Klíč | Hodnota |
|---|---|
MCP:StdioMode |
"true" |
MCP:Role |
"<role-name>" nebo "anonymous" |
Runtime:Host:Authentication:Provider |
"Simulator" |
Žádný HTTP listener
Hostitel ASP.NET Core se spustí a všechny služby jsou zaregistrované, ale DAB volá stdio.RunAsync() místo host.Run(). Není vázán žádný port TCP (Transmission Control Protocol). Všechny zprávy protokolu MCP procházejí stdin/stdout.
Dostupné nástroje MCP
V režimu stdio jsou k dispozici následující nástroje, které podléhají vaší dml-tools konfiguraci a oprávnění entit:
| nástroj | Description |
|---|---|
describe_entities |
Seznam dostupných entit a jejich polí a oprávnění |
create_record |
Vloží nový záznam (pouze tabulky). |
read_records |
Čte záznamy z entity. |
update_record |
Aktualizuje existující záznam. |
delete_record |
Odstraní existující záznam (tabulky a zobrazení). |
execute_entity |
Spustí entitu uložené procedury. |
aggregate_records |
Provádí agregační dotazy na tabulky a zobrazení. |
Vlastní nástroje MCP zálohované uloženými procedurami jsou také registrovány při použití --mcp-stdio.
Konfigurace klienta MCP pro stdio
Klienti MCP, kteří podporují stdio přenos, spustí DAB jako podproces a přesměrují jeho stdin/stdout. Syntaxe konfigurace klienta se liší podle klienta.
VS Code (mcp.json)
{
"servers": {
"sql-mcp-server": {
"type": "stdio",
"command": "dab",
"args": [
"start",
"--mcp-stdio", "role:anonymous",
"--config", "{path}/dab-config.json",
"--LogLevel", "error"
]
}
}
}
Uložte tento soubor jako .vscode/mcp.json do složky projektu. VS Code rozpozná konfiguraci automaticky a zobrazí server v MCP: Seznam serverů. Vzhledem k tomu, že klient spravuje životní cyklus procesu, nemusíte v terminálu spouštět dab start samostatně.
Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"sql-mcp-server": {
"type": "stdio",
"command": "dab",
"args": [
"start",
"--mcp-stdio", "role:anonymous",
"--config", "{path}/dab-config.json",
"--LogLevel", "error"
]
}
}
}
Kombinování s dalšími dab start možnostmi
--mcp-stdio je kompatibilní se všemi ostatními dab start možnostmi:
| Možnost | Chování s --mcp-stdio |
|---|---|
--config |
Používá zadaný konfigurační soubor (stejný jako režim HTTP). |
--LogLevel |
Použije zadanou úroveň protokolu (errordoporučeno pro stdio) |
dab start \
--mcp-stdio role:api-reader \
--config ./dab-config.json \
--LogLevel Error
Režim řešení potíží stdio
Failed to start the engine in MCP stdio mode
DAB se nepodařilo spustit. Zkontrolujte, že:
- Konfigurační soubor je platný: spusťte
dab validate --config <path> - Váš databázový připojovací řetězec je správný a dosažitelný.
- McP je ve vaší konfiguraci povolený:
"mcp": { "enabled": true }
Odepřeno oprávnění při volání nástroje MCP
Role zadaná uživatelem role:<name> nemá požadovaná oprávnění pro entitu a operaci. Zkontrolujte část permissions příslušné entity ve vaší konfiguraci.
Nástroje MCP nejsou uvedené v seznamu
Buď je dml-tools nastavená globálně false, nebo entita má "dml-tools": false ve svém nastavení mcp. Také ověřte, že mcp.enabled je true.
Zkomolený výstup nebo chyby analýzy JSON
Před spuštěním serveru MCP zajistěte, že ve spouštěcím kódu není nic, co by zapisovalo text bez formátu JSON do stdoutu. Výstup záznamu by měl jít na stderr nebo do souboru se záznamem, ne na stdout. V případě potřeby použijte --LogLevel pro potlačení podrobných spouštěcích zpráv.