Provides appointment scheduling functionality with PostgreSQL database storage, enabling creation and management of appointments with validation for names, identification numbers, phone numbers, and dates.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Appointment Scheduler MCP Serverschedule an appointment for John Smith on December 25th at 2:30 PM"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Appointment Scheduler MCP Server
A Model Context Protocol (MCP) server that connects to a PostgreSQL database to manage appointment scheduling. Built with FastMCP, SQLAlchemy, and Alembic for database migrations.
π Features
Database Integration: PostgreSQL database with SQLAlchemy ORM
MCP Protocol: Supports both stdio and HTTP transport modes
Database Migrations: Alembic for schema management and migrations
Appointment Management: Schedule appointments with validation
Docker Support: Containerized deployment with Docker Compose
Environment Configuration: Secure credential management with .env files
π Prerequisites
Python 3.13+
PostgreSQL database
uv package manager (recommended) or pip
π οΈ Installation
Using uv (Recommended)
# Clone the repository
git clone https://github.com/Juan-Andres-Motta/backend-mcp.git
cd backend-mcp
# Install dependencies
uv syncUsing pip
# Clone the repository
git clone https://github.com/Juan-Andres-Motta/backend-mcp.git
cd backend-mcp
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install dependencies
pip install -r requirements.txtβοΈ Configuration
Environment Variables
Create a .env file in the project root:
# Database Configuration
DB_HOST=localhost
DB_PORT=5432
DB_NAME=your_database_name
DB_USER=your_username
DB_PASSWORD=your_password
# Database URL (constructed from above)
DATABASE_URL=postgresql://${DB_USER}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/${DB_NAME}
# MCP Server Configuration
MCP_TRANSPORT=stdio # Options: stdio, http
MCP_HOST=0.0.0.0 # Only used for HTTP transport
MCP_PORT=8000 # Only used for HTTP transportDatabase Setup
Using Docker Compose (Recommended):
docker-compose up -d postgresManual PostgreSQL Setup:
Install PostgreSQL
Create a database
Update
.envwith your database credentials
Database Migrations
Run database migrations to create the appointments table:
# Using uv
uv run alembic upgrade head
# Using pip
alembic upgrade headπ Running the Server
Development Mode (stdio)
# Using uv
uv run python main.py
# Using pip
python main.pyHTTP Mode
Set MCP_TRANSPORT=http in your .env file:
# Using uv
uv run python main.py
# Using pip
python main.pyThe server will be available at http://localhost:8000
Docker Deployment
# Build and run with Docker Compose
docker-compose up --build
# Run only the MCP server (requires external PostgreSQL)
docker build -t appointment-mcp .
docker run --env-file .env appointment-mcpπ API Usage
MCP Tool: schedule_appointment
Schedules a new appointment in the database.
Parameters:
name(string): Full name of the person scheduling the appointmentidentification_number(string): Identification number (ID card, passport, etc.)phone(string): Phone numberdate(string): Appointment date and time in ISO format (YYYY-MM-DDTHH:MM:SS)
Example:
{
"name": "John Doe",
"identification_number": "123456789",
"phone": "+1234567890",
"date": "2024-12-25T14:30:00"
}Response:
{
"result": "Success: Appointment scheduled for John Doe on 2024-12-25 14:30:00 (ID: 1)"
}ποΈ Project Structure
backend-mcp/
βββ main.py # Main MCP server application
βββ pyproject.toml # Project dependencies and configuration
βββ uv.lock # uv lock file
βββ alembic/ # Database migration files
β βββ env.py
β βββ script.py.mako
β βββ versions/
βββ .env # Environment variables (create this)
βββ .env.example # Environment variables template
βββ Dockerfile # Docker container configuration
βββ docker-compose.yml # Docker Compose configuration
βββ .dockerignore # Docker ignore file
βββ .gitignore # Git ignore file
βββ README.md # This fileπ§ Development
Running Tests
# Install development dependencies
uv sync --dev
# Run tests
uv run pytestDatabase Schema
The appointments table structure:
CREATE TABLE appointments (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
identification_number VARCHAR(50) NOT NULL,
phone VARCHAR(20) NOT NULL,
date TIMESTAMP NOT NULL
);Adding New Features
Define new MCP tools in
main.pyUpdate database models if needed
Create Alembic migrations for schema changes
Update this README
π€ Contributing
Fork the repository
Create a feature branch
Make your changes
Add tests if applicable
Submit a pull request
π License
This project is licensed under the MIT License - see the LICENSE file for details.
π Troubleshooting
Common Issues
Database Connection Error
Check your
.envfile configurationEnsure PostgreSQL is running
Verify database credentials
Migration Errors
Run
alembic currentto check migration statusRun
alembic upgrade headto apply pending migrations
MCP Transport Issues
For stdio mode: Ensure the MCP client supports stdio transport
For HTTP mode: Check that the port is not in use
Getting Help
Check the FastMCP documentation
Review SQLAlchemy documentation
Check Alembic documentation
π Version History
v1.0.0: Initial release with basic appointment scheduling functionality
Database integration with PostgreSQL
Docker containerization
MCP protocol support (stdio and HTTP)