Skip to main content
Glama
skywall34

Trip Tracker MCP Server

by skywall34
README.md
# Trip Tracker MCP Server

A Model Context Protocol (MCP) server that provides access to a trip tracking SQLite database. This server enables AI assistants to query and manage flight trip information including users, airports, and flight details.

## Description

This MCP server exposes a SQLite database for the trip-tracker application through a set of tools and resources. It provides structured access to:

- **Users**: User account information and profiles
- **Trips**: Flight records including departure/arrival airports, times, airline info, flight numbers, reservations, terminals, and gates
- **Airports**: Airport data with IATA codes, names, cities, countries, and geographic coordinates

The server uses FastMCP and SQLAlchemy for async database operations, with input sanitization for security.

## Features

### Tools

**Trip Management:**
- `get_trip` - Get detailed trip information by ID
- `list_trips` - List trips with optional filtering by user, departure/arrival airports, or airline
- `get_user_trips` - Get all trips for a specific user
- `search_trips_by_route` - Search trips by departure and arrival airports

**User Management:**
- `get_user` - Get user information by ID
- `list_users` - List all users with pagination
- `search_users` - Search users by email or name

**Airport Information:**
- `get_airport` - Get airport details by IATA code
- `list_airports` - List all airports with pagination
- `search_airports` - Search airports by name, city, or country

### Resources

- `trip://{trip_id}` - Access trip information as a resource

## Installation

Ensure you have Python 3.11 or higher installed.

Install dependencies using uv:

```bash
uv sync
```

Or using pip:

```bash
pip install -r requirements.txt
```

## Configuration

The server connects to a SQLite database.

You can override this location by setting the `TRIP_TRACKER_DB` environment variable:

```bash
export TRIP_TRACKER_DB=/path/to/your/database.db
```

## Running the Server

### Using Python directly

```bash
python main.py
```

### Using uv

```bash
uv run main.py
```

The server will:
1. Initialize the database (create tables if they don't exist)
2. Start the HTTP server on `http://127.0.0.1:9000`

## MCP Client Configuration

To use this server with an MCP client (like Claude Desktop), add it to your MCP settings:

```json
{
  "mcpServers": {
    "trip-tracker": {
      "command": "uv",
      "args": [
        "--directory",
        "/home/user/trip-tracker-mcp",
        "run",
        "main.py"
      ],
      "env": {
        "TRIP_TRACKER_DB": "/path/to/your/database.db"
      }
    }
  }
}
```

Or using Python directly:

```json
{
  "mcpServers": {
    "trip-tracker": {
      "command": "python",
      "args": ["/home/user/trip-tracker-mcp/main.py"],
      "env": {
        "TRIP_TRACKER_DB": "/path/to/your/database.db"
      }
    }
  }
}
```