/ Каталог / Песочница / MCPSharp
● Сообщество afrise ⚡ Сразу

MCPSharp

автор afrise · afrise/MCPSharp

Отправьте MCP на C#/.NET — украсьте метод с помощью [McpTool], запустите сервер, готово. Работает с Microsoft.Extensions.AI и семантическим ядром.

MCPSharp — это пакет .NET NuGet, который превращает методы C# в инструменты (и ресурсы) MCP с помощью атрибутов, а также предоставляет клиенту для вызова других серверов MCP из C#. Он обрабатывает JSON-RPC, автоматическую проверку параметров и преобразование типов, а также извлекает описания инструментов из комментариев к XML-документу. Первоклассная интеграция Microsoft.Extensions.AI и Semantic Kernel означает, что вы можете подключать агенты с поддержкой MCP к приложениям .NET с минимальным использованием шаблонного кода.

Зачем использовать

Ключевые функции

Живое демо

Как выглядит на практике

mcpsharp.replay ▶ готово
0/0

Установка

Выберите клиент

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

Откройте Claude Desktop → Settings → Developer → Edit Config. Перезапустите после сохранения.

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

Cursor использует ту же схему mcpServers, что и Claude Desktop. Конфиг проекта приоритетнее глобального.

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

Щёлкните значок MCP Servers на боковой панели Cline, затем "Edit Configuration".

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

Тот же формат, что и Claude Desktop. Перезапустите Windsurf для применения.

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

Continue использует массив объектов серверов, а не map.

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

Добавьте в context_servers. Zed перезагружается автоматически.

claude mcp add mcpsharp -- dotnet add package MCPSharp

Однострочная команда. Проверить: claude mcp list. Удалить: claude mcp remove.

Сценарии использования

Реальные сценарии: MCPSharp

Предоставьте существующие службы C# как инструменты MCP.

👤 Магазины .NET с внутренними библиотеками, к которым должны обращаться агенты ИИ. ⏱ ~30 min intermediate

Когда использовать: У вас есть работающая бизнес-библиотека на C#, и вам необходимо сделать ее доступной для агентов.

Предварительные требования
  • SDK для .NET 8+ — https://dotnet.microsoft.com/download
  • Пакет MCPSharp — dotnet добавить пакет MCPSharp
Поток
  1. Методы украшения
    Добавьте [McpTool] к общедоступным методам, которые я хочу предоставить в моем OrdersService. Сохраняйте подписи; позвольте MCPSharp проверить.✓ Скопировано
    → Применяются атрибуты, XML-документы используются в качестве описаний.
  2. Запустить сервер
    Добавьте точку входа Program.cs, которая вызывает MCPServer.StartAsync("orders", "1.0.0").✓ Скопировано
    → Запускается через dotnet run; Клиенты MCP могут найти инструменты
  3. Подключитесь к Claude Desktop
    Создайте фрагмент claude_desktop_config.json, который запускает мой двоичный файл dotnet.✓ Скопировано
    → Блок конфигурации с командой =dotnet args=[run --project, path]

Итог: Сервер MCP, обеспечивающий мощь ваших сервисов C#, с небольшим количеством нового кода.

Подводные камни
  • Возврат больших объектов без придания им формы — Возвращайте DTO — не сериализуйте объекты EF со свойствами навигации, вы уничтожите ответы.
Сочетать с: fastmcp

Используйте инструменты MCP из агента семантического ядра.

👤 Команды создают агентов с помощью Microsoft Semantic Kernel ⏱ ~45 min intermediate

Когда использовать: Вы используете SK и хотите использовать инструменты внешнего сервера MCP.

Поток
  1. Добавить клиента
    Добавьте клиент MCPSharp и зарегистрируйте удаленный сервер как плагин SK.✓ Скопировано
    → Инструменты появляются в плане СК
  2. Вызов из функции
    Покажите функцию чата, которая вызывает один из удаленных инструментов по запросу пользователя.✓ Скопировано
    → Туда-обратно: подсказка → SK выбирает инструмент → вызов MCP → результат в ответ

Итог: Ваше приложение SK может без проблем использовать любой сервер MCP.

Регистрируйте инструменты во время выполнения из папки плагина.

