Skip to main content

Add to Cursor Add to VS Code Add to Claude Add to ChatGPT Add to Codex Add to Gemini

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 sync

Using 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 transport

Database Setup

  1. Using Docker Compose (Recommended):

    docker-compose up -d postgres
    
  2. Manual PostgreSQL Setup:

    • Install PostgreSQL
    • Create a database
    • Update .env with 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.py

HTTP Mode

Set MCP_TRANSPORT=http in your .env file:

# Using uv
uv run python main.py

# Using pip
python main.py

The 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 appointment
  • identification_number (string): Identification number (ID card, passport, etc.)
  • phone (string): Phone number
  • date (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 pytest

Database 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

  1. Define new MCP tools in main.py
  2. Update database models if needed
  3. Create Alembic migrations for schema changes
  4. Update this README

๐Ÿค Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests if applicable
  5. Submit a pull request

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ†˜ Troubleshooting

Common Issues

  1. Database Connection Error

    • Check your .env file configuration
    • Ensure PostgreSQL is running
    • Verify database credentials
  2. Migration Errors

    • Run alembic current to check migration status
    • Run alembic upgrade head to apply pending migrations
  3. 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

๐Ÿ“Š Version History

  • v1.0.0: Initial release with basic appointment scheduling functionality
  • Database integration with PostgreSQL
  • Docker containerization
  • MCP protocol support (stdio and HTTP)

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

backend_mcp_fastmcp-0.1.1.tar.gz (5.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

backend_mcp_fastmcp-0.1.1-py3-none-any.whl (5.7 kB view details)

Uploaded Python 3

File details

Details for the file backend_mcp_fastmcp-0.1.1.tar.gz.

File metadata

  • Download URL: backend_mcp_fastmcp-0.1.1.tar.gz
  • Upload date:
  • Size: 5.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.22

File hashes

Hashes for backend_mcp_fastmcp-0.1.1.tar.gz
Algorithm Hash digest
SHA256 9ce6f398a286b4783f2432ca7fe2a4f04ed08fba53eff69f6ac622d890a53951
MD5 a5b2dbf252fd84d7c04a26ef35611907
BLAKE2b-256 a93bc508586364a07d59a6be56d7bb3fc6ad07522198830bdec8371e3de9b346

See more details on using hashes here.

File details

Details for the file backend_mcp_fastmcp-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for backend_mcp_fastmcp-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 85ba0475f6d6d718c6b398cd801bca28c43eb1a4c3b492f664666080e118fe21
MD5 10e2a487b267395a30797469fdce94e2
BLAKE2b-256 4de52e444085916472a2bdd5f3b45a8243f5ee864e5139f213718ccd14eb1f71

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page