/ Verzeichnis / Playground / MCPSharp
● Community afrise ⚡ Sofort

MCPSharp

von afrise · afrise/MCPSharp

Versenden Sie MCP in C#/.NET – dekorieren Sie eine Methode mit [McpTool], starten Sie den Server, fertig. Funktioniert mit Microsoft.Extensions.AI und Semantic Kernel.

MCPSharp ist ein .NET NuGet-Paket, das C#-Methoden über Attribute in MCP-Tools (und Ressourcen) umwandelt und außerdem einen Client zum Aufrufen anderer MCP-Server aus C# bereitstellt. Es kümmert sich um JSON-RPC-Plumbing, automatische Parametervalidierung und Typkonvertierung und ruft Toolbeschreibungen aus Ihren XML-Dokumentkommentaren ab. Dank der erstklassigen Integrationen für Microsoft.Extensions.AI und Semantic Kernel können Sie Agenten mit MCP-Tools mit minimalem Boilerplate in .NET-Apps integrieren.

Warum nutzen

Hauptfunktionen

Live-Demo

In der Praxis

mcpsharp.replay ▶ bereit
0/0

Installieren

Wählen Sie Ihren Client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "mcpsharp": {
      "command": "dotnet",
      "args": [
        "add",
        "package",
        "MCPSharp"
      ],
      "_inferred": false
    }
  }
}

Öffne Claude Desktop → Settings → Developer → Edit Config. Nach dem Speichern neu starten.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "mcpsharp": {
      "command": "dotnet",
      "args": [
        "add",
        "package",
        "MCPSharp"
      ],
      "_inferred": false
    }
  }
}

Cursor nutzt das gleiche mcpServers-Schema wie Claude Desktop. Projektkonfiguration schlägt die globale.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "mcpsharp": {
      "command": "dotnet",
      "args": [
        "add",
        "package",
        "MCPSharp"
      ],
      "_inferred": false
    }
  }
}

Klicken Sie auf das MCP-Servers-Symbol in der Cline-Seitenleiste, dann "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "mcpsharp": {
      "command": "dotnet",
      "args": [
        "add",
        "package",
        "MCPSharp"
      ],
      "_inferred": false
    }
  }
}

Gleiche Struktur wie Claude Desktop. Windsurf neu starten zum Übernehmen.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "mcpsharp",
      "command": "dotnet",
      "args": [
        "add",
        "package",
        "MCPSharp"
      ]
    }
  ]
}

Continue nutzt ein Array von Serverobjekten statt einer Map.

~/.config/zed/settings.json
{
  "context_servers": {
    "mcpsharp": {
      "command": {
        "path": "dotnet",
        "args": [
          "add",
          "package",
          "MCPSharp"
        ]
      }
    }
  }
}

In context_servers hinzufügen. Zed lädt beim Speichern neu.

claude mcp add mcpsharp -- dotnet add package MCPSharp

Einzeiler. Prüfen mit claude mcp list. Entfernen mit claude mcp remove.

Anwendungsfälle

Praxisnahe Nutzung: MCPSharp

Stellen Sie vorhandene C#-Dienste als MCP-Tools bereit

👤 .NET-Shops mit internen Bibliotheken, die KI-Agenten aufrufen sollen ⏱ ~30 min intermediate

Wann einsetzen: Sie verfügen über eine funktionierende Geschäftsbibliothek in C# und müssen sie für Agenten zugänglich machen.

Voraussetzungen
  • .NET 8+ SDK — https://dotnet.microsoft.com/download
  • MCPSharp-Paket — dotnet fügt Paket MCPSharp hinzu
Ablauf
  1. Dekorationsmethoden
    Fügen Sie [McpTool] zu den öffentlichen Methoden hinzu, die ich in meinem OrdersService verfügbar machen möchte. Unterschriften aufbewahren; Lassen Sie MCPSharp validieren.✓ Kopiert
    → Angewandte Attribute, XML-Dokumente als Beschreibungen
  2. Starten Sie den Server
    Fügen Sie einen Program.cs-Einstiegspunkt hinzu, der MCPServer.StartAsync("orders", "1.0.0") aufruft.✓ Kopiert
    → Läuft über Dotnet Run; MCP-Kunden können Tools entdecken
  3. Mit Claude Desktop verbinden
    Geben Sie ein claude_desktop_config.json-Snippet aus, das meine Dotnet-Binärdatei startet.✓ Kopiert
    → Konfigurationsblock mit command=dotnet args=[run --project, path]

Ergebnis: Ein MCP-Server, der Ihre C#-Dienste mit wenig neuem Code unterstützt.

Fallstricke
  • Große Objekte zurückgeben, ohne sie zu formen — Geben Sie DTOs zurück – serialisieren Sie EF-Entitäten nicht mit Navigationseigenschaften, da sonst die Antworten explodieren
Kombinieren mit: fastmcp

Verwenden Sie MCP-Tools von einem Semantic Kernel-Agenten

👤 Teams erstellen Agenten mit Microsoft Semantic Kernel ⏱ ~45 min intermediate

Wann einsetzen: Sie sind auf SK und möchten die Tools eines externen MCP-Servers nutzen.

