Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Viktigt!
MCP-servern (SQL Model Context Protocol) är tillgänglig i Data API Builder version 1.7. För de senaste funktionerna och felkorrigeringarna använder du förhandsversionen av 2.0.
Den här snabbstarten använder Aspire för att skapa en containerbaserad lösning. Lösningen innehåller:
- En SQL-databas med exempeldata
- En MCP-server (SQL Model Context Protocol) som drivs av Data API Builder
- MCP-inspektör för testning
Aspire kör allt åt dig, startar tjänster och ansluter containrar och stoppar tjänster när du stänger det.
Förutsättningar
Installera dessa verktyg innan du börjar.
1. .NET 10
I det här steget förbereder du datorn med de krav som krävs för den här snabbstarten.
Viktigt!
Du kanske redan har det här verktyget installerat. Testa det genom att köra dotnet --version och bekräfta att det rapporterar version 10 eller senare. Om du kör den här installationen och .NET redan finns uppdaterar den systemet utan att orsaka några problem.
2. Containerkörning
I det här steget installerar du Docker Desktop för att stödja Aspire-projektet.
Viktigt!
Du kanske redan har det här verktyget installerat. Testa det genom att köra docker --version för att bekräfta att Docker är tillgängligt. Om du kör den här installationen och Docker redan finns uppdaterar den systemet utan att orsaka några problem.
Anmärkning
Podman fungerar också, men konfigurationen varierar. Utvecklare som föredrar Podman kan anpassa de här stegen.
3. Aspire- och Data API Builder-verktyg
I det här steget skapar du standardprojektfilerna för Aspire som används senare. Kör följande kommandon:
dotnet new tool-manifest
dotnet tool install aspire.cli
dotnet tool install microsoft.dataapibuilder
aspire init
Anmärkning
SQL MCP Server-funktioner är tillgängliga i Data API Builder version 1.7 och senare.
När du uppmanas till det väljer du alla standardvärden.
Det här kommandot installerar verktygen och skapar följande filer:
.
├── .config
│ └── dotnet-tools.json
├── AppHost.cs
└── apphost.run.json
4. Slutför filen AppHost.cs
I det här steget uppdaterar AppHost.cs du med rätt kod för att köra den här snabbstarten. Ersätt innehållet i AppHost.cs med följande kod:
#: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.1-rc")
.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);
""";
Den här koden konfigurerar följande resurser:
.
├── SQL Server (sql)
│ └── SQL Database (productsdb)
└── SQL MCP Server (sql-mcp-server)
└── MCP Inspector (inspector)
5. Skapa din dab-config.json-fil
Kör dessa kommandon i projektmappen (samma mapp där AppHost.cs finns):
Syntaxkommandot @env('MSSQL_CONNECTION_STRING') instruerar Data API Builder att läsa anslutningssträngen från en miljövariabel vid körning. Aspire anger den här variabeln automatiskt när den startar containern, så du behöver inte ange den lokalt.
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."
Anmärkning
Uttrycket @env(...) är en DAB-konfigurationsfunktion som löser miljövariabler vid körning, inte under dab init. Den genererade dab-config.json innehåller den bokstavliga strängen @env('MSSQL_CONNECTION_STRING'), som DAB löser när containern startar.
Filen dab-config.json konfigurerar SQL MCP Server för att ansluta till databasen och identifierar vilka objekt som ska exponeras. I det här fallet Products exponeras.
Det här kommandot lägger till en ny fil i projektet:
dab-config.json
Viktigt!
Filen dab-config.json måste finnas i samma katalog där du kör aspire run, eftersom bindmonteringen använder en relativ sökväg (./dab-config.json).
Varning
Utan fältbeskrivningar ser agenter bara entitetsnamn och kan gissa kolumnnamn felaktigt. Lägg alltid till fältmetadata för användbart agentbeteende.
Lägg till fältbeskrivningar i dina entiteter:
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"
Testa din lösning
I det här steget kör du din Aspire-miljö och bekräftar att SQL Server, SQL MCP Server och MCP Inspector fungerar tillsammans.
1. Starta Aspire
aspire run
Viktigt!
Kontrollera att Docker körs. Aspire kräver att containervärden fungerar korrekt.
När instrumentpanelen öppnas visas länkar för Swagger, MCP och Inspector.
Förväntade URL:er
På Aspire-instrumentpanelen visas dessa länkar (portar tilldelas dynamiskt):
| Resource | Länk | Description |
|---|---|---|
| sql-mcp-server | Swagger | REST API-dokumentation |
| sql-mcp-server | MCP | MCP-slutpunkt (/mcp) |
| inspektör | Inspektör | Användargränssnitt för MCP-inspektör |
2. Testa REST-API:et med Swagger
Välj Swagger på instrumentpanelen.
Prova åtgärden GET för Produkter. Det här testet bekräftar att SQL MCP Server körs och kan ansluta till databasen.
3. Utforska MCP-verktygen
Välj Kontroll på instrumentpanelen.
Try:
-
list_toolsför att se tillgängliga MCP-verktyg -
read_recordsför entitetenProducts
Prova ett filter (exempelsyntax):
{ "filter": "Price gt 20" }
Det här testet bekräftar att MCP fungerar.
4. Stoppa Aspire
Tryck på Ctrl+Cför att stoppa Aspire.
Aspire stoppar alla tjänster. SQL Server data bevaras mellan körningar eftersom koden använder .WithDataVolume() och .WithLifetime(ContainerLifetime.Persistent).
Felsökning
SQL MCP Server-containern startar inte
- Kontrollera containerloggarna på Aspire-instrumentpanelen för felinformation
- Kontrollera att
--configargumentet matchar DAB-containerns förväntade syntax (vissa versioner kan användas--ConfigFileNamei stället) - Se till att
dab-config.jsondet finns i samma katalog där du köraspire run
Det går inte att hitta databasinitieringsskriptet
- Verifiera
init-db.sqlfinns i AppHost-projektkatalogen - Kontrollera att filen ingår i projektet och kopieras till utdata om det behövs
MCP-inspektören kan inte ansluta
- Bekräfta att SQL MCP Server-containern körs och är felfri
- Kontrollera att MCP-slutpunktssökvägen (
/mcp) matchar DAB-konfigurationen