/ Directorio / Playground / MCPSharp
● Comunidad afrise ⚡ Instantáneo

MCPSharp

por afrise · afrise/MCPSharp

Envíe MCP en C#/.NET: decore un método con [McpTool], inicie el servidor y listo. Funciona con Microsoft.Extensions.AI y Semantic Kernel.

MCPSharp es un paquete .NET NuGet que convierte métodos C# en herramientas (y recursos) MCP a través de atributos, y también proporciona un cliente para llamar a otros servidores MCP desde C#. Maneja la plomería JSON-RPC, la validación automática de parámetros y la conversión de tipos, y extrae descripciones de herramientas de los comentarios de su documento XML. Las integraciones de primera clase para Microsoft.Extensions.AI y Semantic Kernel significan que puede conectar agentes con herramientas MCP a aplicaciones .NET con un mínimo de texto repetitivo.

Por qué usarlo

Características clave

Demo en vivo

Cómo se ve en la práctica

mcpsharp.replay ▶ listo
0/0

Instalar

Elige tu cliente

~/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
    }
  }
}

Abre Claude Desktop → Settings → Developer → Edit Config. Reinicia después de guardar.

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

Cursor usa el mismo esquema mcpServers que Claude Desktop. La configuración del proyecto prevalece sobre la global.

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

Haz clic en el icono MCP Servers de la barra lateral de Cline y luego en "Edit Configuration".

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

Mismo formato que Claude Desktop. Reinicia Windsurf para aplicar.

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

Continue usa un array de objetos de servidor en lugar de un mapa.

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

Añádelo a context_servers. Zed recarga en caliente al guardar.

claude mcp add mcpsharp -- dotnet add package MCPSharp

Un solo comando. Verifica con claude mcp list. Quita con claude mcp remove.

Casos de uso

Usos del mundo real: MCPSharp

Exponer los servicios C# existentes como herramientas MCP

👤 Tiendas .NET con bibliotecas internas a las que quieren que llamen los agentes de IA ⏱ ~30 min intermediate

Cuándo usarlo: Tiene una biblioteca empresarial en funcionamiento en C# y necesita hacerla accesible para los agentes.

Requisitos previos
  • SDK de .NET 8+ — https://dotnet.microsoft.com/download
  • Paquete MCPSharp — dotnet agregar paquete MCPSharp
Flujo
  1. Métodos de decoración
    Agregue [McpTool] a los métodos públicos que quiero exponer en mi OrdersService. Conservar firmas; deje que MCPSharp valide.✓ Copiado
    → Atributos aplicados, documentos XML utilizados como descripciones.
  2. Iniciar el servidor
    Agregue un punto de entrada de Program.cs que llame a MCPServer.StartAsync("orders", "1.0.0").✓ Copiado
    → Se ejecuta a través de dotnet run; Los clientes de MCP pueden descubrir herramientas
  3. Cableado al escritorio Claude
    Emitir un fragmento de claude_desktop_config.json que inicia mi binario dotnet.✓ Copiado
    → Bloque de configuración con comando=dotnet args=[ejecutar --project, ruta]

Resultado: Un servidor MCP potenciado por sus servicios C#, con poco código nuevo.

Errores comunes
  • Devolver objetos grandes sin darles forma — Devuelva DTO: no serialice entidades EF con propiedades de navegación, explotará las respuestas
Combinar con: fastmcp

Utilice herramientas MCP de un agente del Kernel Semántico

👤 Teams construyendo agentes con Microsoft Semantic Kernel ⏱ ~45 min intermediate

Cuándo usarlo: Estás en SK y quieres consumir las herramientas de un servidor MCP externo.

Flujo
  1. Agregar la clienta
    Agregue el cliente de MCPSharp y registre el servidor remoto como un complemento SK.✓ Copiado
    → Las herramientas aparecen en el plan SK.
  2. Llamada desde una función
    Mostrar una función de chat que llama a una de las herramientas remotas cuando el usuario lo solicita.✓ Copiado
    → Ida y vuelta: mensaje → SK selecciona herramienta → llamada MCP → resultado en respuesta

Resultado: Su aplicación SK puede consumir cualquier servidor MCP de forma limpia.