Ablauf
  1. Fügen Sie den Kunden hinzu
    Fügen Sie den Client von MCPSharp hinzu und registrieren Sie den Remote-Server als SK-Plugin.✓ Kopiert
    → Werkzeuge erscheinen im SK-Plan
  2. Aufruf von einer Funktion
    Zeigen Sie eine Chat-Funktion an, die eines der Remote-Tools aufruft, wenn der Benutzer danach fragt.✓ Kopiert
    → Hin- und Rückfahrt: Eingabeaufforderung → SK wählt Werkzeug → MCP-Aufruf → Ergebnis in Antwort

Ergebnis: Ihre SK-App kann jeden MCP-Server sauber nutzen.

Registrieren Sie Tools zur Laufzeit aus einem Plugin-Ordner

👤 Teams versenden Plugin-Systeme oder Low-Code-Produkte ⏱ ~60 min advanced

Wann einsetzen: Benutzer fügen neue Tooldefinitionen ein und Sie möchten, dass diese ohne erneute Bereitstellung verfügbar sind.

Ablauf
  1. Scannen Sie den Ordner
    Schreiben Sie einen Loader, der jede DLL widerspiegelt und [McpTool]-Methoden dynamisch registriert.✓ Kopiert
    → Tools werden angezeigt, ohne dass hartcodierte Listen geändert werden
  2. Sicheres Hot-Reload
    Fügen Sie die AssemblyLoadContext-Isolation hinzu, damit beim erneuten Laden keine Lecks auftreten.✓ Kopiert
    → Alte Baugruppen werden zwischen den Neuladevorgängen entladen

Ergebnis: Steckbarer Werkzeugsatz mit ordnungsgemäßem Montagelebenszyklus.

Fallstricke
  • Undichte Baugruppen mit Standardladekontext — Verwenden Sie den sammelbaren AssemblyLoadContext für isolierte Neuladungen

Kombinationen

Mit anderen MCPs für 10-fache Wirkung

mcpsharp + fastmcp

Vergleichen Sie die Erstellung von .NET- und Python-MCP-Servern

Portieren Sie meine Python FastMCP-Tools auf MCPSharp für den vorhandenen .NET-Stack.✓ Kopiert
mcpsharp + csharp-sdk

Offizielles SDK vs. Community-Paket – wählen Sie, was passt

Vergleichen Sie MCPSharp und das offizielle csharp-sdk für meine Bedürfnisse.✓ Kopiert
mcpsharp + azure-ai-gateway

Stellen Sie den C#-MCP-Server hinter Azure AI-Gateway-Richtlinien

Stellen Sie meinen MCPSharp-Server mit dem Azure AI-Gateway für Authentifizierungs-/Ratenbeschränkungen bereit.✓ Kopiert

Werkzeuge

Was dieses MCP bereitstellt

WerkzeugEingabenWann aufrufenKosten
[McpTool] C# method signature Bei jeder Methode soll ein Agent anrufen 0
[McpResource] C# member Wenn Sie lesbare Ressourcen (Dateien/Daten) und keine Tools verfügbar machen möchten 0
[McpParameter] method parameter Markieren Sie erforderliche Parameter und geben Sie Parameterbeschreibungen an 0
MCPServer.StartAsync name, version Starten Sie den Server über stdio (oder konfigurierten Transport) 0
MCPClient server address Von C# zur Kommunikation mit einem anderen MCP-Server 0

Kosten & Limits

Was der Betrieb kostet

API-Kontingent
Keine – es ist eine Bibliothek
Tokens pro Aufruf
Hängt von Ihren Werkzeugen ab; Die Bibliothek selbst ist winzig
Kosten in €
Kostenlos (OSS im MIT-Stil)
Tipp
Gestalten Sie Antwort-DTOs absichtlich – große JSON-Blobs erhöhen sowohl die Tokens als auch die Latenz.

Sicherheit

Rechte, Secrets, Reichweite

Credential-Speicherung: Was auch immer Ihre Dienste verwenden (ASP.NET-Konfiguration, KeyVault usw.). MCPSharp besitzt keine Anmeldeinformationen.
Datenabfluss: Transportabhängig (stdio lokal; HTTP/remote, falls konfiguriert).

Fehlerbehebung

Häufige Fehler und Lösungen

Tool wurde vom Client nicht erkannt

Stellen Sie sicher, dass die Methode öffentlich ist, über [McpTool] verfügt und der Attributname mit dem übereinstimmt, was Sie nennen. Überprüfen Sie auch den an StartAsync übergebenen Servernamen.

Prüfen: MCPServer.ListTools() at startup
Serialisierungsausnahme bei Rückgabe

Geben Sie ein POCO/DTO zurück; Vermeiden Sie verzögert geladene EF-Entitäten und -Typen mit zyklischen Referenzen.

Prüfen: Unit test serialization with System.Text.Json
Der semantische Kernel erkennt keine Tools

Registrieren Sie das MCP-Plugin explizit und bestätigen Sie, dass der Kernel-Builder davon Kenntnis hat. Einige SK-Versionen erfordern einen expliziten Import.

Prüfen: Log plugins at startup

Alternativen

MCPSharp vs. andere

AlternativeWann stattdessenKompromiss
csharp-sdk (official)Sie möchten das offizielle Anthropic/MCP C# SDKUnterschiedliche Ergonomie; Achten Sie auf Funktionsunterschiede
fastmcpSie bevorzugen PythonAnderes Ökosystem
mcp-agentSie möchten Python-basierte Agentenmuster, nicht nur Server-AuthoringNicht .NET

Mehr

Ressourcen

📖 Offizielle README auf GitHub lesen

🐙 Offene Issues ansehen

🔍 Alle 400+ MCP-Server und Skills durchsuchen