The Demo HTTP MCP Server provides tools for data fetching, request handling, and session tracking, plus advice generation capabilities.
• Get Weather: Retrieve current weather for any location with customizable temperature units (celsius default)
• Get Current Time: Obtain the current time in standardized format
• Access Request Context: Interact with request headers (e.g., Authorization) using a username parameter
• Track Tool Usage: View a list of all tools called during the current session
• Generate Advice: Get structured advice on topics with optional actionable steps
• Multiple Connectivity: Operates over HTTP (Starlette/Uvicorn) or stdio for broad MCP client compatibility
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.
Requirements
Python 3.13
uv(recommended) orpip
Install
Using uv (recommended):
Using pip (alternative):
Run (HTTP mode)
Starts a Starlette app and mounts the MCP server under /mcp on port 8000.
Example .cursor/mcp.json:
Usage with Gemini:
Run (stdio mode)
Use with Cursor or other MCP clients
Example .cursor/mcp.json entry to connect via stdio:
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 }(readsAuthorizationfrom 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_httprun-stdio→app.main:run_stdio
Development
Common tasks (using uv):
Implementation notes
The Starlette app is defined in
app/main.pyand mountshttp_mcp.server.MCPServerat/mcp.Tool inputs/outputs are validated with Pydantic v2 models; async tool functions receive a typed
ToolArgumentswithinputs,context, and (in HTTP mode)request.A simple
Contextkeeps track of called tool names during a session.
License
MIT — see LICENSE.