A community-driven registry for Claude, Cursor, Windsurf, Cline & more. Not affiliated with Anthropic.
Are you the author? Sign in to claim
A lightweight .NET framework for building Model Context Protocol (MCP) servers. Integrates seamlessly with Azure AD, AWS
A modern, production-ready C#/.NET framework for building secure, scalable, and observable Model Context Protocol (MCP) servers with enterprise-grade authentication.
DotnetFastMCP provides a clean, attribute-based approach to building MCP servers that implement the JSON-RPC 2.0 protocol. It includes a native .NET Client Library client for consuming MCP servers, making it a complete solution for building both sides of the Model Context Protocol. Built on ASP.NET Core, it leverages modern .NET features for high performance, reliability, and comprehensive OAuth 2.0 / OpenID Connect authentication out of the box.
[McpTool] and [McpResource] attributes[McpPrompt] for LLM interaction templates[Authorize] attributeCallToolAsync<T> APIILLMProvider API for all providersIAsyncEnumerable<string>builder.AddAnthropicProvider()builder.WithTelemetry() — zero boilerplateGET /mcp/health exposed automaticallybuilder.WithHealthChecks() — no configuration requiredgit clone https://github.com/tekspry/.NetFastMCP.git
cd DotnetFastMCP
dotnet build -c Release
Create a static class with [McpTool]-decorated static methods:
using FastMCP.Attributes;
public static class MyTools
{
[McpTool(Description = "Adds two numbers")]
public static int Add(int a, int b) => a + b;
[McpTool(Description = "Returns an echo of the input")]
public static string Echo(string message) => message;
}
using FastMCP.Hosting;
using FastMCP.Server;
using System.Reflection;
var server = new FastMCPServer("MyMcpServer");
var builder = McpServerBuilder.Create(server, args);
builder.WithComponentsFrom(Assembly.GetExecutingAssembly());
var app = builder.Build();
await app.RunMcpAsync(args);
cd examples/BasicServer
dotnet run
The server will start on http://localhost:5000.
DotnetFastMCP/
├── src/
│ ├── FastMCP/
│ │ ├── Attributes/ # Component declaration attributes
│ │ ├── Client/ # 🔌 Client library implementation
│ │ ├── Hosting/ # Server hosting and middleware
│ │ ├── Protocol/ # JSON-RPC protocol implementation
│ │ ├── Server/ # FastMCPServer core class
│ │ └── FastMCP.csproj
│ └── FastMCP.CLI/ # Command-line utilities
├── examples/
│ └── BasicServer/ # Example MCP server implementation
├── tests/
│ └── McpIntegrationTest/ # Integration tests
├── LAUNCH_TESTS.ps1 # PowerShell test suite launcher
└── RUN_AND_TEST.ps1 # PowerShell integration test script
| Project | Purpose |
|---|---|
FastMCP | Core framework library |
FastMCP.CLI | Command-line interface tools |
BasicServer | Example MCP server implementation |
McpIntegrationTest | Integration tests |
ClientDemo | Example Client consuming BasicServer |
For better organization, split your components into multiple files (e.g., Tools.cs, Resources.cs). The framework will discover them automatically.
File: Tools.cs
using FastMCP.Attributes;
using Microsoft.AspNetCore.Authorization;
using System.Security.Claims;
public static class MyTools
{
/// <summary>
/// Public tool - no authentication required
/// </summary>
[McpTool]
public static int Add(int a, int b) => a + b;
public static class Resources
{
/// <summary>
/// Protected tool - requires authentication
/// </summary>
[McpTool]
[Authorize]
public static object GetUserProfile(ClaimsPrincipal user)
{
return new
{
Name = user.Identity?.Name,
Email = user.FindFirst("email")?.Value,
IsAuthenticated = user.Identity?.IsAuthenticated
};
}
}
using FastMCP.Hosting;
using FastMCP.Server;
using System.Reflection;
var mcpServer = new FastMCPServer(name: "My Secure MCP Server");
var builder = McpServerBuilder.Create(mcpServer, args);
// Add authentication (choose your provider)
builder.AddAzureAdTokenVerifier(); // or AddGoogleTokenVerifier(), AddGitHubTokenVerifier(), etc.
// Register tools
builder.WithComponentsFrom(Assembly.GetExecutingAssembly());
var app = builder.Build();
app.Urls.Add("http://localhost:5002");
await app.RunAsync();
# Windows PowerShell
$env:FASTMCP_SERVER_AUTH_AZUREAD_TENANT_ID="your-tenant-id"
$env:FASTMCP_SERVER_AUTH_AZUREAD_CLIENT_ID="your-client-id"
$env:FASTMCP_SERVER_AUTH_AZUREAD_CLIENT_SECRET="your-client-secret"
# Linux/Mac
export FASTMCP_SERVER_AUTH_AZUREAD_TENANT_ID="your-tenant-id"
export FASTMCP_SERVER_AUTH_AZUREAD_CLIENT_ID="your-client-id"
export FASTMCP_SERVER_AUTH_AZUREAD_CLIENT_SECRET="your-client-secret"
dotnet run
Your server is now running with OAuth Proxy endpoints:
http://localhost:5002/mcphttp://localhost:5002/oauth/authorizehttp://localhost:5002/oauth/tokenhttp://localhost:5002/.well-known/oauth-authorization-serverYou can also run the server in Stdio mode (for local LLM clients):
dotnet run -- --stdio
Connect to any MCP server using the C# Client Library:
using FastMCP.Client;
using FastMCP.Client.Transports;
// 1. Connect (via Stdio or SSE)
var transport = new StdioClientTransport("dotnet", "run --project examples/BasicServer -- --stdio");
await using var client = new McpClient(transport);
await client.ConnectAsync();
// 2. List & Call Tools
var tools = await client.ListToolsAsync();
var result = await client.CallToolAsync<int>("add_numbers", new { a = 10, b = 20 });
DotnetFastMCP supports 6 enterprise-grade OAuth providers out of the box:
| Provider | Method | Use Case | Default Scopes |
|---|---|---|---|
| Azure AD | AddAzureAdTokenVerifier() | Enterprise apps, Microsoft 365 | openid, profile, email, offline_access |
AddGoogleTokenVerifier() | Consumer apps, Google Workspace | openid, profile, email, userinfo.profile | |
| GitHub | AddGitHubTokenVerifier() | Developer tools, repositories | read:user, user:email |
| Auth0 | AddAuth0TokenVerifier() | Multi-tenant SaaS, custom identity | openid, profile, email, offline_access |
| Okta | AddOktaTokenVerifier() | Enterprise SSO, workforce identity | openid, profile, email, offline_access |
| AWS Cognito | AddAwsCognitoTokenVerifier() | AWS-native apps, user pools | openid, profile, email |
builder.AddAzureAdTokenVerifier();
Environment Variables:
FASTMCP_SERVER_AUTH_AZUREAD_TENANT_ID=your-tenant-id
FASTMCP_SERVER_AUTH_AZUREAD_CLIENT_ID=your-client-id
FASTMCP_SERVER_AUTH_AZUREAD_CLIENT_SECRET=your-client-secret
Example: examples/Auth/AzureAdOAuth
builder.AddGoogleTokenVerifier();
Environment Variables:
FASTMCP_SERVER_AUTH_GOOGLE_CLIENT_ID=your-client-id.apps.googleusercontent.com
FASTMCP_SERVER_AUTH_GOOGLE_CLIENT_SECRET=your-client-secret
Example: examples/Auth/GoogleOAuth
builder.AddGitHubTokenVerifier();
Environment Variables:
FASTMCP_SERVER_AUTH_GITHUB_CLIENT_ID=your-github-client-id
FASTMCP_SERVER_AUTH_GITHUB_CLIENT_SECRET=your-github-client-secret
Example: examples/Auth/GitHubOAuth
The project includes a comprehensive PowerShell-based integration test suite that validates a running server end-to-end.
Publish the server (from the root of the DotnetFastMCP project):
dotnet publish -c Release -o ..\publish examples\BasicServer
Run the tests: Open a PowerShell terminal and run the launcher script from the project root:
.\LAUNCH_TESTS.ps1
This will open a new window, start the BasicServer, and run a series of tests covering all tools and resources, including error handling.
builder.AddAuth0TokenVerifier();
Environment Variables:
FASTMCP_SERVER_AUTH_AUTH0_DOMAIN=your-tenant.auth0.com
FASTMCP_SERVER_AUTH_AUTH0_AUDIENCE=https://your-api-identifier
FASTMCP_SERVER_AUTH_AUTH0_CLIENT_ID=your-client-id
FASTMCP_SERVER_AUTH_AUTH0_CLIENT_SECRET=your-client-secret
Example: examples/Auth/Auth0OAuth
builder.AddOktaTokenVerifier();
Environment Variables:
FASTMCP_SERVER_AUTH_OKTA_DOMAIN=dev-123456.okta.com
FASTMCP_SERVER_AUTH_OKTA_AUDIENCE=api://default
FASTMCP_SERVER_AUTH_OKTA_CLIENT_ID=your-client-id
FASTMCP_SERVER_AUTH_OKTA_CLIENT_SECRET=your-client-secret
Example: examples/Auth/OktaOAuth
builder.AddAwsCognitoTokenVerifier();
Environment Variables:
FASTMCP_SERVER_AUTH_AWSCOGNITO_USER_POOL_ID=us-east-1_XXXXXXXXX
FASTMCP_SERVER_AUTH_AWSCOGNITO_REGION=us-east-1
FASTMCP_SERVER_AUTH_AWSCOGNITO_CLIENT_ID=your-app-client-id
FASTMCP_SERVER_AUTH_AWSCOGNITO_CLIENT_SECRET=your-app-client-secret
FASTMCP_SERVER_AUTH_AWSCOGNITO_DOMAIN=myapp.auth.us-east-1.amazoncognito.com
Example: examples/Auth/AwsCognitoOAuth
DotnetFastMCP/
├── src/
│ └── FastMCP/
│ ├── Attributes/ # Component declaration attributes
│ ├── Authentication/ # 🔐 OAuth providers & token verification
│ │ ├── Providers/ # Azure AD, Google, GitHub, Auth0, Okta, AWS
│ │ ├── Proxy/ # OAuth Proxy for DCR
│ │ └── Verification/ # JWT token validation
│ ├── Hosting/ # Server hosting and middleware
│ ├── Protocol/ # JSON-RPC protocol implementation
│ └── Server/ # FastMCPServer core class
├── examples/
│ ├── BasicServer/ # Simple MCP server
│ └── Auth/ # 🔐 Authentication examples
│ ├── AzureAdOAuth/ # Azure AD example
│ ├── GoogleOAuth/ # Google OAuth example
│ ├── GitHubOAuth/ # GitHub OAuth example
│ ├── Auth0OAuth/ # Auth0 example
│ ├── OktaOAuth/ # Okta example
│ └── AwsCognitoOAuth/ # AWS Cognito example
└── tests/
└── McpIntegrationTest/ # Integration tests
The FastMCP framework now includes a complete client implementation in src/FastMCP/Client.
graph TD
App[Your App] -->|Uses| Client[McpClient]
Client -->|IClientTransport| Trans[Transport Layer]
Trans -->|Stdio| Local[Local Process]
Trans -->|SSE/HTTP| Remote[Remote Server]
sequenceDiagram
participant Client
participant MCP Server
participant OAuth Provider
Client->>MCP Server: Request with Bearer Token
MCP Server->>Token Verifier: Validate Token
Token Verifier->>OAuth Provider: Fetch JWKS (if needed)
OAuth Provider-->>Token Verifier: Public Keys
Token Verifier-->>MCP Server: Validated Claims
MCP Server-->>Client: Protected Resource
using FastMCP.Hosting;
using FastMCP.Server;
using System.Reflection;
var mcpServer = new FastMCPServer(name: "My MCP Server");
var builder = McpServerBuilder.Create(mcpServer, args);
builder.WithComponentsFrom(Assembly.GetExecutingAssembly());
var app = builder.Build();
await app.RunAsync();
using FastMCP.Hosting;
using FastMCP.Server;
using System.Reflection;
var mcpServer = new FastMCPServer(name: "My Secure MCP Server");
var builder = McpServerBuilder.Create(mcpServer, args);
// Add authentication - automatically configures OAuth Proxy
builder.AddAzureAdTokenVerifier(); // or any other provider
builder.WithComponentsFrom(Assembly.GetExecutingAssembly());
var app = builder.Build();
app.Urls.Add("http://localhost:5002");
await app.RunMcpAsync(args);
using FastMCP.Attributes;
using Microsoft.AspNetCore.Authorization;
using System.Security.Claims;
public static class SecureTools
{
/// <summary>
/// Public tool - anyone can call
/// </summary>
[McpTool]
public static string Echo(string message) => message;
/// <summary>
/// Protected tool - requires valid OAuth token
/// </summary>
[McpTool]
[Authorize]
public static object GetUserInfo(ClaimsPrincipal user)
{
return new
{
Name = user.Identity?.Name ?? "Unknown",
Email = user.FindFirst("email")?.Value ?? "Not available",
IsAuthenticated = user.Identity?.IsAuthenticated ?? false,
Claims = user.Claims.Select(c => new { c.Type, c.Value }).ToList()
};
}
/// <summary>
/// Role-based authorization
/// </summary>
[McpTool]
[Authorize(Roles = "Admin")]
public static string AdminOnly() => "Admin access granted";
}
Prompts allow servers to provide templates that LLMs can use.
using FastMCP.Attributes;
using FastMCP.Protocol;
public static class MyPrompts
{
[McpPrompt("analyze_code")]
public static GetPromptResult Analyze(string code)
{
return new GetPromptResult
{
Description = "Analyze the given code",
Messages = new List<PromptMessage>
{
new PromptMessage
{
Role = "user",
Content = new { type = "text", text = $"Please analyze this code:\n{code}" }
}
}
};
}
}
Public Tool (No Auth):
POST /mcp
{
"jsonrpc": "2.0",
"method": "Echo",
"params": ["Hello World"],
"id": 1
}
Protected Tool (With Auth):
POST /mcp
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGc...
{
"jsonrpc": "2.0",
"method": "GetUserInfo",
"params": [],
"id": 2
}
dotnet test
Each authentication example includes a comprehensive .rest file for testing:
# Open in VS Code with REST Client extension
code examples/Auth/AzureAdOAuth/azure-ad-auth-tests.rest
Test files include:
See MFA Support Guide for enforcing Multi-Factor Authentication on sensitive tools, and the individual provider README files under examples/Auth/ for detailed OAuth setup instructions.
| Example | Description | Port |
|---|---|---|
| BasicServer | Simple MCP server without authentication | 5000 |
| HealthChecksDemo | 🏥 Health monitoring & diagnostics demo | 5000 |
| TelemetryDemo | 📡 OpenTelemetry metrics & tracing demo | 5000 |
| AzureAdOAuth | Azure AD authentication example | 5002 |
| GoogleOAuth | Google OAuth example | 5000 |
| GitHubOAuth | GitHub OAuth example | 5001 |
| Auth0OAuth | Auth0 authentication example | 5005 |
| OktaOAuth | Okta authentication example | 5007 |
| AwsCognitoOAuth | AWS Cognito example | 5006 |
FastMCP ships with a built-in production health check endpoint. Enable with one line and plug in any custom check as a simple lambda.
using FastMCP.Health;
// Zero-config — exposes GET /mcp/health automatically
builder.WithHealthChecks();
// With custom checks (database, LLM provider, memory, etc.)
builder.WithHealthChecks(checks =>
{
checks.AddCheck("memory", () =>
GC.GetTotalMemory(false) < 500_000_000L); // sync: < 500 MB
checks.AddAsyncCheck("database", async ct =>
await dbContext.Database.CanConnectAsync(ct));
checks.AddAsyncCheck("llm_provider", async ct =>
await llmProvider.IsHealthyAsync(ct));
});
Response JSON (HTTP 200 — Healthy):
{
"status": "Healthy",
"timestamp": "2026-04-19T20:00:00Z",
"checks": [
{ "name": "mcp_server", "status": "Healthy", "durationMs": 0 },
{ "name": "memory", "status": "Healthy", "durationMs": 0.1 },
{ "name": "database", "status": "Healthy", "durationMs": 4.9 },
{ "name": "llm_provider", "status": "Healthy", "durationMs": 22.3 }
],
"diagnostics": {
"serverName": "my-mcp-server",
"frameworkVersion": "1.15.0.0",
"toolCount": 12,
"uptimeSeconds": 3721.4
}
}
HTTP status code mapping:
| Status | HTTP Code | Meaning |
|---|---|---|
Healthy | 200 | All checks passed |
Degraded | 207 | Server up, ≥1 check timed out |
Unhealthy | 503 | ≥1 check failed or threw |
Kubernetes liveness / readiness probe:
livenessProbe:
httpGet:
path: /mcp/health
port: 5000
initialDelaySeconds: 15
periodSeconds: 30
readinessProbe:
httpGet:
path: /mcp/health
port: 5000
periodSeconds: 10
See Health Checks Guide for full documentation, including Docker Compose, Azure Container Apps, per-check timeout configuration, unit testing patterns, and complete validation examples.
FastMCP ships with built-in OpenTelemetry instrumentation. Enable with one line and connect to any backend.
using FastMCP.Telemetry;
using OpenTelemetry.Metrics;
using OpenTelemetry.Trace;
// 1. Enable FastMCP telemetry (one line)
builder.WithTelemetry(t =>
{
t.ServiceName = "my-mcp-server";
t.EnableMetrics = true;
t.EnableTracing = true;
});
// 2. Configure your exporter of choice
builder.Services.AddOpenTelemetry()
.WithMetrics(m =>
{
m.AddMcpInstrumentation(); // FastMCP extension method
m.AddPrometheusExporter(); // or AddConsoleExporter(), AddOtlpExporter()
})
.WithTracing(t =>
{
t.AddMcpInstrumentation(); // FastMCP extension method
t.AddOtlpExporter(); // or AddJaeger(), AddZipkin()
});
Metrics automatically tracked:
| Metric | Type | Tag | Description |
|---|---|---|---|
mcp.tool.invocations | Counter | tool.name | Total tool calls |
mcp.tool.duration | Histogram (ms) | tool.name | Tool execution time |
mcp.tool.errors | Counter | tool.name | Failed tool calls |
mcp.prompt.requests | Counter | — | Prompt template requests |
mcp.resource.reads | Counter | — | Resource read requests |
Validate with dotnet-counters (no exporter needed):
dotnet-counters monitor -n YourAppName --counters FastMCP
See Observability Guide for full documentation, including production exporter setup, distributed tracing details, and real request/response validation examples.
Middleware allows you to intercept and modify JSON-RPC messages (requests and responses) flowing through the server pipeline. This is useful for logging, validation, modification, or custom monitoring.
IMcpMiddleware.builder.AddMcpMiddleware<T>().public class LoggingMiddleware : IMcpMiddleware
{
public async Task<JsonRpcResponse> InvokeAsync(McpMiddlewareContext context, McpMiddlewareDelegate next, CancellationToken ct)
{
Console.Error.WriteLine($"[LOG] Incoming: {context.Request.Method}");
// Pass to next handler
var response = await next(context, ct);
Console.Error.WriteLine($"[LOG] Completed. Error: {response.Error != null}");
return response;
}
}
// In Program.cs:
builder.AddMcpMiddleware<LoggingMiddleware>();
Mount other MCP servers into your main server instantiation. This supports a "Micro-MCP" architecture where you can compose a robust agent from smaller, focused modules.
// 1. Create Sub-Server (e.g. GitHub Tools)
var githubServer = new FastMCPServer("GitHub");
// ... register tools ...
// 2. Import into Main Server with "gh" prefix
builder.AddServer(githubServer, prefix: "gh");
// Result:
// The client sees tools named: "gh_create_issue", "gh_get_repo", etc.
Enforce Multi-Factor Authentication for sensitive tools.
[McpTool("transfer_funds")]
[AuthorizeMcpTool(RequireMfa = true)]
public static string TransferFunds()
{
return "Transferred!";
}
amr claim contains mfa.FastMCP now includes a built-in state persistence layer. Tools can request McpContext to access IMcpStorage.
[McpTool]
public static async Task<string> SetValue(string key, string value, McpContext context)
{
await context.Storage.SetAsync(key, value);
return "Saved!";
}
The default implementation is In-Memory, but you can swap it for Redis, SQL, or File storage:
builder.AddMcpStorage<MyRedisStorage>();
FastMCP includes a powerful LLM integration system with 8 providers supporting the latest models (Feb 2026).
using FastMCP.AI;
// Option 1: Local (Ollama)
builder.AddOllamaProvider(options =>
{
options.BaseUrl = "http://localhost:11434";
options.DefaultModel = "llama3.1:8b";
});
// Option 2: Cloud (Anthropic Claude Opus 4.6 - Latest)
builder.AddAnthropicProvider(options =>
{
options.ApiKey = Environment.GetEnvironmentVariable("ANTHROPIC_API_KEY")!;
options.DefaultModel = "claude-opus-4.6"; // 1M context, Feb 2026
});
// Option 3: Google Gemini 3
builder.AddGeminiProvider(options =>
{
options.ApiKey = Environment.GetEnvironmentVariable("GEMINI_API_KEY")!;
options.DefaultModel = "gemini-3-flash"; // Fast, cost-effective
});
public class AITools
{
private readonly ILLMProvider _llm;
public AITools(ILLMProvider llm) => _llm = llm;
[McpTool("generate_story")]
public async Task<string> GenerateStory(string topic)
{
return await _llm.GenerateAsync(
$"Write a story about {topic}",
new LLMGenerationOptions
{
SystemPrompt = "You are a creative storyteller.",
Temperature = 0.8,
MaxTokens = 500
});
}
[McpTool("stream_response")]
public async IAsyncEnumerable<string> StreamResponse(string prompt)
{
await foreach (var token in _llm.StreamAsync(prompt))
{
yield return token;
}
}
}
| Provider | Extension Method | Latest Model | Best For |
|---|---|---|---|
| Ollama | AddOllamaProvider() | llama3.1:8b | Local, privacy, offline |
| OpenAI | AddOpenAIProvider() | gpt-4-turbo | Production, function calling |
| Azure OpenAI | AddAzureOpenAIProvider() | gpt-4 | Enterprise, compliance |
| Anthropic | AddAnthropicProvider() | claude-opus-4.6 | Deep reasoning, 1M context |
| Google Gemini | AddGeminiProvider() | gemini-3-flash | Multimodal, high-volume |
| Cohere | AddCohereProvider() | command-a | Enterprise RAG, agents |
| Hugging Face | AddHuggingFaceProvider() | Any model | Open-source, flexibility |
| Deepseek | AddDeepseekProvider() | deepseek-v3.2 | Cost-effective, reasoning |
See LLM Integration Guide for complete documentation.
FastMCP allows tools to fire-and-forget long running operations using RunInBackground.
[McpTool]
public static async Task<string> ProcessFile(string file, McpContext context)
{
await context.RunInBackground(async (ct) =>
{
// This runs without blocking the client
await HeavyProcessing(file, ct);
});
return "Processing started!";
}
Enhance the user interface of clients by providing icons for your server and tools.
// Server Icon
server.Icon = "https://myserver.com/logo.png";
// Tool Icon
[McpTool(Icon = "https://myserver.com/tools/calc.png")]
public static int Add(int a, int b) => a + b;
Return rich content like Images from your tools and prompts.
[McpTool]
public static CallToolResult GetSnapshot()
{
return new CallToolResult
{
Content = new List<ContentItem>
{
new ImageContent { Data = "base64...", MimeType = "image/png" }
}
};
}
DotnetFastMCP includes a built-in OAuth Proxy that provides:
Automatically Available Endpoints:
/.well-known/oauth-authorization-server - OAuth server metadata/oauth/authorize - Authorization endpoint/oauth/token - Token endpoint/oauth/register - Dynamic client registration/oauth/userinfo - User information endpointOverride default scopes for any provider:
builder.AddAzureAdTokenVerifier(new AzureAdAuthOptions
{
RequiredScopes = new[] { "openid", "profile", "email", "User.Read", "Calendars.Read" }
});
// Support multiple providers simultaneously
builder.AddAzureAdTokenVerifier();
builder.AddGoogleTokenVerifier();
builder.AddGitHubTokenVerifier();
.env files for local developmentInstall from NuGet (when published):
dotnet add package DotnetFastMCP
Contributions are welcome! Please:
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)This project is licensed under the MIT License - see the LICENSE file for details.
For bug reports and feature requests, please use GitHub Issues.
GET /mcp/health exposed with a single builder.WithHealthChecks() calldatabase, llm, memory, external API) as a simple lambda with no interface to implementMaxResponseTimeMs; hanging checks reported as Degraded, not left blockingAllowAnonymous() so infrastructure probes bypass authenticationWithHealthChecks() is calledbuilder.WithTelemetry() with zero boilerplateILLMProvider API for all providersIAsyncEnumerable<string>builder.AddAnthropicProvider()mfa AMR claim for sensitive tools[AuthorizeMcpTool(RequireMfa=true)]McpContext.Storagegithub_createIssue)AddMcpMiddleware<T>McpContext injection for logging and progressMade with ❤️ by the DotnetFastMCP team
⭐ Star this repo if you find it useful!
MCP server integration for DaVinci Resolve Studio
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots
A Jetbrains IDE IntelliJ plugin aimed to provide coding agents the ability to leverage intelliJ's indexing of the codeba