Skip to content

Latest commit

 

History

History
120 lines (97 loc) · 6.91 KB

File metadata and controls

120 lines (97 loc) · 6.91 KB

Basic Calculator MCP Service

Этот сервис предоставляет базовые операции калькулятора через Model Context Protocol (MCP). Он создан как простой пример для начинающих, изучающих реализацию MCP.

Для дополнительной информации смотрите C# SDK

Возможности

Этот сервис калькулятора предлагает следующие функции:

  1. Основные арифметические операции:
    • Сложение двух чисел
    • Вычитание одного числа из другого
    • Умножение двух чисел
    • Деление одного числа на другое (с проверкой деления на ноль)

Использование типа stdio

Конфигурация

  1. Настройка MCP серверов:
    • Откройте вашу рабочую область в VS Code.

    • Создайте файл .vscode/mcp.json в папке рабочей области для настройки MCP серверов. Пример конфигурации:

      {
        "inputs": [
          {
            "type": "promptString",
            "id": "repository-root",
            "description": "The absolute path to the repository root"
          }
        ],
        "servers": {
          "calculator-mcp-dotnet": {
            "type": "stdio",
            "command": "dotnet",
            "args": [
              "run",
              "--project",
              "${input:repository-root}/03-GettingStarted/samples/csharp/src/calculator.csproj"
            ]
          }
        }
      }
    • Вас попросят ввести корень репозитория GitHub, который можно получить командой git rev-parse --show-toplevel.

Использование сервиса

Сервис предоставляет следующие API через протокол MCP:

  • add(a, b): Сложить два числа
  • subtract(a, b): Вычесть второе число из первого
  • multiply(a, b): Умножить два числа
  • divide(a, b): Разделить первое число на второе (с проверкой на ноль)
  • isPrime(n): Проверить, является ли число простым

Тестирование с Github Copilot Chat в VS Code

  1. Попробуйте сделать запрос к сервису через протокол MCP. Например, вы можете спросить:
    • "Add 5 and 3"
    • "Subtract 10 from 4"
    • "Multiply 6 and 7"
    • "Divide 8 by 2"
    • "Does 37854 prime?"
    • "What are the 3 prime numbers before after 4242?"
  2. Чтобы убедиться, что используются нужные инструменты, добавьте #MyCalculator в запрос. Например:
    • "Add 5 and 3 #MyCalculator"
    • "Subtract 10 from 4 #MyCalculator"

Контейнеризированная версия

Предыдущее решение отлично подходит, если у вас установлен .NET SDK и все зависимости на месте. Однако, если вы хотите поделиться решением или запустить его в другой среде, можно использовать контейнеризированную версию.

  1. Запустите Docker и убедитесь, что он работает.
  2. В терминале перейдите в папку 03-GettingStarted\samples\csharp\src
  3. Чтобы собрать Docker-образ для сервиса калькулятора, выполните следующую команду (замените <YOUR-DOCKER-USERNAME> на ваше имя пользователя Docker Hub):
    docker build -t <YOUR-DOCKER-USERNAME>/mcp-calculator .
  4. После сборки образа загрузите его в Docker Hub. Выполните команду:
     docker push <YOUR-DOCKER-USERNAME>/mcp-calculator

## Использование Docker-версии

1. В файле `.vscode/mcp.json` замените конфигурацию сервера на следующую:
 ```json
  "mcp-calc": {
    "command": "docker",
    "args": [
      "run",
      "--rm",
      "-i",
      "<YOUR-DOCKER-USERNAME>/mcp-calc"
    ],
    "envFile": "",
    "env": {}
  }

В конфигурации видно, что команда — docker, а аргументы — run --rm -i <YOUR-DOCKER-USERNAME>/mcp-calc. Флаг --rm гарантирует удаление контейнера после остановки, а -i позволяет взаимодействовать со стандартным вводом контейнера. Последний аргумент — имя образа, который мы только что собрали и загрузили в Docker Hub.

Тестирование Docker-версии

Запустите MCP сервер, нажав на маленькую кнопку запуска над "mcp-calc": {, и, как и раньше, вы можете попросить сервис калькулятора выполнить вычисления для вас.

Отказ от ответственности:
Этот документ был переведен с помощью сервиса автоматического перевода Co-op Translator. Несмотря на наши усилия по обеспечению точности, просим учитывать, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется обращаться к профессиональному переводу, выполненному человеком. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования данного перевода.