リソース MCP サーバー
Aspire リソースは、独自の MCP (Model Context Protocol) サーバーを公開でき、AI コーディング エージェントがデータベース、API、その他のサービスと直接対話できるようにします。例えば、PostgreSQL リソースは SQL クエリ ツールを公開でき、エージェントが会話を終了することなくクエリを実行できます。
AppHost で WithMcpServer() で注釈が付けられたリソースの場合、Aspire は MCP エンドポイントを検出し、そのツールを 2 つの方法で利用可能にします。
- Aspire MCP サーバーを通じて — リソース ツールが、組み込みの Aspire MCP サーバー ツールと共に自動的にプロキシされます。AI エージェントは追加の構成なしでツール リストにそれらを表示します。
- CLI を通じて —
aspire mcp toolsとaspire mcp callを使用してリソース ツールをターミナルから直接検出して呼び出します。
リソースに MCP サーバーを追加する
Section titled “リソースに MCP サーバーを追加する”WithMcpServer() 拡張メソッドを使用して、リソースが MCP サーバーをホストしていることを宣言します。
#pragma warning disable ASPIREMCP001
var builder = DistributedApplication.CreateBuilder(args);
var db = builder.AddPostgres("db") .AddDatabase("appdata");
// PostgreSQL MCP ツール (SQL クエリ、スキーマ検査など) を公開しますdb.WithPostgresMcp();
builder.Build().Run();import { function createBuilder(): IDistributedApplicationBuilder
Creates a new distributed application builder
createBuilder } from './.aspire/modules/aspire.mjs';
const const builder: IDistributedApplicationBuilder
builder = await function createBuilder(): IDistributedApplicationBuilder
Creates a new distributed application builder
createBuilder();
const const db: PostgresDatabaseResource
db = await const builder: IDistributedApplicationBuilder
builder .IDistributedApplicationBuilder.addPostgres(name: string, options?: { userName?: string | ParameterResource; password?: string | ParameterResource; port?: number;}): PostgresServerResource (+1 overload)
Adds a PostgreSQL resource to the application model. A container is used for local development.
addPostgres("db") .PostgresServerResource.addDatabase(name: string, options?: { databaseName?: string;} | undefined): PostgresDatabaseResource (+1 overload)
Adds a PostgreSQL database to the application model.
addDatabase("appdata");
// PostgreSQL MCP ツール (SQL クエリ、スキーマ検査など) を公開しますawait const db: PostgresDatabaseResource
db.PostgresDatabaseResource.withPostgresMcp(options?: { configureContainer?: ((obj: PostgresMcpContainerResource) => Promise<void>) | undefined; containerName?: string;} | undefined): PostgresDatabaseResource (+1 overload)
Adds a Postgres MCP server container and configures it to connect to the database represented by builder.
withPostgresMcp();
await const builder: IDistributedApplicationBuilder
builder.IDistributedApplicationBuilder.build(): DistributedApplication
Builds the distributed application
build().DistributedApplication.run(cancellationToken?: cancellationToken): void
Runs the distributed application
run();利用可能なツールを検出する
Section titled “利用可能なツールを検出する”aspire mcp tools を使用して、実行中のリソースによって公開されているすべての MCP ツールをリスト表示します。
aspire mcp tools入力スキーマを含むマシン読み取り可能な出力の場合:
aspire mcp tools --format Jsonツールを呼び出す
Section titled “ツールを呼び出す”aspire mcp call を使用して、リソース上の特定のツールを呼び出します。
aspire mcp call <resource> <tool> --input '{"key": "value"}'例えば、PostgreSQL リソースで SQL クエリを実行するには:
aspire mcp call appdata query --input '{"sql": "SELECT * FROM users LIMIT 5"}'カスタム MCP サーバー リソース
Section titled “カスタム MCP サーバー リソース”MCP プロトコルを実装するコンテナーを MCP 対応リソースとして追加できます。WithMcpServer() を使用して、Aspire に MCP エンドポイントの場所を指示します。
#pragma warning disable ASPIREMCP001
var builder = DistributedApplication.CreateBuilder(args);
// カスタム MCP サーバー コンテナーを追加しますvar myMcpServer = builder.AddContainer("my-mcp", "myregistry/my-mcp-server") .WithHttpEndpoint(targetPort: 8080) .WithMcpServer("/mcp");
builder.Build().Run();import { function createBuilder(): IDistributedApplicationBuilder
Creates a new distributed application builder
createBuilder } from './.aspire/modules/aspire.mjs';
const const builder: IDistributedApplicationBuilder
builder = await function createBuilder(): IDistributedApplicationBuilder
Creates a new distributed application builder
createBuilder();
// カスタム MCP サーバー コンテナーを追加しますconst const myMcpServer: ContainerResource
myMcpServer = await const builder: IDistributedApplicationBuilder
builder .IDistributedApplicationBuilder.addContainer(name: string, image: AddContainerOptions): ContainerResource
Adds a container resource to the application.
addContainer("my-mcp", { AddContainerOptions.image: string
image: "myregistry/my-mcp-server", AddContainerOptions.tag: string
tag: "latest" }) .ContainerResource.withHttpEndpoint(options?: { port?: number; targetPort?: number; name?: string; env?: string; isProxied?: boolean;} | undefined): ContainerResource (+1 overload)
Adds an HTTP endpoint
withHttpEndpoint({ targetPort?: number | undefined
targetPort: 8080 }) .ContainerResource.withMcpServer(path?: string, endpointName?: string): ContainerResource (+1 overload)
Marks the resource as hosting a Model Context Protocol (MCP) server on the specified endpoint.
withMcpServer("/mcp");
await const builder: IDistributedApplicationBuilder
builder.IDistributedApplicationBuilder.build(): DistributedApplication
Builds the distributed application
build().DistributedApplication.run(cancellationToken?: cancellationToken): void
Runs the distributed application
run();WithMcpServer() メソッドはオプションのパスとエンドポイント名を受け入れます。
WithMcpServer()— ルート パスでデフォルトの HTTP エンドポイントを使用しますWithMcpServer("/mcp")—/mcpでデフォルトの HTTP エンドポイントを使用しますWithMcpServer("/sse", endpointName: "https")—/sseで名前付きエンドポイントを使用します
- AI コーディング エージェントを使用する — プロジェクトを AI エージェント用に設定します
- Aspire MCP サーバー — 組み込みの MCP サーバー ツール
- ASPIREMCP001 診断 — 実験的な MCP サーバー API 警告
- ASPIREPOSTGRES001 診断 — 実験的な PostgreSQL MCP 警告