Skip to main content

Add your description here

Project description

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)

Project details


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.

Supported by

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