Skip to main content
Glama

Model Context Protocol (MCP) Server

README.md3.52 kB
# Model Context Protocol (MCP) Python Implementation This project implements a functioning Model Context Protocol (MCP) server and client in Python, following the Anthropic MCP specification. It demonstrates the key patterns of the MCP protocol through a simple, interactive example. ## What is MCP? The Model Context Protocol (MCP) is an open standard built on JSON-RPC 2.0 for connecting AI models to external data sources and tools. It defines a client-server architecture where an AI application communicates with one or more MCP servers, each exposing capabilities such as: - **Tools**: Executable functions that perform actions - **Resources**: Data sources that provide information - **Prompts**: Predefined templates or workflows MCP standardizes how these capabilities are discovered and invoked, serving as a "USB-C for AI" that allows models to interact with external systems in a structured way. ## Project Structure - `server/`: MCP server implementation - `server.py`: WebSocket server that handles MCP requests and provides sample tools/resources - `client/`: MCP client implementation - `client.py`: Demo client that connects to the server and exercises all MCP capabilities ## Features Demonstrated This implementation showcases the core MCP protocol flow: 1. **Capability Negotiation**: Client-server handshake via `initialize` 2. **Capability Discovery**: Listing available tools and resources 3. **Tool Invocation**: Calling the `add_numbers` tool with parameters 4. **Resource Access**: Reading text content from a resource ## Setup 1. Create a virtual environment: ```bash python3 -m venv .venv source .venv/bin/activate ``` 2. Install dependencies: ```bash pip install -r requirements.txt ``` ## Usage 1. Start the MCP server (in one terminal): ```bash python server/server.py ``` 2. Run the MCP client (in another terminal): ```bash python client/client.py ``` The client will connect to the server, perform the MCP handshake, discover capabilities, and demonstrate invoking tools and accessing resources with formatted output. ## How It Works ### MCP Server The server: - Accepts WebSocket connections - Responds to JSON-RPC requests following the MCP specification - Provides a sample tool (`add_numbers`) - Provides a sample resource (`example.txt`) - Supports the MCP handshake and capability discovery ### MCP Client The client: - Connects to the server via WebSocket - Performs the MCP handshake - Discovers available tools and resources - Demonstrates calling a tool and reading a resource - Presents the results in a formatted display ## Protocol Details MCP implements these key methods: | Method | Description | |--------|-------------| | `initialize` | Handshake to establish capabilities | | `tools/list` | List available tools | | `tools/call` | Call a tool with arguments | | `resources/list` | List available resources | | `resources/read` | Read resource content | | `prompts/list` | List available prompts | ## Extending the Project You can extend this implementation by: - Adding more tools with different capabilities - Adding dynamic resources that change on each read - Implementing prompt templates for guided interactions - Creating more interactive client applications ## References - [Anthropic Model Context Protocol Spec](https://modelcontextprotocol.io/) - [JSON-RPC 2.0 Specification](https://www.jsonrpc.org/specification) - [WebSockets Protocol](https://datatracker.ietf.org/doc/html/rfc6455)

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/suspicious-cow/MCP2'

If you have feedback or need assistance with the MCP directory API, please join our Discord server