Registrar herramientas en tiempo de ejecución desde una carpeta de complementos

👤 Teams envía sistemas de complementos o productos de código bajo ⏱ ~60 min advanced

Cuándo usarlo: Los usuarios introducen nuevas definiciones de herramientas y usted quiere que estén disponibles sin volver a implementarlas.

Flujo
  1. escanear la carpeta
    Escriba un cargador que refleje cada .dll y registre los métodos [McpTool] dinámicamente.✓ Copiado
    → Las herramientas aparecen sin cambiar las listas codificadas
  2. Recarga en caliente de forma segura
    Agregue aislamiento AssemblyLoadContext para que las recargas no se filtren.✓ Copiado
    → Conjuntos antiguos descargados entre recargas.

Resultado: Juego de herramientas enchufables con ciclo de vida de montaje adecuado.

Errores comunes
  • Conjuntos con fugas con contexto de carga predeterminado — Utilice AssemblyLoadContext coleccionable para recargas aisladas

Combinaciones

Combínalo con otros MCPs para multiplicar por 10

mcpsharp + fastmcp

Comparar la creación del servidor .NET vs Python MCP

Porte mis herramientas Python FastMCP a MCPSharp para la pila .NET existente.✓ Copiado
mcpsharp + csharp-sdk

SDK oficial versus paquete comunitario: elija lo que mejor se adapte a sus necesidades

Compare MCPSharp y el csharp-sdk oficial para mis necesidades.✓ Copiado
mcpsharp + azure-ai-gateway

Coloque el servidor C# MCP detrás de las políticas de puerta de enlace de Azure AI

Frente a mi servidor MCPSharp con la puerta de enlace Azure AI para límites de autenticación/tasa.✓ Copiado

Herramientas

Lo que expone este MCP

HerramientaEntradasCuándo llamarCoste
[McpTool] C# method signature En cada método que desee que una agente llame 0
[McpResource] C# member Cuando desea exponer recursos legibles (archivos/datos), no herramientas 0
[McpParameter] method parameter Marcar los parámetros requeridos y proporcionar descripciones de los parámetros. 0
MCPServer.StartAsync name, version Inicie el servidor a través de stdio (o transporte configurado) 0
MCPClient server address Desde C# para hablar con otro servidor MCP 0

Coste y límites

Lo que cuesta ejecutarlo

Cuota de API
Ninguno, es una biblioteca.
Tokens por llamada
Depende de tus herramientas; la biblioteca en sí es pequeña
Monetario
Gratis (OSS estilo MIT)
Consejo
Dé forma intencionada a los DTO de respuesta: los grandes blobs JSON inflan tanto los tokens como la latencia.

Seguridad

Permisos, secretos, alcance

Almacenamiento de credenciales: Cualquiera que sea el uso de sus servicios (configuración ASP.NET, KeyVault, etc.). MCPSharp no posee credenciales.
Salida de datos: Dependiente del transporte (stdio local; HTTP/remoto si está configurado).

Resolución de problemas

Errores comunes y soluciones

Herramienta no descubierta por la cliente

Confirme que el método sea público, que tenga [McpTool] y que el nombre del atributo coincida con su nombre. Verifique también el nombre del servidor pasado a StartAsync.

Verificar: MCPServer.ListTools() at startup
Excepción de serialización al regresar

Devolver un POCO/DTO; Evite entidades y tipos EF cargados de forma diferida con referencias cíclicas.

Verificar: Unit test serialization with System.Text.Json
El kernel semántico no ve herramientas

Registre el complemento MCP explícitamente y confirme que el generador del kernel lo sepa; algunas versiones de SK requieren una importación explícita.

Verificar: Log plugins at startup

Alternativas

MCPSharp vs otros

AlternativaCuándo usarlaContrapartida
csharp-sdk (official)Quieres el SDK oficial de Anthropic/MCP C#Diferente ergonomía; Esté atento a las diferencias de características.
fastmcpPrefieres PythonEcosistema diferente
mcp-agentQuiere patrones de agentes basados ​​en Python, no solo creación de servidoresNo .NET

Más

Recursos

📖 Lee el README oficial en GitHub

🐙 Ver issues abiertas

🔍 Ver todos los 400+ servidores MCP y Skills