Skip to main content
Glama
arctic-cheetah

comp3900_server

Это репозиторий для тестирования моего пользовательского MCP-сервера

Сервер установки проекта COMP3900

comp3900_server.py — это выделенный MCP-сервер для проекта https://github.com/arctic-cheetah/COMP3900-Project. Он может:

  • клонировать фиксированный репозиторий на машину, где работает MCP-сервер;

  • предоставлять LLM доступ к README проекта и ограниченное чтение файлов проекта;

  • проверять предварительные условия, включая работоспособность Chromium от Playwright;

  • устанавливать локально бэкенд, Playwright Chromium и фронтенд;

  • собирать/запускать документированный стек Docker Compose; или

  • опционально устанавливать клиент cloudflared (см. ниже).

Загрузка по умолчанию выполняется в ./COMP3900-Project. Чтобы использовать другое расположение, задайте COMP3900_PROJECT_DIR с указанием явного каталога проекта.

Сначала установите зависимость этого MCP-сервера:

python3 -m pip install -r requirements.txt

Запустите его через stdio:

mcp run comp3900_server.py:mcp

Или запустите напрямую:

python3 comp3900_server.py

В MCP-клиенте выберите промпт install_comp3900 для пошагового процесса или вызовите setup_project напрямую. Пример аргументов для локальной установки:

{
  "method": "local",
  "install_browser": true,
  "install_browser_system_dependencies": true,
  "start_services": false,
  "install_cloudflare_tunnel_client": false
}

Для Docker используйте "method": "docker"; установите "start_services": true, чтобы запустить стек в фоновом режиме после сборки.

Playwright

HTML-движок детектора URL работает на Playwright, поэтому это реальное требование: в backend/pyproject.toml указан playwright, а в backend/Dockerfile и operational-install-manual.md выполняется playwright install --with-deps chromium.

install_browser_system_dependencies теперь по умолчанию имеет значение true, чтобы соответствовать этому документированному шагу. Он обращается к системному менеджеру пакетов для общих библиотек Chromium, поэтому на хосте, где сервер не запущен от root, может запросить повышение привилегий. Установите его в false, если предпочитаете установить эти библиотеки самостоятельно. check_prerequisites сообщает url_detector_ready, который истинен только тогда, когда и модуль Playwright, и его браузер Chromium разрешаются.

cloudflared

install_cloudflared загружает официальный бинарный файл релиза в <checkout>/.tools/cloudflared и сообщает его sha256. По умолчанию он отключён в install_project и setup_project; передайте "install_cloudflare_tunnel_client": true, чтобы включить его.

Два важных замечания:

  • Cloudflare не является зависимостью проекта COMP3900. Он нигде не упоминается ни в README, ни в руководстве по установке, ни в каких-либо манифестах. Единственные вхождения в репозитории — это строки доменов, такие как cdnjs.cloudflare.com, внутри CSV-файлов для обучения ML в backend/ml/data/.

  • Сервер устанавливает только клиент. Он никогда не аутентифицируется в Cloudflare и не запускает туннель, потому что запуск туннеля публикует локальный сервис в публичном интернете. Это остаётся осознанным шагом человека.

Установка в каталог проверки (checkout) сохраняет операцию без привилегий: не запускается системный менеджер пакетов и ничего не записывается за пределами каталога проекта.

Related MCP server: homelab-mcp

Инструкции

Из каталога проекта запустите интерактивный MCP Inspector:

mcp dev server.py

Команда выводит локальный URL Inspector. Откройте его, подключитесь, выберите инструмент add и укажите:

{
  "a": 1,
  "b": 2
}

Результат должен быть 3.

Чтобы запустить его как обычный stdio MCP-сервер для MCP-клиента:

mcp run server.py:mcp

Запуск python server.py в настоящее время завершается сразу, потому что файл только определяет сервер. Чтобы поддержать эту команду, добавьте:

if __name__ == "__main__":
    mcp.run()

Затем запустите

