/ Annuaire / Playground / MCPSharp
● Communauté afrise ⚡ Instantané

MCPSharp

par afrise · afrise/MCPSharp

Expédiez MCP en C#/.NET — décorez une méthode avec [McpTool], démarrez le serveur, c'est fait. Fonctionne avec Microsoft.Extensions.AI et Semantic Kernel.

MCPSharp est un package .NET NuGet qui transforme les méthodes C# en outils (et ressources) MCP via des attributs, et fournit également un client pour appeler d'autres serveurs MCP à partir de C#. Il gère la plomberie JSON-RPC, la validation automatique des paramètres et la conversion de type, et extrait les descriptions d'outils à partir des commentaires de votre document XML. Des intégrations de première classe pour Microsoft.Extensions.AI et Semantic Kernel signifient que vous pouvez connecter des agents basés sur MCP dans des applications .NET avec un minimum de passe-partout.

Pourquoi l'utiliser

Fonctionnalités clés

Démo en direct

Aperçu en pratique

mcpsharp.replay ▶ prêt
0/0

Installer

Choisissez votre 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
    }
  }
}

Ouvrez Claude Desktop → Settings → Developer → Edit Config. Redémarrez après avoir enregistré.

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

Cursor utilise le même schéma mcpServers que Claude Desktop. La config projet l'emporte sur la globale.

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

Cliquez sur l'icône MCP Servers dans la barre latérale Cline, puis "Edit Configuration".

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

Même format que Claude Desktop. Redémarrez Windsurf pour appliquer.

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

Continue utilise un tableau d'objets serveur plutôt qu'une map.

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

Ajoutez dans context_servers. Zed recharge à chaud à la sauvegarde.

claude mcp add mcpsharp -- dotnet add package MCPSharp

Une seule ligne. Vérifiez avec claude mcp list. Supprimez avec claude mcp remove.

Cas d'usage

Usages concrets : MCPSharp

Exposer les services C# existants en tant qu'outils MCP

👤 Boutiques .NET avec des bibliothèques internes qu'ils souhaitent que les agents IA appellent ⏱ ~30 min intermediate

Quand l'utiliser : Vous disposez d’une bibliothèque métier fonctionnelle en C# et devez la rendre accessible aux agents.

Prérequis
  • SDK .NET 8+ — https://dotnet.microsoft.com/download
  • Forfait MCPSharp — dotnet ajouter le package MCPSharp
Déroulement
  1. Méthodes de décoration
    Ajoutez [McpTool] aux méthodes publiques que je souhaite exposer dans mon OrdersService. Conservez les signatures ; laissez MCPSharp valider.✓ Copié
    → Attributs appliqués, documents XML utilisés comme descriptions
  2. Démarrer le serveur
    Ajoutez un point d'entrée Program.cs qui appelle MCPServer.StartAsync("orders", "1.0.0").✓ Copié
    → Fonctionne via dotnet ; Les clients MCP peuvent découvrir des outils
  3. Connectez-vous à Claude Desktop
    Émettez un extrait de code claude_desktop_config.json qui lance mon binaire dotnet.✓ Copié
    → Bloc de configuration avec command=dotnet args=[run --project, path]

Résultat : Un serveur MCP alimenté par vos services C#, avec peu de nouveau code.

Pièges
  • Rendre de gros objets sans les façonner — Renvoyez les DTO - ne sérialisez pas les entités EF avec des propriétés de navigation, vous ferez exploser les réponses
Combiner avec : fastmcp

Utiliser les outils MCP à partir d'un agent Semantic Kernel

👤 Agents de création d'équipes avec Microsoft Semantic Kernel ⏱ ~45 min intermediate

Quand l'utiliser : Vous êtes sur SK et souhaitez utiliser les outils d'un serveur MCP externe.

Déroulement
  1. Ajouter le client
    Ajoutez le client de MCPSharp et enregistrez le serveur distant en tant que plugin SK.✓ Copié
    → Les outils apparaissent dans le plan SK
  2. Appel depuis une fonction
    Afficher une fonction de chat qui appelle l'un des outils distants lorsque l'utilisateur le demande.✓ Copié
    → Aller-retour : invite → SK sélectionne l'outil → appel MCP → résultat en réponse

Résultat : Votre application SK peut consommer proprement n'importe quel serveur MCP.

