Skip to main content
Glama
README.mdโ€ข4.85 kB
# ๐Ÿฅ Hospital MCP Server Secure PostgreSQL Access via Model Context Protocol (MCP) **Claude Desktop acts as the MCP client** This project implements a secure **Model Context Protocol (MCP)** server that connects to a PostgreSQL-based Hospital Management System. Claude Desktop communicates with this server and can safely query hospital data through defined, read-only MCP tools. --- # ๐Ÿ“ Project Structure ``` MY-FIRST-MCP-SERVER/ โ”‚ โ”œโ”€โ”€ .venv/ # Virtual environment โ”œโ”€โ”€ .env # Environment variables (DB credentials) โ”œโ”€โ”€ .gitignore โ”œโ”€โ”€ .python-version โ”œโ”€โ”€ main.py # MCP server implementation โ”œโ”€โ”€ pyproject.toml # Project dependencies (uv/poetry/pdm) โ”œโ”€โ”€ README.md # This documentation โ””โ”€โ”€ uv.lock # Dependency lockfile ```` --- # ๐Ÿ—„๏ธ 1. PostgreSQL Setup You must create **secure read-only views** before exposing data to Claude. ### Create Views (Safe, non-sensitive) ```sql CREATE VIEW doctors_view AS SELECT doctor_id, department_id, specialization FROM Doctors; CREATE VIEW departments_view AS SELECT department_id, name, head_doctor_id FROM Departments; CREATE VIEW public_appointments_view AS SELECT appointment_id, patient_id, doctor_id, appointment_date FROM Appointments; CREATE VIEW rooms_view AS SELECT room_id, room_number, current_status FROM Rooms; CREATE VIEW billing_summary_view AS SELECT bill_id, patient_id, appointment_id, admission_id, total_amount FROM Billing; ```` --- # ๐Ÿ” 2. Create Restricted DB Role ```sql CREATE ROLE mcp_readonly LOGIN PASSWORD 'your_password'; GRANT SELECT ON doctors_view TO mcp_readonly; GRANT SELECT ON departments_view TO mcp_readonly; GRANT SELECT ON public_appointments_view TO mcp_readonly; GRANT SELECT ON rooms_view TO mcp_readonly; GRANT SELECT ON billing_summary_view TO mcp_readonly; REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM mcp_readonly; ALTER ROLE mcp_readonly SET statement_timeout = '3s'; ALTER ROLE mcp_readonly SET idle_in_transaction_session_timeout = '2s'; ``` Only the views are exposed โ€” raw PHI tables are protected. --- # โš™๏ธ 3. Environment Variables (`.env`) Your MCP server reads DB credentials from here: ``` DB_HOST=localhost DB_PORT=5432 DB_NAME=hospital_db DB_USER=mcp_readonly DB_PASSWORD=your_password ``` --- # ๐Ÿง  4. MCP Server (`main.py`) `main.py` runs your MCP server and exposes tools such as: * `get_doctor_by_id` * `list_doctors_by_department` * `get_appointments_for_doctor` * `check_room_status` * `get_patient_billing_summary` All SQL queries are: โœ” parameterized โœ” read-only โœ” safely constrained --- # ๐Ÿ”Œ 5. Installing Dependencies Inside your project folder: ```bash uv sync ``` Or if using pip manually: ```bash pip install -r requirements.txt ``` (Dependencies are defined in `pyproject.toml`) --- # ๐Ÿค 6. Connecting MCP Server to Claude Desktop Claude Desktop automatically detects MCP servers placed in its extensions directory. ### `In your local file system "C:\Users\shesh\AppData\Roaming\Claude\claude_desktop_config.json" edit this file with your configurations` ```json { "mcpServers": { "postgres": { "command": "C:\\Users\\shesh\\my-first-mcp-server\\.venv\\Scripts\\python.exe", "args": [ "C:\\Users\\shesh\\my-first-mcp-server\\main.py", "stdio" ], "cwd": "C:\\Users\\shesh\\my-first-mcp-server", "env": { "DB_HOST": "localhost", "DB_PORT": "5432", "DB_NAME": "db_name", "DB_USER": "postgres", "DB_PASSWORD": "your_password" } } } } ``` --- ### ๐Ÿ“ **Step 3 โ€” Restart Claude Desktop** Go to: **Claude Desktop โ†’ Settings โ†’ Developer** You should see: ``` hospital-mcp (running) ``` Claude will now: 1. Launch your `main.py` MCP server 2. Discover available tools 3. Call them automatically during conversation --- # ๐Ÿงช 7. Testing Inside Claude In Claude Desktop you can ask: ``` Get the list of doctors in the cardiology department. ``` Claude will call: ``` list_doctors_by_department(department_id=1) ``` Or: ``` Show me appointments for doctor 3. ``` Claude โ†’ calls your MCP tool โ†’ your DB โ†’ safe output returned. --- # ๐ŸŽฏ Summary You now have: โœ” A working **Python MCP server** โœ” Secure **PostgreSQL integration** โœ” Fully wired **Claude Desktop tool access** โœ” Safe read-only hospital data views โœ” Clean project structure Claude Desktop communicates with your DB **only through your safe MCP tools**, never accessing raw tables directly.

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/SheshuGit/MCP_Postgres'

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