Skip to main content
Glama
yeison-liscano

Demo HTTP MCP Server

test-http-mcp

Демонстрационный сервер Model Context Protocol (MCP), реализованный на Python с использованием пакета http-mcp. Он может работать через HTTP (Starlette/Uvicorn) или через stdio, предоставляя примеры инструментов (Tools) и подсказок (Prompts) любому MCP-совместимому клиенту. Проект включает React-интерфейс, который предоставляет чат для поиска уязвимостей через NVD (National Vulnerability Database).

Chat UI

Структура проекта

test-http-mcp/
├── backend/                 # Python backend (FastAPI + MCP server)
│   ├── app/                 # Application source code
│   │   ├── app.py           # FastAPI app, routes, MCP mount
│   │   ├── main.py          # Entry points (HTTP / stdio)
│   │   ├── agen_memory.py   # SQLite message persistence
│   │   ├── config.py        # Settings via pydantic-settings
│   │   ├── tools/           # MCP tools (CPE/CVE search via NVD)
│   │   └── prompts/         # MCP prompt templates
│   ├── pyproject.toml       # Python deps & scripts
│   ├── uv.lock              # Locked dependencies
│   ├── ruff.toml            # Linter config
│   ├── mypy.ini             # Type-checker config
│   └── .envrc               # direnv auto-activation
├── frontend/                # React + TypeScript frontend (Vite)
│   ├── src/
│   │   ├── components/      # ChatApp, ChatInput, MessageList, MessageBubble
│   │   ├── api.ts           # API client (fetch history, stream messages)
│   │   ├── types.ts         # Shared TypeScript types
│   │   ├── App.tsx          # Root component
│   │   └── App.css          # Styles
│   ├── vite.config.ts       # Vite config with dev proxy
│   └── package.json         # Node dependencies
├── AGENTS.md
├── LICENSE
└── README.md

Требования

  • Python 3.13

  • Node.js 18+ и npm

  • uv (рекомендуется) или pip

Установка

Бэкенд (с использованием uv):

cd backend
uv run python -V            # creates a venv and syncs deps from pyproject

Бэкенд (с использованием pip):

cd backend
python3.13 -m venv .venv
source .venv/bin/activate
pip install .

Фронтенд:

cd frontend
npm install

Запуск

Разработка (фронтенд + бэкенд отдельно)

Запуск бэкенда:

cd backend
uv run run-app
# → API on http://localhost:8000
# → MCP endpoint on http://localhost:8000/mcp/

Запуск сервера разработки фронтенда (в отдельном терминале):

cd frontend
npm run dev
# → UI on http://localhost:5173 (proxies /api/* → backend)

Продакшн (бэкенд обслуживает собранный фронтенд)

Сборка фронтенда и запуск бэкенда:

cd frontend && npm run build && cd ..
cd backend && uv run run-app
# → Everything on http://localhost:8000

Запуск (режим stdio)

Использование с Cursor или другими MCP-клиентами

Пример .cursor/mcp.json для режима HTTP:

{
  "mcpServers": {
    "test-http-mcp": {
      "type": "http",
      "url": "http://localhost:8000/mcp/",
      "headers": {
        "Authorization": "Bearer $TEST_TOKEN"
      }
    }
  }
}

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

{
  "mcpServers": {
    "test": {
      "httpUrl": "http://localhost:8000/mcp/",
      "timeout": 5000,
      "headers": {
        "Authorization": "Bearer TEST_TOKEN"
      }
    }
  }
}

Пример записи в .cursor/mcp.json для подключения через stdio:

{
  "mcpServers": {
    "test_studio": {
      "command": "uv",
      "args": ["run", "--project", "backend", "run-stdio"],
      "env": { "AUTHORIZATION_TOKEN": "Bearer TEST_TOKEN" }
    }
  }
}

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

  • Инструменты (см. backend/app/tools/):

    • search_cpe(product, version, vendor) — поиск Common Platform Enumerations через NVD

    • search_cve(cpe_name) — поиск Common Vulnerabilities and Exposures для заданного CPE

  • Подсказки (см. backend/app/prompts/):

    • sync_nvd_search(dependency, version) — простая подсказка для поиска уязвимостей

    • async_nvd_search(dependency, version) — продвинутая подсказка с предварительно полученными данными CVE

Скрипты проекта

В backend/pyproject.toml определены две точки входа в консоль:

  • run-appapp.main:run_http

  • run-stdioapp.main:run_stdio

  • run-app-localapp.app:main (с автоматической перезагрузкой)

Разработка

Общие задачи (запускаются из директории backend/):

uv run ruff check .           # lint
uv run mypy .                 # type check
uv run pytest                 # tests
uv run mdformat .             # format markdown

Задачи фронтенда (запускаются из директории frontend/):

npm run dev                   # start dev server
npm run build                 # production build
npm run lint                  # lint with ESLint
npx tsc --noEmit              # type check

Примечания по реализации

  • Приложение FastAPI определено в backend/app/app.py и монтирует http_mcp.server.MCPServer по пути /mcp.

  • Интерфейс чата использует pydantic-ai с агентом Gemini, который может вызывать инструменты MCP для поиска уязвимостей.

  • История чата сохраняется в локальной базе данных SQLite через agen_memory.py.

  • React-фронтенд транслирует ответы в виде JSON, разделенного символами новой строки, и отображает Markdown с помощью библиотеки marked.

  • В продакшене бэкенд обслуживает собранный фронтенд из frontend/dist/ с маршрутизацией SPA-резерва.

  • В режиме разработки Vite проксирует запросы /api/* на бэкенд на порт 8000.

Лицензия

MIT — см. LICENSE.

Install Server
A
security – no known vulnerabilities
A
license - permissive license
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yeison-liscano/demo_http_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server