👤 Teams поставляет системы плагинов или продукты с низким кодированием ⏱ ~60 min advanced

Когда использовать: Пользователи добавляют новые определения инструментов, и вы хотите, чтобы они были доступны без повторного развертывания.

Поток
  1. Сканировать папку
    Напишите загрузчик, который отражает каждый .dll и динамически регистрирует методы [McpTool].✓ Скопировано
    → Инструменты появляются без изменения жестко запрограммированных списков.
  2. Безопасная горячая перезагрузка
    Добавьте изоляцию AssemblyLoadContext, чтобы перезагрузки не протекали.✓ Скопировано
    → Старые сборки выгружаются между перезагрузками

Итог: Сменный набор инструментов с надлежащим сроком службы сборки.

Подводные камни
  • Утечка сборок с контекстом загрузки по умолчанию — Используйте коллекционный объект AssemblyLoadContext для изолированных перезагрузок.

Комбинации

Сочетайте с другими MCP — эффект x10

mcpsharp + fastmcp

Сравните разработку сервера .NET и Python MCP

Перенесите мои инструменты Python FastMCP в MCPSharp для существующего стека .NET.✓ Скопировано
mcpsharp + csharp-sdk

Официальный SDK или пакет сообщества — выберите то, что подходит

Сравните MCPSharp и официальный csharp-sdk для моих нужд.✓ Скопировано
mcpsharp + azure-ai-gateway

Разместите сервер C# MCP за политиками шлюза Azure AI.

Подключите мой сервер MCPSharp к шлюзу Azure AI для ограничений аутентификации и скорости.✓ Скопировано

Инструменты

Что предоставляет этот MCP

ИнструментВходные данныеКогда вызыватьСтоимость
[McpTool] C# method signature Для каждого метода, который вы хотите, чтобы агент вызывал 0
[McpResource] C# member Если вы хотите предоставить доступные для чтения ресурсы (файлы/данные), а не инструменты. 0
[McpParameter] method parameter Отметьте необходимые параметры и дайте описания параметров. 0
MCPServer.StartAsync name, version Запустите сервер через stdio (или настроенный транспорт) 0
MCPClient server address С C# для общения с другим сервером MCP 0

Стоимость и лимиты

Во что обходится

Квота API
Нет — это библиотека
Токенов на вызов
Зависит от ваших инструментов; сама библиотека крошечная
Деньги
Бесплатно (OSS в стиле MIT)
Совет
Намеренно формируйте ответные DTO — большие объекты JSON увеличивают как токены, так и задержку.

Безопасность

Права, секреты, радиус поражения

Хранение учётных данных: Что бы ни использовали ваши службы (конфигурация ASP.NET, KeyVault и т. д.). MCPSharp не владеет учетными данными.
Исходящий трафик: Зависит от транспорта (локальный stdio; HTTP/удаленный, если настроено).

Устранение неполадок

Частые ошибки и исправления

Инструмент не обнаружен клиентом

Убедитесь, что метод является общедоступным, имеет [McpTool] и имя атрибута соответствует тому, как вы его называете. Также проверьте имя сервера, переданное в StartAsync.

Проверить: MCPServer.ListTools() at startup
Исключение сериализации при возврате

Верните POCO/DTO; избегайте ленивой загрузки объектов и типов EF с циклическими ссылками.

Проверить: Unit test serialization with System.Text.Json
Семантическое ядро ​​не видит инструменты

Явно зарегистрируйте плагин MCP и убедитесь, что сборщик ядра знает об этом; некоторые версии SK требуют явного импорта.

Проверить: Log plugins at startup

Альтернативы

MCPSharp в сравнении

АльтернативаКогда использоватьКомпромисс
csharp-sdk (official)Вам нужен официальный Anthropic/MCP C# SDK.Разная эргономика; следите за различиями в функциях
fastmcpВы предпочитаете PythonДругая экосистема
mcp-agentВам нужны шаблоны агентов на основе Python, а не просто разработка серверов.Не .NET

Ещё

Ресурсы

📖 Читать официальный README на GitHub

🐙 Открытые задачи

🔍 Все 400+ MCP-серверов и Skills