A Model Context Protocol (MCP) server implementation with Docker support and a web-based inspector.
docker build -t rak-greet .docker run --rm -i rak-greet python client.pydocker run --rm -p 8000:8000 rak-greet python mcp_inspector_web.pyThen open your browser to: http://localhost:8000
mcpdocker-demo/
├── server.py # MCP server with hello-world tool
├── client.py # Simple test client
├── mcp_inspector_web.py # Web UI for testing
├── Dockerfile # Container configuration
└── requirements.txt # Python dependencies
- Implements a simple "hello-world" tool
- Accepts a greeting and returns it with " World!" appended
- Runs over stdio transport
- Includes debug logging
- Beautiful web interface for testing MCP servers
- Lists available tools
- Shows tool schemas
- Interactive testing with real-time results
- Built with FastAPI
- Command-line MCP client
- Connects to server via stdio
- Tests the hello-world tool
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Run server
python server.py
# In another terminal, run client
python client.pyuvicorn mcp_inspector_web:app --host 0.0.0.0 --port 8000 --reloadName: hello-world
Description: A simple tool that returns a greeting.
Input Schema:
{
"type": "object",
"properties": {
"greeting": {
"type": "string",
"description": "The greeting to return"
}
},
"required": ["greeting"]
}Example:
Input: {"greeting": "Hello"}
Output: "Hello World!"# Build image
docker build -t rak-greet .
# Run server
docker run --rm -i rak-greet python server.py
# Run client
docker run --rm -i rak-greet python client.py
# Run web inspector
docker run --rm -p 8000:8000 rak-greet python mcp_inspector_web.pyThis usually means the server failed to start. Check:
- Python version (should be 3.11+)
- All dependencies installed
- Server logs for errors
If port 8000 is busy:
docker run --rm -p 8001:8000 rak-greet python mcp_inspector_web.pyThen open: http://localhost:8001
Feel free to open issues or submit pull requests!
MIT License - feel free to use this code however you'd like!