使用说明
MCP Demo
Overview
- Purpose Простая демонстрация сервера Model Context Protocol (MCP) на базе
fastmcp, предоставляющего арифметический инструментcalc. - Components Контейнер с MCP-сервером
math, контейнер с@modelcontextprotocol/inspector, скрипт клиентаremote-test.py, опциональный туннель ngrok.
Tech stack
- Python 3.11 Сервер MCP и клиент.
- fastmcp Упрощённый запуск MCP-сервера с SSE-транспортом.
- Docker / Docker Compose Контейнеризация сервисов.
- Node.js + @modelcontextprotocol/inspector Визуальный инспектор протокола.
Project layout
mcp_math.pyОпределение MCP-сервера с инструментомcalc.remote-test.pyПример асинхронного клиента, вызывающегоcalcчерез SSE.docker-compose.ymlОсновные сервисы:mathиinspector.docker-compose-ngrok.ymlДополнительный сервис для проброса портов через ngrok.Dockerfile-mcp/Dockerfile-inspectorКонтейнеры для сервера и инспектора с установкойuv..env/.env.exampleШаблон и значения переменных окружения для ngrok.requirements.txtPython-зависимости (fastmcp,watchdog).
Prerequisites
- Docker и Docker Compose для запуска окружения.
- Python 3.11+ если хотите запускать клиента без контейнера.
- Node.js 20+ не требуется локально, устанавливается внутри контейнера инспектора.
Configuration
- Скопируйте
.env.exampleв.envи подставьте значения, если планируете использовать ngrok (NGROK_AUTH_TOKEN,NGROK_CMD). - Без ngrok файл
.envможно не создавать.
Run with Docker Compose
docker compose up --build
- math будет доступен по
http://localhost:3000/sse. - inspector UI откроется на
http://localhost:6274. - inspector proxy слушает
http://localhost:6277.
Using the Inspector
- Откройте
http://localhost:6274в браузере. - Подключитесь к серверу
mathчерез UI: введитеhttp://math:3000/sseилиhttp://localhost:3000/sseв зависимости от точки доступа. - Исследуйте объявленные инструменты (
calc) и выполняйте вызовы прямо из интерфейса.
Remote client example
uv run remote-test.py
или, без uv:
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python remote-test.py
- Скрипт
remote-test.pyвыполняетping, запрашивает список инструментов и вызываетcalcс аргументами1 + 2. - Убедитесь что сервис
mathзапущен и доступен поhttp://localhost:3000/sse.
Optional: expose with ngrok
docker compose -f docker-compose-ngrok.yml up
- Проверьте
NGROK_AUTH_TOKENиNGROK_CMDв.env. - Веб-интерфейс ngrok доступен на
http://localhost:4040.
Development notes
- Горячая перезагрузка Управляется библиотекой
watchdog, установленной для возможного расширения. - Добавление инструментов Выполняйте в
mcp_math.py, регистрируя новые функции через@mcp.tool(). - Стиль кода Соответствует стандартным практикам Python 3.11 и MCP.
