This repository contains an implementation of a Model Context Protocol (MCP) server. This code demonstrates how to build a functional MCP server that can integrate with various LLM clients.
MCP (Model Context Protocol) is an open protocol that standardizes how applications provide context to LLMs. Think of MCP like a USB-C port for AI applications - it provides a standardized way to connect AI models to different data sources and tools.
- A growing list of pre-built integrations that your LLM can directly plug into
- Flexibility to switch between LLM providers and vendors
- Best practices for securing your data within your infrastructure
MCP follows a client-server architecture where a host application can connect to multiple servers:
- MCP Hosts: Programs like Claude Desktop, IDEs, or AI tools that want to access data through MCP
- MCP Clients: Protocol clients that maintain 1:1 connections with servers
- MCP Servers: Lightweight programs that expose specific capabilities through the standardized Model Context Protocol
- Data Sources: Both local (files, databases) and remote services (APIs) that MCP servers can access
MCP servers can provide three main types of capabilities:
- Resources: File-like data that can be read by clients (like API responses or file contents)
- Tools: Functions that can be called by the LLM (with user approval)
- Prompts: Pre-written templates that help users accomplish specific tasks
- Python 3.10 or higher
- MCP SDK 1.2.0 or higher
uvpackage manager
- On MacOS/Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh - Windows:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" set Path=C:\Users\Codem\.local\bin;%Path%
Make sure to restart your terminal afterwards to ensure that the uv command gets picked up.
- Create and initialize the project:
# Create a new directory for our project
uv init mcp-server
cd mcp-server
# Create virtual environment and activate it
uv venv
source .venv/bin/activate # On Windows use: .venv\Scripts\activate- Install dependencies:
uv add "mcp[cli]" httpx bs4- Start the MCP server:
mcp dev main.py- The server will start and be ready to accept connections
- Install Claude Desktop from the official website
- Configure Claude Desktop to use your MCP server:
Edit
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"mcp-server": {
"command": "uv", # It's better to use the absolute path to the uv command
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/YOUR/mcp-server",
"run",
"main.py"
]
}
}
}- Restart Claude Desktop
If your server isn't being picked up by Claude Desktop:
- Check the configuration file path and permissions
- Verify the absolute path in the configuration is correct
- Ensure uv is properly installed and accessible
- Check Claude Desktop logs for any error messages
