Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Bedeutung
Der SQL Model Context Protocol (MCP)-Server ist in Daten-API-Generator, Version 1.7 und höher, verfügbar.
Diese Schnellstartanleitung verwendet Aspire zum Erstellen einer containerbasierten Lösung. Die Lösung beinhaltet Folgendes:
- Eine SQL-Datenbank mit Beispieldaten
- Ein SQL Model Context Protocol (MCP)-Server, der vom Daten-API-Generator unterstützt wird
- MCP Inspector für Testzwecke
Aspire führt alles für Sie aus, startet Dienstleistungen und verbindet Container und stoppt Dienste, wenn Sie es schließen.
Voraussetzungen
Installieren Sie diese Tools, bevor Sie beginnen.
1. .NET 10
In diesem Schritt bereiten Sie Ihre Maschine mit den erforderlichen Voraussetzungen für diesen Schnellstart vor.
Von Bedeutung
Möglicherweise ist dieses Tool bereits installiert. Testen Sie das Programm, indem Sie ausführen und bestätigen, dass es Version 10 oder höher anzeigt. Wenn Sie diese Installation ausführen und .NET bereits vorhanden ist, wird Ihr System aktualisiert, ohne dass Probleme auftreten.
- Windows
- macOS
winget install Microsoft.DotNet.SDK.10
2. Containerlaufzeit
In diesem Schritt installieren Sie Docker Desktop, um das Aspire-Projekt zu unterstützen.
Von Bedeutung
Möglicherweise ist dieses Tool bereits installiert. Testen Sie sie, indem Sie ausführen , um zu bestätigen, dass Docker verfügbar ist. Wenn Sie diese Installation ausführen und Docker bereits vorhanden ist, wird Ihr System aktualisiert, ohne dass Probleme auftreten.
- Windows
- macOS
winget install Docker.DockerDesktop
Hinweis
Podman funktioniert auch, aber Setup variiert. Entwickler, die Podman bevorzugen, können diese Schritte anpassen.
3. Tools zum Erstellen von Aspire- und Daten-API
In diesem Schritt erstellen Sie die standardmäßigen Projektdateien von Aspire, die später verwendet werden. Führen Sie die folgenden Befehle aus:
dotnet new tool-manifest
dotnet tool install aspire.cli
dotnet tool install microsoft.dataapibuilder
aspire init
Hinweis
SQL MCP Server-Features sind in Data API Builder Version 1.7 und höher verfügbar.
Wenn Sie dazu aufgefordert werden, wählen Sie alle Standardwerte aus.
Mit diesem Befehl werden die Tools installiert und die folgenden Dateien erstellt:
.
├── .config
│ └── dotnet-tools.json
├── AppHost.cs
└── apphost.run.json
4. Füllen Sie die AppHost.cs Datei aus.
In diesem Schritt aktualisieren Sie mit dem richtigen Code, um diesen Quickstart durchzuführen. Ersetzen Sie den Inhalt von durch den folgenden Code.
#: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")
.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);
""";
Dieser Code konfiguriert die folgenden Ressourcen:
.
├── SQL Server (sql)
│ └── SQL Database (productsdb)
└── SQL MCP Server (sql-mcp-server)
└── MCP Inspector (inspector)
Diagramm, das die Aspire-Ressourcen und deren Verbindungen zeigt.
5. Erstellen Ihrer dab-config.json Datei
Führen Sie die folgenden Befehle im Projektordner aus (derselbe Ordner, in dem sich befindet):
Die Syntax @env('MSSQL_CONNECTION_STRING') weist den Data-API-Builder an, die Verbindungszeichenfolge aus einer Umgebungsvariable zur Laufzeit zu lesen. Aspire legt diese Variable automatisch fest, wenn sie den Container startet, sodass Sie sie nicht lokal festlegen müssen.
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."
Hinweis
Der Ausdruck ist ein DAB-Konfigurationsfeature, das Umgebungsvariablen zur Laufzeit auflöst, nicht während . Die generierte enthält die Literalzeichenfolge , die von DAB beim Start des Containers aufgelöst wird.
Die Datei konfiguriert SQL MCP Server für die Verbindung mit Ihrer Datenbank und identifiziert, welche Objekte verfügbar gemacht werden sollen. In diesem Fall wird verfügbar gemacht.
Mit diesem Befehl wird Ihrem Projekt eine neue Datei hinzugefügt:
dab-config.json
Von Bedeutung
Die Datei muss sich im selben Verzeichnis befinden, in dem Sie ausführen, da der Bind-Mount einen relativen Pfad () verwendet.
Fügen Sie optional Feldbeschreibungen hinzu. Mit diesen Metadaten können Sprachmodelle Ihr Schema verstehen.
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"
Testen Ihrer Lösung
In diesem Schritt führen Sie Ihre Aspire-Umgebung aus und bestätigen, dass SQL Server, SQL MCP Server und MCP Inspector zusammenarbeiten.
1. Start Aspire
aspire run
Von Bedeutung
Stellen Sie sicher, dass Docker ausgeführt wird. Aspire erfordert, dass Ihr Containerhost ordnungsgemäß funktioniert.
Wenn das Dashboard geöffnet wird, werden Links für Swagger, MCP und Inspector angezeigt.
Screenshot des Aspire-Dashboards mit der laufenden Umgebung.
Erwartete URLs
Das Aspire-Dashboard zeigt diese Links an (Ports werden dynamisch zugewiesen):
| Resource | Link | Description |
|---|---|---|
| sql-mcp-server | Swagger | REST-API-Dokumentation |
| sql-mcp-server | MCP | MCP-Endpunkt () |
| Inspektor | Inspektor | MCP Inspector-Benutzeroberfläche |
2. Testen der REST-API mit Swagger
Wählen Sie Swagger aus dem Dashboard aus.
Probieren Sie den Vorgang für Produkte aus. Dieser Test bestätigt, dass SQL MCP Server ausgeführt wird und eine Verbindung mit der Datenbank herstellen kann.
3. Entdecken Sie die MCP-Tools
Wählen Sie " Inspektor" aus dem Dashboard aus.
Try:
- um verfügbare MCP-Tools anzuzeigen
- für die Entität
Versuchen Sie einen Filter (Beispielsyntax):
{ "filter": "Price gt 20" }
Dieser Test bestätigt, dass MCP funktioniert.
4. Aspire anhalten
Zum Beenden von Aspire drücken Sie .
Aspire stoppt alle Dienste. SQL Server Daten bleiben zwischen ausgeführten Vorgängen bestehen, da der Code .WithDataVolume() und .WithLifetime(ContainerLifetime.Persistent) verwendet.
Problembehandlung
SQL MCP Server-Container kann nicht gestartet werden
- Überprüfen Sie die Containerprotokolle im Aspire-Dashboard auf Fehlerdetails.
- Überprüfen Sie, ob das -Argument mit der erwarteten Syntax des DAB-Containers übereinstimmt (bei einigen Versionen wird möglicherweise verwendet).
- Stellen Sie sicher, dass im selben Verzeichnis vorhanden ist, in dem Sie ausführen.
Datenbankinitialisierungsskript nicht gefunden
- Überprüfen Sie, ob sich im AppHost-Projektverzeichnis befindet
- Überprüfen Sie, ob die Datei im Projekt enthalten ist, und kopieren Sie sie bei Bedarf in die Ausgabe.
MCP Inspector kann keine Verbindung herstellen
- Vergewissern Sie sich, dass der SQL MCP Server-Container ausgeführt und fehlerfrei ist.
- Überprüfen, ob der MCP-Endpunktpfad () mit der DAB-Konfiguration übereinstimmt
Verwandte Inhalte
- Übersicht über SQL MCP Server
- Datenmanipulationstools in SQL MCP Server
- Hinzufügen von semantischen Beschreibungen zu SQL MCP Server