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ší. Nejnovější funkce a opravy chyb najdete v nejnovější verzi 2.0.
V tomto rychlém startu se k sestavení řešení založeného na kontejneru používá Aspire. Řešení zahrnuje:
- Databáze SQL s ukázkovými daty
- Server PROTOKOLU MCP (SQL Model Context Protocol) využívající tvůrce rozhraní Data API
- Inspektor MCP pro testování
Aspire spustí vše za vás, spustí služby a připojí kontejnery a zastaví služby, když ho zavřete.
Požadavky
Než začnete, nainstalujte tyto nástroje.
1. .NET 10
V tomto kroku připravíte počítač s požadavky požadovanými pro účely tohoto rychlého startu.
Důležité
Tento nástroj už možná máte nainstalovaný. Otestujte ho spuštěním dotnet --version a ověřením, že hlásí verzi 10 nebo novější. Pokud spustíte tuto instalaci a .NET už existuje, aktualizuje se systém bez jakýchkoli problémů.
2. Modul runtime kontejneru
V tomto kroku nainstalujete Docker Desktop pro podporu projektu Aspire.
Důležité
Tento nástroj už možná máte nainstalovaný. Otestujte ho spuštěním docker --version a ověřte, že je Docker dostupný. Pokud spustíte tuto instalaci a Docker už existuje, aktualizuje systém bez jakýchkoli problémů.
Poznámka:
Podman také funguje, ale nastavení se liší. Vývojáři, kteří dávají přednost podmanu, můžou tyto kroky přizpůsobit.
3. Nástroje Aspire a nástroje pro tvorbu rozhraní Data API
V tomto kroku vytvoříte výchozí soubory projektu Aspire použité později. Spusťte následující příkazy:
dotnet new tool-manifest
dotnet tool install aspire.cli
dotnet tool install microsoft.dataapibuilder
aspire init
Poznámka:
Funkce SQL MCP Serveru jsou k dispozici v Tvůrci rozhraní Data API verze 1.7 a novější.
Po zobrazení výzvy vyberte všechny výchozí hodnoty.
Tento příkaz nainstaluje nástroje a vytvoří následující soubory:
.
├── .config
│ └── dotnet-tools.json
├── AppHost.cs
└── apphost.run.json
4. Dokončete soubor AppHost.cs
V tomto kroku provedete aktualizaci AppHost.cs správným kódem pro spuštění tohoto rychlého startu. Obsah AppHost.cs nahraďte následujícím kódem:
#:sdk Aspire.AppHost.Sdk@13.0.2
#:package Aspire.Hosting.SqlServer@13.0.2
#:package CommunityToolkit.Aspire.Hosting.McpInspector@9.8.0
using System.ComponentModel;
using Aspire.Hosting;
using Aspire.Hosting.ApplicationModel;
var builder = DistributedApplication.CreateBuilder(args);
var db = AddSqlServer(builder);
WithSqlCommander(db);
var mcp = AddMcpServer(db);
WithMcpInspector(mcp);
await builder.Build().RunAsync();
IResourceBuilder<SqlServerDatabaseResource> AddSqlServer(IDistributedApplicationBuilder builder) => builder
.AddSqlServer("sql-server").WithDataVolume()
.AddDatabase("sql-database", "productsdb")
.WithCreationScript(SqlScript("productsdb"));
IResourceBuilder<ContainerResource> WithSqlCommander(IResourceBuilder<SqlServerDatabaseResource> db) => db
.ApplicationBuilder.AddContainer("sql-cmdr", "jerrynixon/sql-commander", "latest")
.WithImageRegistry("docker.io")
.WithHttpEndpoint(targetPort: 8080, name: "http")
.WithEnvironment("ConnectionStrings__db", db)
.WithParentRelationship(db)
.WaitFor(db)
.WithUrls(x =>
{
x.Urls.Clear();
x.Urls.Add(new() { Url = "/", DisplayText = "Commander", Endpoint = x.GetEndpoint("http") });
});
IResourceBuilder<ContainerResource> AddMcpServer(IResourceBuilder<SqlServerDatabaseResource> db) => db
.ApplicationBuilder.AddContainer("sql-mcp-server", "azure-databases/data-api-builder", "2.0.8")
.WithImageRegistry("mcr.microsoft.com")
.WithHttpEndpoint(targetPort: 5000, name: "http")
.WithEnvironment("MSSQL_CONNECTION_STRING", db)
.WithBindMount("dab-config.json", "/App/dab-config.json", true)
.WaitFor(db)
.WithUrls(x =>
{
x.Urls.Clear();
x.Urls.Add(new() { Url = "/swagger", DisplayText = "Swagger", Endpoint = x.GetEndpoint("http") });
});
IResourceBuilder<McpInspectorResource> WithMcpInspector(IResourceBuilder<ContainerResource> mcp) => mcp
.ApplicationBuilder.AddMcpInspector("mcp-inspector")
.WithMcpServer(mcp)
.WithParentRelationship(mcp)
.WaitFor(mcp)
.WithUrls(x =>
{
x.Urls[0].DisplayText = "Inspector";
});
string SqlScript(string db) => $"""
CREATE DATABASE {db};
GO
SELECT *
INTO {db}.dbo.Products
FROM (VALUES
(1, 'Action Figure', 40, 14.99, 5.00),
(2, 'Building Blocks', 25, 29.99, 10.00),
(3, 'Puzzle 500 pcs', 30, 12.49, 4.00),
(4, 'Toy Car', 50, 7.99, 2.50),
(5, 'Board Game', 20, 34.99, 12.50),
(6, 'Doll House', 10, 79.99, 30.00),
(7, 'Stuffed Bear', 45, 15.99, 6.00),
(8, 'Water Blaster', 35, 19.99, 7.00),
(9, 'Art Kit', 28, 24.99, 8.00),
(10,'RC Helicopter', 12, 59.99, 22.00)
) AS x (Id, Name, Inventory, Price, Cost);
ALTER TABLE {db}.dbo.Products
ADD CONSTRAINT PK_Products PRIMARY KEY (Id);
""";
Tento kód konfiguruje následující prostředky:
.
├── SQL Server (sql)
│ └── SQL Database (productsdb)
└── SQL MCP Server (sql-mcp-server)
└── MCP Inspector (inspector)
5. Vytvoření souboru dab-config.json
Spusťte tyto příkazy ve složce projektu (stejná složka, ve které AppHost.cs se nachází):
Syntaxe @env('MSSQL_CONNECTION_STRING') říká tvůrci rozhraní Data API, aby přečetl připojovací řetězec z proměnné prostředí za běhu. Aspire nastaví tuto proměnnou automaticky při spuštění kontejneru, takže ji nemusíte nastavovat místně.
dab init --database-type mssql --connection-string "@env('MSSQL_CONNECTION_STRING')" --host-mode Development --config dab-config.json
dab add Products --source dbo.Products --permissions "anonymous:read" --description "Toy store products with inventory, price, and cost."
Poznámka:
Výraz @env(...) je konfigurační funkce DAB, která za běhu řeší proměnné prostředí, nikoli během dab init. Vygenerovaný dab-config.json obsahuje textový řetězec @env('MSSQL_CONNECTION_STRING'), který DAB vyřeší při spuštění kontejneru.
Soubor dab-config.json nakonfiguruje SQL MCP Server pro připojení k vaší databázi a identifikuje objekty, které mají být vystaveny. V tomto případě je Products vystavený.
Tento příkaz přidá do projektu nový soubor:
dab-config.json
Důležité
Soubor dab-config.json musí být ve stejném adresáři, ve kterém spouštíte aspire run, protože vazební připojení používá relativní cestu (./dab-config.json).
Warning
Bez popisů polí agenti vidí jenom názvy entit a můžou nesprávně uhodnout názvy sloupců. Pro užitečné chování agenta vždy přidejte metadata polí.
Přidejte ke svým entitám popisy polí:
dab update Products --fields.name Id --fields.primary-key true --fields.description "Product Id"
dab update Products --fields.name Name --fields.description "Product name"
dab update Products --fields.name Inventory --fields.description "Units in stock"
dab update Products --fields.name Price --fields.description "Retail price"
dab update Products --fields.name Cost --fields.description "Store cost"
Testování řešení
V tomto kroku spustíte prostředí Aspire a potvrdíte, že SQL Server, SQL MCP Server a MCP Inspector spolupracují.
1. Spustit Aspire
aspire run
Důležité
Ujistěte se, že je Docker spuštěný. Aspire vyžaduje, aby hostitel kontejneru fungoval správně.
Po otevření řídicího panelu se zobrazí odkazy pro Swagger, MCP a Inspector.
Očekávané adresy URL
Řídicí panel Aspire zobrazí tyto odkazy (porty se přiřazují dynamicky):
| Resource | Link | Description |
|---|---|---|
| sql-mcp-server | Swagger | Dokumentace k rozhraní REST API |
| sql-mcp-server | MCP | Koncový bod MCP (/mcp) |
| inspektor | Inspektor | Uživatelské rozhraní inspektoru MCP |
2. Testování rozhraní REST API pomocí Swaggeru
Na řídicím panelu vyberte Swagger .
Zkuste operaci GET pro produkty. Tento test potvrzuje, že je spuštěný SQL MCP Server a může se připojit k databázi.
3. Prozkoumání nástrojů MCP
Na řídicím panelu vyberte inspektor .
Try:
-
list_toolsk zobrazení dostupných nástrojů MCP -
read_recordspro entituProducts
Zkuste filtr (ukázková syntaxe):
{ "filter": "Price gt 20" }
Tento test potvrzuje, že MCP funguje.
4. Zastavit Aspire
Chcete-li zastavit Aspire, stiskněte Ctrl+C.
Aspire zastaví všechny služby. SQL Server data se mezi spuštěními uchovávají, protože kód používá .WithDataVolume() a .WithLifetime(ContainerLifetime.Persistent).
Řešení problémů
Kontejner SQL MCP Serveru se nespustí
- Podrobnosti o chybě najdete v protokolech kontejneru na řídicím panelu Aspire.
- Ověřte, že
--configargument odpovídá očekávané syntaxi kontejneru DAB (některé verze můžou místo toho použít--ConfigFileName). - Ujistěte se, že
dab-config.jsonexistuje ve stejném adresáři, ve kterém spouštíteaspire run.
Skript inicializace databáze nebyl nalezen.
- Ověřte
init-db.sql, že je v adresáři projektu AppHost. - Zkontrolujte, zda je soubor zahrnutý v projektu a v případě potřeby zkopírován do výstupu.
Kontrolor MCP se nemůže připojit
- Ověřte, že je kontejner SQL MCP Serveru spuštěný a v pořádku.
- Ověřte, že cesta ke koncovému bodu MCP (
/mcp) odpovídá konfiguraci DAB.