Skip to main content
Glama
yeison-liscano

Demo HTTP MCP Server

test-http-mcp

http-mcpパッケージを使用してPythonで実装されたデモ用Model Context Protocol (MCP) サーバーです。HTTP (Starlette/Uvicorn) またはstdio経由で実行でき、MCP対応クライアントに対してサンプルツールやプロンプトを公開します。このプロジェクトには、NVD (National Vulnerability Database) を通じて脆弱性を照会するためのチャットインターフェースを提供するReactフロントエンドが含まれています。

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クライアントでの使用

HTTPモード用の .cursor/mcp.json の例:

{
  "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"
      }
    }
  }
}

stdio経由で接続するための .cursor/mcp.json エントリの例:

{
  "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) — NVD経由でCommon Platform Enumerationsを検索

    • search_cve(cpe_name) — 指定されたCPEのCommon Vulnerabilities and Exposuresを検索

  • プロンプト ( backend/app/prompts/ を参照):

    • sync_nvd_search(dependency, version) — シンプルな脆弱性検索プロンプト

    • async_nvd_search(dependency, version) — 事前に取得したCVEデータを使用した高度なプロンプト

プロジェクトスクリプト

backend/pyproject.toml に2つのコンソールエントリーポイントが定義されています:

  • 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 で定義されており、/mcphttp_mcp.server.MCPServer をマウントしています。

  • チャットインターフェースは、MCPツールを呼び出して脆弱性を検索できるGeminiエージェントを備えた pydantic-ai を使用しています。

  • チャット履歴は agen_memory.py を介してローカルのSQLiteデータベースに永続化されます。

  • Reactフロントエンドは、改行区切りのJSONとしてレスポンスをストリーミングし、 marked ライブラリを使用してマークダウンをレンダリングします。

  • 本番環境では、バックエンドはSPAフォールバックルーティングを使用して frontend/dist/ からビルド済みフロントエンドを配信します。

  • 開発環境では、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