# MCP Demo This repository contains a demo implementation of a Model Context Protocol (MCP) server. The server is designed to manage organizations and devices, calculate distances between devices and their associated organizations, and provide a set of tools for interacting with the data. ## Features - **Database Integration**: Connects to a PostgreSQL database to manage organizations and devices. - **Distance Calculation**: Uses the Haversine formula to calculate distances between devices and their associated organizations. - **MCP Tools**: Provides tools to fetch organizations, devices, and calculate distances. ## Prerequisites - Python 3.12.5 - PostgreSQL database ## Setup 1. Clone the repository: ```bash git clone cd mcp-demo ``` 2. Set up a virtual environment: ```bash uv venv source .venv/bin/activate ``` 3. Configure the environment variables in a `.env` file: ```env DB_NAME=mcp DB_USER=mcp_user DB_PASSWORD=pa$$word DB_HOST=localhost DB_PORT=5432 ``` 4. Set up the database: ```bash psql -U -d -f tables.sql ``` ## Usage 1. Run the MCP server: ```bash uv run main.py ``` 2. Use the provided tools to interact with the server: - `get_organizations`: Fetch all organizations from the database. - `get_devices`: Fetch all devices from the database. - `get_devices_by_organization`: Fetch devices for a specific organization. - `list_devices_with_distance`: List devices and their distances from their associated organizations. ## Project Structure - `main.py`: Main entry point for the MCP server. - `tables.sql`: SQL script to set up the database schema and seed data. - `.env`: Environment variables for database configuration. - `pyproject.toml`: Project metadata and dependencies. ## Dependencies - `httpx`: HTTP client for Python. - `mcp[cli]`: MCP framework for building servers. - `psycopg2`: PostgreSQL database adapter for Python. ## Claude Desktop MCP Server Configuration To configure Claude Desktop for this MCP server project, follow these steps: 1. Install Claude Desktop on your machine from the official website. 2. Open Claude Desktop and navigate to the settings menu. 3. Add a new project configuration for the MCP server: ```bash code ~/Library/Application\ Support/Claude/claude_desktop_config.json ``` 4. Add the mcp servers ```json { "mcpServers": { "devices": { "command": "uv", "args": [ "--directory", "/path/to/mcp-demo", "run", "main.py" ], "env": { "DB_NAME": "mcp", "DB_USER": "mcp_user", "DB_PASSWORD": "pa$$word", "DB_HOST": "localhost", "DB_PORT": "5432" } } } } ``` 5. Run query, for example: `List the devices in DB and show me how far are they from their organization address. Also, add get the mac addresses of the devices.`