python3 server.py

Если MCP не установлен на другой машине:

python3 -m pip install "mcp[cli]"

Затем

mcp dev server.py

Развёртывания:

Это описание того, что изменяет блок кода: Добавление руководства по подключению (варианты STDIO и HTTP) в README.md после существующего содержимого.

Это блок кода, представляющий предлагаемое изменение кода:

Подключение к ChatGPT Desktop

Вариант 1: Подключение через STDIO (рекомендуется)

Поскольку сервер в настоящее время работает внутри WSL, заполните форму настольного приложения следующим образом:

  • Имя: MCP_test

  • Тип: STDIO

  • Команда запуска: wsl.exe

  • Аргументы: добавляйте каждый элемент отдельно, в следующем порядке:

    --cd
    /home/khalifa/MCP-server
    --exec
    /home/khalifa/pythonPackages/bin/mcp
    run
    server.py:mcp
  • Переменные окружения: оставьте пустыми

  • Рабочий каталог: оставьте пустым

Если выбрано неправильное дистрибутив WSL, вставьте эти аргументы первыми:

--distribution
Ubuntu

Замените Ubuntu на имя, выводимое командой:

wsl.exe --list --verbose

Таким образом, фактически это выглядит так:

  • Аргументы: добавляйте каждый элемент отдельно, в следующем порядке:

    --distribution
    kali-linux
    --cd
    /home/khalifa/MCP-server
    --exec
    /home/khalifa/pythonPackages/bin/mcp
    run
    server.py:mcp

Сохраните сервер и перезапустите настольное приложение. В чате введите:

/mcp

Вы должны увидеть MCP_test и его инструмент add. Попробуйте:

Use the MCP_test add tool to add 17 and 25.

Официальная документация OpenAI подтверждает, что настольное приложение поддерживает как локальные процессы STDIO, так и серверы Streamable HTTP. Также требуется перезапуск после сохранения конфигурации. Документация OpenAI MCP

Вариант 2: Запуск сервера через HTTP

Остановите mcp dev, затем запустите:

cd /home/khalifa/MCP-server
mcp run server.py:mcp --transport streamable-http

Конечная точка MCP по умолчанию:

http://127.0.0.1:8000/mcp

В форме настольного приложения:

  • Имя: MCP_test_http

  • Тип: Streamable HTTP

  • URL: http://127.0.0.1:8000/mcp

Для этого режима нет команды запуска или аргументов. HTTP-сервер должен уже работать.

Если порт 8000 занят, добавьте это в server.py:

if __name__ == "__main__":
    mcp.run(
        transport="streamable-http",
        host="127.0.0.1",
        port=8001,
    )

Затем запустите:

python3 server.py

Используйте этот URL в настольном приложении:

http://127.0.0.1:8001/mcp

Вызов через HTTP-запрос

MCP — это JSON-RPC, а не обычный REST API. Поэтому открытие /mcp в адресной строке браузера не вызовет add. Необходимо инициализировать сеанс MCP, а затем вызвать инструмент.

Инициализация:

curl.exe -i -N http://127.0.0.1:8000/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  --data "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-11-25\",\"capabilities\":{},\"clientInfo\":{\"name\":\"curl\",\"version\":\"1.0\"}}}"

Скопируйте значение заголовка ответа Mcp-Session-Id. Затем вызовите add:

curl.exe -N http://127.0.0.1:8000/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Mcp-Session-Id: PASTE_SESSION_ID_HERE" \
  --data "{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/call\",\"params\":{\"name\":\"add\",\"arguments\":{\"a\":17,\"b\":25}}}"

Для интерактивного тестирования в браузере проще использовать уже имеющийся Inspector, чем вручную управлять сеансом JSON-RPC. HTTP-конечная точка в первую очередь предназначена для MCP-клиентов, таких как ChatGPT Desktop, Codex или Inspector, а не для прямой навигации в браузере.

Related MCP Connectors

Related MCP Servers