Skip to main content
Glama

Demo HTTP MCP Server

README.md2.96 kB
## test-http-mcp Demo Model Context Protocol (MCP) server implemented in Python using the `http-mcp` package. It can run over HTTP (Starlette/Uvicorn) or over stdio, exposing example Tools and Prompts to any MCP-capable client. <a href="https://glama.ai/mcp/servers/@yeison-liscano/demo_http_mcp"> <img width="380" height="200" src="https://glama.ai/mcp/servers/@yeison-liscano/demo_http_mcp/badge" alt="Demo HTTP Server MCP server" /> </a> ### Requirements - Python 3.13 - `uv` (recommended) or `pip` ### Install Using `uv` (recommended): ```bash uv run python -V # will create a venv and sync deps from pyproject ``` Using `pip` (alternative): ```bash python3.13 -m venv .venv source .venv/bin/activate pip install . ``` ### Run (HTTP mode) Starts a Starlette app and mounts the MCP server under `/mcp` on port 8000. ```bash uv run run-app # → http://localhost:8000/mcp ``` Example `.cursor/mcp.json`: ```json { "mcpServers": { "test-http-mcp": { "type": "http", "url": "http://localhost:8000/mcp/", "headers": { "Authorization": "Bearer $TEST_TOKEN" } } } } ``` Usage with `Gemini`: ```json { "mcpServers": { "test": { "httpUrl": "http://localhost:8000/mcp/", "timeout": 5000, "headers": { "Authorization": "Bearer TEST_TOKEN" } } } } ``` ### Run (stdio mode) ### Use with Cursor or other MCP clients Example `.cursor/mcp.json` entry to connect via stdio: ```json { "mcpServers": { "test_studio": { "command": "uv", "args": ["run", "run-stdio"], "env": { "AUTHORIZATION_TOKEN": "Bearer TEST_TOKEN" } } } } ``` ### What this server exposes - Tools (see `app/tools.py`): - `get_weather(location: str, unit: str = "celsius") -> { weather: str }` - `get_time() -> { time: str }` - `tool_that_access_request(username: str) -> { message: str }` (reads `Authorization` from the incoming request headers) - `get_called_tools() -> { called_tools: string[] }` - Prompts (see `app/prompts.py`): - `get_advice(topic: str, include_actionable_steps: bool = false)` → returns a single user message template ### Project scripts Two console entry points are defined in `pyproject.toml`: - `run-app` → `app.main:run_http` - `run-stdio` → `app.main:run_stdio` ### Development Common tasks (using `uv`): ```bash uv run ruff check . # lint uv run mypy . # type check uv run pytest # tests uv run mdformat . # format markdown ``` ### Implementation notes - The Starlette app is defined in `app/main.py` and mounts `http_mcp.server.MCPServer` at `/mcp`. - Tool inputs/outputs are validated with Pydantic v2 models; async tool functions receive a typed `ToolArguments` with `inputs`, `context`, and (in HTTP mode) `request`. - A simple `Context` keeps track of called tool names during a session. ### License MIT — see `LICENSE`.

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