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

Структура проекта
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
│ │ ├── auth0/ # Auth0 integration
│ │ │ ├── __init__.py # JWT token validator
│ │ │ └── client_store.py # Dynamic client registration (RFC 7591)
│ │ ├── 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Аутентификация (Auth0)
MCP-эндпоинт (/mcp/) защищен с помощью аутентификации Auth0 OAuth2. Для инструментов требуются области видимости (scopes) (tool:search_cpe, tool:search_cve), которые должны присутствовать в токене доступа.
Необходимые переменные окружения
Переменная | Описание |
| Домен арендатора Auth0 (например, |
| Идентификатор API для проверки токена |
| Идентификатор клиента приложения Auth0 для MCP-приложения |
| Идентификатор клиента Management API (для динамической регистрации) |
| Секрет клиента Management API |
| Установите |
Разместите их в backend/.env (файл игнорируется git).
Структура монтирования приложения
Путь | Приложение | Аутентификация |
| Защищенный MCP-сервер | Требуется токен Auth0 Bearer |
| Динамическая регистрация клиента (RFC 7591) | Без аутентификации |
| Метаданные OAuth/ресурсов | Без аутентификации |
| Эндпоинты чат-интерфейса | Без аутентификации (см. примечание) |
| Статические файлы фронтенда | Без аутентификации |
Примечание: Эндпоинты чата намеренно не защищены для локальной разработки. Добавьте аутентификацию перед тем, как открывать доступ за пределами localhost.
Требования
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-клиентами
При включенном Auth0 клиенты должны получить токен доступа OAuth2. Сервер поддерживает динамическую регистрацию клиентов RFC 7591 по адресу /register, поэтому MCP-клиенты, реализующие спецификацию аутентификации, будут регистрироваться автоматически.
Пример .cursor/mcp.json для режима HTTP:
{
"mcpServers": {
"test-http-mcp": {
"type": "http",
"url": "http://localhost:8000/mcp/"
}
}
}Использование с Gemini:
{
"mcpServers": {
"test": {
"httpUrl": "http://localhost:8000/mcp/",
"timeout": 5000
}
}
}Пример записи .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)— поиск перечислений общих платформ (CPE) через NVDsearch_cve(cpe_name)— поиск общих уязвимостей и рисков (CVE) для заданного 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Примечания по реализации
Корневое приложение ASGI — это защищенное Auth0 MCP-приложение, созданное с помощью
auth_mcp, которое монтирует подприложение FastAPI по адресу/api.MCP-эндпоинт
/mcp/требует действительный токен Auth0 Bearer с соответствующими областями видимости инструментов.Динамическая регистрация клиентов по адресу
/registerпроксирует запросы к предварительно созданному приложению Auth0, обновляя его разрешенные URL-адреса обратного вызова. URI перенаправления проверяются (требуется HTTPS; HTTP разрешен только для localhost).Чат-интерфейс использует
pydantic-aiс агентом Ollama, который может вызывать инструменты MCP для поиска уязвимостей.История чата сохраняется в локальной базе данных SQLite через
agen_memory.py.Фронтенд на React передает ответы в виде JSON, разделенного символами новой строки, и отображает Markdown с помощью библиотеки
marked.В продакшене бэкенд обслуживает собранный фронтенд из
frontend/dist/с резервной маршрутизацией SPA (защищено от обхода путей).В режиме разработки Vite проксирует запросы
/api/*на бэкенд на порт 8000.
Лицензия
MIT — см. LICENSE.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA minimal Model Context Protocol server demo that exposes tools through HTTP API, including greeting, weather lookup, and HTTP request capabilities. Demonstrates MCP server implementation with stdio communication and HTTP gateway functionality.8ISC
- FlicenseBqualityDmaintenanceA demonstration server showcasing MCP capabilities with basic tools including addition calculations and weather API integration for fetching city weather data.22
- FlicenseNot gradedqualityCmaintenanceA basic MCP server for testing with echo, datetime, and calculator tools.88
- AlicenseAqualityCmaintenanceA minimal MCP server example demonstrating Tools, Resources, and Prompts. It enables calculations, time queries, note management, and code review prompts via stdio transport.310MIT
Related MCP Connectors
MCP server exposing the Backtest360 engine API as tools for AI agents.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
MCP server for generating rough-draft project plans from natural-language prompts.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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