mirror of
https://github.com/github/awesome-copilot.git
synced 2026-02-24 04:15:14 +00:00
refactor(aspire): flatten skill to references/, version-gate MCP tools, simplify integrations catalog
- Move all reference docs from cli/, mcp/, framework/ subfolders into references/ per agentskills.io spec - Update all cross-references in SKILL.md and reference files - Version-gate MCP tools: 9 tools in 13.1+, docs tools (list_docs/search_docs/get_doc) in 13.2+ - Simplify integrations-catalog.md to lead with MCP tool discovery (list_integrations/get_integration_docs) - Remove .vscode/mcp.json (test artifact from aspire mcp init)
This commit is contained in:
@@ -1,14 +1,36 @@
|
||||
# Integrations Catalog — Complete Reference
|
||||
# Integrations Catalog
|
||||
|
||||
Aspire has **144+ integrations** across 13 categories, with **90+ NuGet packages**. Each integration typically provides two packages:
|
||||
Aspire has **144+ integrations** across 13 categories. Rather than maintaining a static list, use the MCP tools to get live, up-to-date integration data.
|
||||
|
||||
- **Hosting package** (`Aspire.Hosting.*`) — adds the resource to the AppHost
|
||||
- **Client package** (`Aspire.*`) — configures the client SDK in your service with health checks, telemetry, and retries
|
||||
---
|
||||
|
||||
## Discovering integrations (MCP tools)
|
||||
|
||||
The Aspire MCP server provides two tools for integration discovery — these work on **all CLI versions** (13.1+) and do **not** require a running AppHost.
|
||||
|
||||
| Tool | What it does | When to use |
|
||||
| ---------------------- | -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
|
||||
| `list_integrations` | Returns all available Aspire hosting integrations with their NuGet package IDs | "What integrations are available for databases?" / "Show me all Redis-related integrations" |
|
||||
| `get_integration_docs` | Retrieves detailed documentation for a specific integration package (setup, configuration, code samples) | "How do I configure PostgreSQL?" / "Show me the docs for `Aspire.Hosting.Redis`" |
|
||||
|
||||
### Workflow
|
||||
|
||||
1. **Browse** — Call `list_integrations` to see what's available. Filter results by category or keyword.
|
||||
2. **Deep dive** — Call `get_integration_docs` with the package ID (e.g., `Aspire.Hosting.Redis`) and version (e.g., `9.0.0`) to get full setup instructions.
|
||||
3. **Add** — Run `aspire add <integration>` to install the hosting package into your AppHost.
|
||||
|
||||
> **Tip:** These tools return the same data as the [official integrations gallery](https://aspire.dev/integrations/gallery/). Prefer them over static docs — integrations are added frequently.
|
||||
|
||||
---
|
||||
|
||||
## Integration pattern
|
||||
|
||||
Every integration follows a two-package pattern:
|
||||
|
||||
- **Hosting package** (`Aspire.Hosting.*`) — adds the resource to the AppHost
|
||||
- **Client package** (`Aspire.*`) — configures the client SDK in your service with health checks, telemetry, and retries
|
||||
- **Community Toolkit** (`CommunityToolkit.Aspire.*`) — community-maintained integrations from [Aspire Community Toolkit](https://github.com/CommunityToolkit/Aspire)
|
||||
|
||||
```csharp
|
||||
// === AppHost (hosting side) ===
|
||||
var redis = builder.AddRedis("cache"); // Aspire.Hosting.Redis
|
||||
@@ -16,263 +38,31 @@ var api = builder.AddProject<Projects.Api>("api")
|
||||
.WithReference(redis);
|
||||
|
||||
// === Service (client side) — in API's Program.cs ===
|
||||
builder.AddRedisClient("cache"); // Aspire.Redis
|
||||
builder.AddRedisClient("cache"); // Aspire.StackExchange.Redis
|
||||
// Automatically configures: connection string, health checks, OpenTelemetry, retries
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## AI
|
||||
## Categories at a glance
|
||||
|
||||
| Integration | Hosting Package | Client Package |
|
||||
|---|---|---|
|
||||
| Azure OpenAI | `Aspire.Hosting.Azure.CognitiveServices` | `Aspire.Azure.AI.OpenAI` |
|
||||
| OpenAI | — | `Aspire.OpenAI` |
|
||||
| Ollama | `Aspire.Hosting.Ollama` | `Aspire.Ollama` |
|
||||
| GitHub Models | — | `Aspire.GitHubModels` |
|
||||
Use `list_integrations` for the full live list. This summary covers the major categories:
|
||||
|
||||
```csharp
|
||||
// AppHost: Azure OpenAI
|
||||
var openai = builder.AddAzureOpenAI("openai")
|
||||
.AddDeployment(new("gpt-4o", "gpt-4o", "2024-08-06"));
|
||||
| Category | Key integrations | Example hosting package |
|
||||
| ------------------- | ------------------------------------------------------------------------------------- | ---------------------------------------- |
|
||||
| **AI** | Azure OpenAI, OpenAI, GitHub Models, Ollama | `Aspire.Hosting.Azure.CognitiveServices` |
|
||||
| **Caching** | Redis, Garnet, Valkey, Azure Cache for Redis | `Aspire.Hosting.Redis` |
|
||||
| **Cloud / Azure** | Storage, Cosmos DB, Service Bus, Key Vault, Event Hubs, Functions, SQL, SignalR (25+) | `Aspire.Hosting.Azure.Storage` |
|
||||
| **Cloud / AWS** | AWS SDK integration | `Aspire.Hosting.AWS` |
|
||||
| **Databases** | PostgreSQL, SQL Server, MongoDB, MySQL, Oracle, Elasticsearch, Milvus, Qdrant, SQLite | `Aspire.Hosting.PostgreSQL` |
|
||||
| **DevTools** | Data API Builder, Dev Tunnels, Mailpit, k6, Flagd, Ngrok, Stripe | `Aspire.Hosting.DevTunnels` |
|
||||
| **Messaging** | RabbitMQ, Kafka, NATS, ActiveMQ, LavinMQ | `Aspire.Hosting.RabbitMQ` |
|
||||
| **Observability** | OpenTelemetry (built-in), Seq, OTel Collector | `Aspire.Hosting.Seq` |
|
||||
| **Compute** | Docker Compose, Kubernetes | `Aspire.Hosting.Docker` |
|
||||
| **Reverse Proxies** | YARP | `Aspire.Hosting.Yarp` |
|
||||
| **Security** | Keycloak | `Aspire.Hosting.Keycloak` |
|
||||
| **Frameworks** | JavaScript, Python, Go, Java, Rust, Bun, Deno, Orleans, MAUI, Dapr, PowerShell | `Aspire.Hosting.Python` |
|
||||
|
||||
// AppHost: Ollama (local)
|
||||
var ollama = builder.AddOllama("ollama")
|
||||
.AddModel("llama3.2")
|
||||
.WithDataVolume();
|
||||
```
|
||||
For polyglot framework method signatures, see [Polyglot APIs](polyglot-apis.md).
|
||||
|
||||
---
|
||||
|
||||
## Caching
|
||||
|
||||
| Integration | Hosting Package | Client Package |
|
||||
|---|---|---|
|
||||
| Redis | `Aspire.Hosting.Redis` | `Aspire.StackExchange.Redis` |
|
||||
| Redis (output caching) | `Aspire.Hosting.Redis` | `Aspire.StackExchange.Redis.OutputCaching` |
|
||||
| Redis (distributed cache) | `Aspire.Hosting.Redis` | `Aspire.StackExchange.Redis.DistributedCaching` |
|
||||
| Garnet | `Aspire.Hosting.Garnet` | `Aspire.StackExchange.Redis` (wire-compatible) |
|
||||
| Valkey | `Aspire.Hosting.Valkey` | `Aspire.StackExchange.Redis` (wire-compatible) |
|
||||
|
||||
```csharp
|
||||
var redis = builder.AddRedis("cache")
|
||||
.WithRedisCommander() // adds Redis Commander UI
|
||||
.WithRedisInsight() // adds RedisInsight UI
|
||||
.WithDataVolume() // persist data across restarts
|
||||
.WithPersistence(); // enable RDB snapshots
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Cloud / Azure (25+ integrations)
|
||||
|
||||
| Integration | Hosting Package | Client Package |
|
||||
|---|---|---|
|
||||
| AI Foundry | `Aspire.Hosting.Azure.AIFoundry` | `Aspire.Azure.AI.Foundry` |
|
||||
| App Configuration | `Aspire.Hosting.Azure.AppConfiguration` | `Aspire.Azure.AppConfiguration` |
|
||||
| Blob Storage | `Aspire.Hosting.Azure.Storage` | `Aspire.Azure.Storage.Blobs` |
|
||||
| Queue Storage | `Aspire.Hosting.Azure.Storage` | `Aspire.Azure.Storage.Queues` |
|
||||
| Table Storage | `Aspire.Hosting.Azure.Storage` | `Aspire.Azure.Storage.Tables` |
|
||||
| Cosmos DB | `Aspire.Hosting.Azure.CosmosDB` | `Aspire.Microsoft.Azure.Cosmos` |
|
||||
| Cosmos DB (EF Core) | `Aspire.Hosting.Azure.CosmosDB` | `Aspire.Microsoft.EntityFrameworkCore.Cosmos` |
|
||||
| Event Hubs | `Aspire.Hosting.Azure.EventHubs` | `Aspire.Azure.Messaging.EventHubs` |
|
||||
| Key Vault | `Aspire.Hosting.Azure.KeyVault` | `Aspire.Azure.Security.KeyVault` |
|
||||
| Search (AI Search) | `Aspire.Hosting.Azure.Search` | `Aspire.Azure.Search.Documents` |
|
||||
| Service Bus | `Aspire.Hosting.Azure.ServiceBus` | `Aspire.Azure.Messaging.ServiceBus` |
|
||||
| SignalR | `Aspire.Hosting.Azure.SignalR` | `Aspire.Azure.SignalR` |
|
||||
| Web PubSub | `Aspire.Hosting.Azure.WebPubSub` | `Aspire.Azure.Messaging.WebPubSub` |
|
||||
| Azure Functions | `Aspire.Hosting.Azure.Functions` | — |
|
||||
| Azure SQL | `Aspire.Hosting.Azure.Sql` | `Aspire.Azure.Sql` |
|
||||
| Azure PostgreSQL | `Aspire.Hosting.Azure.PostgreSQL` | Built on `Aspire.Npgsql` |
|
||||
| Azure Redis | `Aspire.Hosting.Azure.Redis` | Built on `Aspire.StackExchange.Redis` |
|
||||
|
||||
```csharp
|
||||
// Azure Storage (Blob + Queue + Table)
|
||||
var storage = builder.AddAzureStorage("storage")
|
||||
.RunAsEmulator(); // use Azurite locally
|
||||
var blobs = storage.AddBlobs("blobs");
|
||||
var queues = storage.AddQueues("queues");
|
||||
|
||||
// Cosmos DB with emulator for local dev
|
||||
var cosmos = builder.AddAzureCosmosDB("cosmos")
|
||||
.RunAsEmulator()
|
||||
.AddDatabase("mydb");
|
||||
|
||||
// Service Bus
|
||||
var sb = builder.AddAzureServiceBus("messaging")
|
||||
.AddQueue("orders")
|
||||
.AddTopic("events", topic => topic.AddSubscription("processor"));
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Databases
|
||||
|
||||
| Integration | Hosting Package | Client Package |
|
||||
|---|---|---|
|
||||
| PostgreSQL | `Aspire.Hosting.PostgreSQL` | `Aspire.Npgsql` |
|
||||
| PostgreSQL (EF Core) | `Aspire.Hosting.PostgreSQL` | `Aspire.Npgsql.EntityFrameworkCore.PostgreSQL` |
|
||||
| SQL Server | `Aspire.Hosting.SqlServer` | `Aspire.Microsoft.Data.SqlClient` |
|
||||
| SQL Server (EF Core) | `Aspire.Hosting.SqlServer` | `Aspire.Microsoft.EntityFrameworkCore.SqlServer` |
|
||||
| MongoDB | `Aspire.Hosting.MongoDB` | `Aspire.MongoDB.Driver` |
|
||||
| MySQL / MariaDB | `Aspire.Hosting.MySql` | `Aspire.MySqlConnector` |
|
||||
| MySQL (EF Core) | `Aspire.Hosting.MySql` | `Aspire.Pomelo.EntityFrameworkCore.MySql` |
|
||||
| Oracle (EF Core) | `Aspire.Hosting.Oracle` | `Aspire.Oracle.EntityFrameworkCore` |
|
||||
| Elasticsearch | `Aspire.Hosting.Elasticsearch` | `Aspire.Elastic.Clients.Elasticsearch` |
|
||||
| Milvus (vector DB) | `Aspire.Hosting.Milvus` | `Aspire.Milvus.Client` |
|
||||
| Qdrant (vector DB) | `Aspire.Hosting.Qdrant` | `Aspire.Qdrant.Client` |
|
||||
| SurrealDB | `CommunityToolkit.Aspire.Hosting.SurrealDb` | Community |
|
||||
| RavenDB | `CommunityToolkit.Aspire.Hosting.RavenDB` | Community |
|
||||
| KurrentDB | `CommunityToolkit.Aspire.Hosting.KurrentDB` | Community |
|
||||
| SQLite (EF Core) | — | `Aspire.Microsoft.EntityFrameworkCore.Sqlite` |
|
||||
|
||||
```csharp
|
||||
// PostgreSQL with pgAdmin and pgWeb UIs
|
||||
var postgres = builder.AddPostgres("pg")
|
||||
.WithPgAdmin()
|
||||
.WithPgWeb()
|
||||
.WithDataVolume()
|
||||
.AddDatabase("catalog");
|
||||
|
||||
// MongoDB with Mongo Express UI
|
||||
var mongo = builder.AddMongoDB("mongo")
|
||||
.WithMongoExpress()
|
||||
.WithDataVolume()
|
||||
.AddDatabase("analytics");
|
||||
|
||||
// SQL Server
|
||||
var sql = builder.AddSqlServer("sql")
|
||||
.WithDataVolume()
|
||||
.AddDatabase("orders");
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## DevTools
|
||||
|
||||
| Integration | Hosting Package | Purpose |
|
||||
|---|---|---|
|
||||
| Data API Builder (DAB) | `Aspire.Hosting.DataAPIBuilder` | REST/GraphQL over databases |
|
||||
| Dev Tunnels | `Aspire.Hosting.DevTunnels` | Public URL tunnels for local dev |
|
||||
| Flagd | `CommunityToolkit.Aspire.Hosting.Flagd` | Feature flags (OpenFeature) |
|
||||
| k6 | `CommunityToolkit.Aspire.Hosting.k6` | Load testing |
|
||||
| Mailpit | `CommunityToolkit.Aspire.Hosting.Mailpit` | Email testing |
|
||||
| SQL Database Projects | `Aspire.Hosting.SqlDatabaseProjects` | SQL schema deployment |
|
||||
|
||||
---
|
||||
|
||||
## Messaging
|
||||
|
||||
| Integration | Hosting Package | Client Package |
|
||||
|---|---|---|
|
||||
| RabbitMQ | `Aspire.Hosting.RabbitMQ` | `Aspire.RabbitMQ.Client` |
|
||||
| Kafka | `Aspire.Hosting.Kafka` | `Aspire.Confluent.Kafka` |
|
||||
| NATS | `Aspire.Hosting.Nats` | `Aspire.NATS.Net` |
|
||||
| LavinMQ | `CommunityToolkit.Aspire.Hosting.LavinMQ` | `Aspire.RabbitMQ.Client` (AMQP-compat) |
|
||||
|
||||
```csharp
|
||||
var rabbit = builder.AddRabbitMQ("messaging")
|
||||
.WithManagementPlugin() // adds management UI
|
||||
.WithDataVolume();
|
||||
|
||||
var kafka = builder.AddKafka("kafka")
|
||||
.WithKafkaUI(); // adds Kafka UI
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Observability
|
||||
|
||||
| Integration | Package | Purpose |
|
||||
|---|---|---|
|
||||
| OpenTelemetry | Built-in | Traces, metrics, logs (auto-configured) |
|
||||
| Seq | `Aspire.Hosting.Seq` | Structured log aggregation |
|
||||
| Grafana + Prometheus | Community | Metrics dashboards |
|
||||
|
||||
---
|
||||
|
||||
## Reverse Proxies
|
||||
|
||||
| Integration | Package |
|
||||
|---|---|
|
||||
| YARP | `Aspire.Hosting.Yarp` |
|
||||
|
||||
---
|
||||
|
||||
## Security
|
||||
|
||||
| Integration | Package |
|
||||
|---|---|
|
||||
| Keycloak | `CommunityToolkit.Aspire.Hosting.Keycloak` |
|
||||
|
||||
---
|
||||
|
||||
## Frameworks (Polyglot)
|
||||
|
||||
See [Polyglot APIs](polyglot-apis.md) for complete method signatures.
|
||||
|
||||
| Framework | Package | Type |
|
||||
|---|---|---|
|
||||
| JavaScript | `Aspire.Hosting.JavaScript` | Official |
|
||||
| Python | `Aspire.Hosting.Python` | Official |
|
||||
| Go | `CommunityToolkit.Aspire.Hosting.Golang` | Community |
|
||||
| Java | `CommunityToolkit.Aspire.Hosting.Java` | Community |
|
||||
| Rust | `CommunityToolkit.Aspire.Hosting.Rust` | Community |
|
||||
| Bun | `CommunityToolkit.Aspire.Hosting.Bun` | Community |
|
||||
| Deno | `CommunityToolkit.Aspire.Hosting.Deno` | Community |
|
||||
| Dapr | `Aspire.Hosting.Dapr` | Official |
|
||||
| Orleans | `Aspire.Hosting.Orleans` | Official |
|
||||
| MAUI | `Aspire.Hosting.Maui` | Official |
|
||||
|
||||
---
|
||||
|
||||
## Custom integrations
|
||||
|
||||
### Custom hosting integration
|
||||
|
||||
```csharp
|
||||
public static class MyServiceExtensions
|
||||
{
|
||||
public static IResourceBuilder<ContainerResource> AddMyService(
|
||||
this IDistributedApplicationBuilder builder, string name)
|
||||
{
|
||||
return builder.AddContainer(name, "my-registry/my-service")
|
||||
.WithHttpEndpoint(targetPort: 8080, name: "http")
|
||||
.WithEnvironment("MODE", "production");
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Custom client integration
|
||||
|
||||
```csharp
|
||||
public static class MyServiceClientExtensions
|
||||
{
|
||||
public static IHostApplicationBuilder AddMyServiceClient(
|
||||
this IHostApplicationBuilder builder, string connectionName)
|
||||
{
|
||||
// Register client with DI
|
||||
builder.Services.AddHttpClient<MyServiceClient>(client =>
|
||||
{
|
||||
var conn = builder.Configuration.GetConnectionString(connectionName);
|
||||
client.BaseAddress = new Uri(conn!);
|
||||
});
|
||||
|
||||
// Add health check
|
||||
builder.Services.AddHealthChecks()
|
||||
.AddUrlGroup(new Uri($"{connectionName}/health"), name: connectionName);
|
||||
|
||||
return builder;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Secure communication between integrations
|
||||
|
||||
```csharp
|
||||
// Enable TLS between services
|
||||
var api = builder.AddProject<Projects.Api>("api")
|
||||
.WithHttpsEndpoint()
|
||||
.WithReference(redis)
|
||||
.WithTransport("https");
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user