MCP Project
Checkpoint #1: FastAPI + PostgreSQL Setup
This repository marks the first checkpoint of my MCP project. The goal was to get a basic FastAPI app running with a PostgreSQL database, containerized with Docker, and ready to expose through the Model Context Protocol (MCP).
What I accomplished
- Environment setup
- Installed and configured WSL on Windows.
- Installed Docker and Docker Compose.
- Created a Python virtual environment to manage dependencies.
- Backend with FastAPI
- Built a simple API with the following endpoints:
POST /create_appointment
→ create a new appointmentGET /list_appointments
→ list all appointmentsPUT /update_appointment/{id}
→ update an existing appointmentDELETE /delete_appointment/{id}
→ delete an appointment
- Defined the
Appointment
model in SQLAlchemy.
- Built a simple API with the following endpoints:
- Database with PostgreSQL
- Set up a Postgres container with Docker Compose.
- Connected FastAPI to the database and verified table creation.
- Tested inserts and queries through both the API and
psql
.
- MCP integration
- Installed and configured
mcp-openapi-proxy
. - Exposed the API endpoints so they can be used as tools through Claude.
- Installed and configured
- Version control
- Initialized the Git repository.
- Configured Git username/email and SSH key.
- Made the first commit as a checkpoint.
Current status
- API runs locally on
http://localhost:8000
- Database connected and working through Docker
- MCP server loads the API schema correctly
- Repo initialized and linked to GitHub
Next steps
- Improve date formatting (e.g.
18/9/2025 - 8:55pm
instead of ISO strings). - Add automated tests with
pytest
. - Create a simple frontend to interact with the API.
- Keep expanding the Claude integration through MCP.
✍️ Checkpoint #1 complete.
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Enables users to manage appointments through a FastAPI backend with PostgreSQL database. Supports creating, listing, updating, and deleting appointments via natural language interactions through Claude.