Gå til indhold
Docs Try Aspire
Docs Try

Resource MCP servers

Dette indhold er ikke tilgængeligt i dit sprog endnu.

Aspire resources can expose their own MCP (Model Context Protocol) servers, enabling AI coding agents to interact directly with databases, APIs, and other services. For example, a PostgreSQL resource can expose SQL query tools, allowing an agent to run queries without leaving the conversation.

When a resource is annotated with WithMcpServer() in the AppHost, Aspire discovers the MCP endpoint and makes its tools available in two ways:

  • Through the Aspire MCP server — resource tools are automatically proxied alongside the built-in Aspire MCP server tools. AI agents see them in their tool list without any extra configuration.
  • Through the CLI — use aspire mcp tools and aspire mcp call to discover and invoke resource tools directly from the terminal.

Use the WithMcpServer() extension method to declare that a resource hosts an MCP server:

AppHost.cs
#pragma warning disable ASPIREMCP001
var builder = DistributedApplication.CreateBuilder(args);
var db = builder.AddPostgres("db")
.AddDatabase("appdata");
// Expose PostgreSQL MCP tools (SQL queries, schema inspection, etc.)
db.WithPostgresMcp();
builder.Build().Run();

Use aspire mcp tools to list all MCP tools exposed by running resources:

Aspire CLI
aspire mcp tools

For machine-readable output including input schemas:

Aspire CLI — JSON output
aspire mcp tools --format Json

Use aspire mcp call to invoke a specific tool on a resource:

Aspire CLI
aspire mcp call <resource> <tool> --input '{"key": "value"}'

For example, to run a SQL query on a PostgreSQL resource:

Aspire CLI — Query example
aspire mcp call appdata query --input '{"sql": "SELECT * FROM users LIMIT 5"}'

You can add any container that implements the MCP protocol as an MCP-enabled resource. Use WithMcpServer() to tell Aspire where the MCP endpoint lives:

AppHost.cs
#pragma warning disable ASPIREMCP001
var builder = DistributedApplication.CreateBuilder(args);
// Add a custom MCP server container
var myMcpServer = builder.AddContainer("my-mcp", "myregistry/my-mcp-server")
.WithHttpEndpoint(targetPort: 8080)
.WithMcpServer("/mcp");
builder.Build().Run();

The WithMcpServer() method accepts an optional path and endpoint name:

  • WithMcpServer() — uses the default HTTP endpoint at the root path
  • WithMcpServer("/mcp") — uses the default HTTP endpoint at /mcp
  • WithMcpServer("/sse", endpointName: "https") — uses a named endpoint at /sse