🚀 Simple MCP Demo
A comprehensive demonstration of a Model Context Protocol (MCP) server implemented in Python. This project showcases how to build a unified server that supports multiple transport mechanisms: Standard I/O (stdio), Server-Sent Events (SSE), and Streamable HTTP.
🛠️ Features
- Multi-Transport Server: One server, three ways to connect.
add_numbersTool: A functional example of a tool discovery and execution flow.- Reference Clients: Dedicated Python scripts for each transport type.
- Inspector Ready: Fully compatible with the official MCP Inspector.
📂 Project Structure
server.py: The core MCP server containing tool logic and transport routing.client_stdio.py: Client for local subprocess communication (pipes).client_sse.py: Client for web-based event streaming.client_http.py: Client for stateful session-based HTTP streaming.DOCUMENTATION.md: Detailed functional and technical specifications.requirements.txt: Project dependencies.
🚀 Getting Started
1. Installation
Clone the repo and install the required packages:
pip install -r requirements.txt
2. Run with MCP Inspector (Recommended)
The easiest way to test the server is using the official tool inspector:
npx @modelcontextprotocol/inspector python server.py
3. Run Reference Clients
Standard I/O (stdio)
python client_stdio.py
Server-Sent Events (SSE)
Terminal 1 (Start Server):
python server.py --transport sse
Terminal 2 (Run Client):
python client_sse.py
Streamable HTTP
Terminal 1 (Start Server):
python server.py --transport http
Terminal 2 (Run Client):
python client_http.py
📈 Protocol Flow
- Initialize: Client and Server exchange capabilities.
- List Tools: Client discovers the
add_numberstool. - Call Tool: Client sends parameters (
a,b) and receives the sum.
📝 Technical Details
For a deeper dive into the architecture, flow diagrams, and transport implementation details, see DOCUMENTATION.md.
Built with ❤️ using the Model Context Protocol