模型上下文协议演示

一个基于fastmcp的MCP服务器演示项目,提供算术工具calc,支持Docker容器化部署和远程调用。

  • by alexnxela
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 alexnxela/mcp-demo

使用说明

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.txt Python-зависимости (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.