A

Appointment Scheduler MCP Server

Enables scheduling and managing appointments through a PostgreSQL database, allowing users to create...

34 views
1 installs
Updated Feb 15, 2026
Not audited
Tools I Recommend
Enables scheduling and managing appointments through a PostgreSQL database, allowing users to create appointments with name, identification, phone number, and date information via natural language interactions.
  1. Create a working .env file

    • In the project root, copy the template: cp .env.example .env
    • You will edit .env with the values gathered in the next steps.
  2. Decide where PostgreSQL will run

    • Local: you will use localhost and the default port 5432.
    • Docker compose: open docker-compose.yml and locate the postgres service to read POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB (or set them if missing), then run docker-compose up -d postgres.
    • Managed DB (Railway, Heroku, AWS RDS, ElephantSQL, etc.): open the provider dashboard and copy the host, port, database name, username and password.
  3. (Local/manual) Create the database and DB user (if needed)

    • Open psql as a superuser and run:
      CREATE USER your_username WITH PASSWORD 'your_password';
      CREATE DATABASE your_database OWNER your_username;
      GRANT ALL PRIVILEGES ON DATABASE your_database TO your_username;
      
    • Use values you choose for DB_NAME, DB_USER, DB_PASSWORD.
  4. Collect the environment values you must supply

    • DB_HOST — hostname or IP of the Postgres server (e.g., localhost or db.example.com)
    • DB_PORT — Postgres port (default 5432)
    • DB_NAME — database name (e.g., appointment_db)
    • DB_USER — database username
    • DB_PASSWORD — database password
    • DATABASE_URL — full connection string (see next step)
    • MCP_TRANSPORT — either stdio (default for MCP clients) or http
    • MCP_HOST — only used when MCP_TRANSPORT=http (default 0.0.0.0)
    • MCP_PORT — only used when MCP_TRANSPORT=http (default 8000)
  5. Construct the DATABASE_URL

    • Format:
      postgresql://${DB_USER}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/${DB_NAME}
      
    • If your password (or user) contains special characters (e.g., @, :), URL-encode them. Example encoded password: p@ssw0rd!p%40ssw0rd%21
    • Example:
      DATABASE_URL=postgresql://myuser:my%40pass@db.example.com:5432/appointments
      
  6. Fill in the .env file

    • Open .env and set each key:
      • DB_HOST=...
      • DB_PORT=...
      • DB_NAME=...
      • DB_USER=...
      • DB_PASSWORD=...
      • DATABASE_URL=postgresql://...
      • MCP_TRANSPORT=stdio # or http
      • MCP_HOST=0.0.0.0 # if using http
      • MCP_PORT=8000 # if using http
  7. Enter values into the FastMCP connection interface (use the “Install Now” button)

    • Open the FastMCP connection UI for this MCP.
    • Click the ready-made "Install Now" button.
    • In the FastMCP connection fields, paste the values from your .env:
      • DB_HOST → DB_HOST
      • DB_PORT → DB_PORT
      • DB_NAME → DB_NAME
      • DB_USER → DB_USER
      • DB_PASSWORD → DB_PASSWORD
      • DATABASE_URL → DATABASE_URL
      • MCP_TRANSPORT → MCP_TRANSPORT
      • MCP_HOST → MCP_HOST (if MCP_TRANSPORT=http)
      • MCP_PORT → MCP_PORT (if MCP_TRANSPORT=http)
    • Save/Confirm the installation in the FastMCP UI.
  8. Validate the configuration

    • From the project root, run migrations to ensure DB connection works:
      • Using uv: uv run alembic upgrade head
      • Using pip/alembic: alembic upgrade head
    • Start the server to confirm MCP starts successfully:
      • uv run python main.py or python main.py (depending on install method)
    • If using HTTP transport, open http://<MCP_HOST>:<MCP_PORT> to confirm.
  9. Troubleshooting tips

    • If you used Docker Compose, re-check docker-compose.yml for POSTGRES_* env values.
    • For managed providers, use the connection string they provide and convert it into the DATABASE_URL format if necessary.
    • If you get authentication errors, ensure the DATABASE_URL password is URL-encoded when it contains special characters.
  10. (Optional) Keep secrets secure

    • Do not commit .env to git. Add .env to .gitignore if not already ignored.
    • For production, consider storing DB credentials in your provider’s secret manager and pasting them into FastMCP's connection fields rather than saving them in repository files.

Quick Start

View on GitHub

More for Database

View All →

More for API Development

View All →

Report Issue

Thank you! Your issue report has been submitted successfully.