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).

Структура проекта
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 через NVDsearch_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-app→app.main:run_httprun-stdio→app.main:run_stdiorun-app-local→app.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.
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