Enregistrez les outils au moment de l'exécution à partir d'un dossier de plugin

👤 Les équipes expédient des systèmes de plugins ou des produits low-code ⏱ ~60 min advanced

Quand l'utiliser : Les utilisateurs déposent de nouvelles définitions d'outils et vous souhaitez qu'elles soient disponibles sans redéploiement.

Déroulement
  1. Scanner le dossier
    Écrivez un chargeur qui reflète chaque .dll et enregistre les méthodes [McpTool] de manière dynamique.✓ Copié
    → Les outils apparaissent sans modifier les listes codées en dur
  2. Rechargez à chaud en toute sécurité
    Ajoutez l’isolation AssemblyLoadContext afin que les rechargements ne fuient pas.✓ Copié
    → Anciens assemblages déchargés entre les rechargements

Résultat : Ensemble d'outils enfichables avec cycle de vie d'assemblage approprié.

Pièges
  • Fuite d'assemblages avec contexte de chargement par défaut — Utilisez AssemblyLoadContext collectable pour les rechargements isolés

Combinaisons

Associez-le à d'autres MCPs pour un effet X10

mcpsharp + fastmcp

Comparez la création de serveur .NET et Python MCP

Portez mes outils Python FastMCP vers MCPSharp pour la pile .NET existante.✓ Copié
mcpsharp + csharp-sdk

Package SDK officiel vs package communautaire : choisissez ce qui vous convient

Comparez MCPSharp et le csharp-sdk officiel pour mes besoins.✓ Copié
mcpsharp + azure-ai-gateway

Placez le serveur C# MCP derrière les stratégies de passerelle Azure AI

Présentez mon serveur MCPSharp avec la passerelle Azure AI pour les limites d'authentification/taux.✓ Copié

Outils

Ce que ce MCP expose

OutilEntréesQuand appelerCoût
[McpTool] C# method signature Sur chaque méthode que vous souhaitez qu'un agent appelle 0
[McpResource] C# member Lorsque vous souhaitez exposer des ressources lisibles (fichiers/données) et non des outils 0
[McpParameter] method parameter Marquez les paramètres requis et donnez les descriptions des paramètres 0
MCPServer.StartAsync name, version Démarrez le serveur via stdio (ou transport configuré) 0
MCPClient server address Depuis C# pour parler à un autre serveur MCP 0

Coût et limites

Coût d'exécution

Quota d'API
Aucun — c'est une bibliothèque
Tokens par appel
Cela dépend de vos outils ; la bibliothèque elle-même est petite
Monétaire
Gratuit (OSS de style MIT)
Astuce
Façonnez intentionnellement les DTO de réponse : les gros blobs JSON gonflent à la fois les jetons et la latence.

Sécurité

Permissions, secrets, portée

Stockage des identifiants : Quelle que soit l'utilisation de vos services (configuration ASP.NET, KeyVault, etc.). MCPSharp ne possède pas d'informations d'identification.
Sortie de données : Dépend du transport (stdio local ; HTTP/remote si configuré).

Dépannage

Erreurs courantes et correctifs

Outil non découvert par le client

Confirmez que la méthode est publique, qu'elle contient [McpTool] et que le nom de l'attribut correspond à ce que vous l'appelez. Vérifiez également le nom du serveur transmis à StartAsync.

Vérifier : MCPServer.ListTools() at startup
Exception de sérialisation au retour

Renvoyez un POCO/DTO ; évitez les entités et les types EF chargés paresseusement avec des références cycliques.

Vérifier : Unit test serialization with System.Text.Json
Le noyau sémantique ne voit pas les outils

Enregistrez explicitement le plugin MCP et confirmez que le constructeur du noyau en est conscient ; certaines versions SK nécessitent une importation explicite.

Vérifier : Log plugins at startup

Alternatives

MCPSharp vs autres

AlternativeQuand l'utiliserCompromis
csharp-sdk (official)Vous voulez le SDK officiel Anthropic/MCP C#Ergonomie différente ; surveillez les différences de fonctionnalités
fastmcpVous préférez PythonÉcosystème différent
mcp-agentVous voulez des modèles d'agent basés sur Python, pas seulement une création de serveurPas .NET

Plus

Ressources

📖 Lire le README officiel sur GitHub

🐙 Voir les issues ouvertes

🔍 Parcourir les 400+ serveurs MCP et Skills