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.

Latest Blog Posts

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