Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Viktigt!
SQL MCP Server är en förhandsversion och den här dokumentationen och motorimplementeringen kan komma att ändras under den här utvärderingsperioden.
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.
Windows
winget install Microsoft.DotNet.SDK.10
Eller ladda ned
https://get.dot.net
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.
Windows
winget install Docker.DockerDesktop
macOS
brew install --cask docker
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 --prerelease
aspire init
Anmärkning
SQL MCP Server är för närvarande i förhandsversion.
--prerelease Med hjälp av flaggan får du den senaste versionen av Data API Builder med alla funktioner som används i den här snabbstarten.
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
#: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", "1.7.83-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).
Syntaxen @env('MSSQL_CONNECTION_STRING') anger Data API Builder att läsa anslutningssträngen från en miljövariabel under 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).
Du kan också lägga till fältbeskrivningar
Dessa metadata kan hjälpa språkmodeller att förstå ditt schema.
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 krä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