The Flight Thing

TripDesk Flights — Help


1 Introduction

TripDesk Flights a flight and trip tracking application for all aviation enthusiasts:

  • Manage all your flights and trips, track operational data
  • Update your flight data from live sources with the latest changes
  • Display comprehensive statistics
  • Integrate with AI tools like Claude Desktop via MCP (Model Context Protocol)
  • Freedom of data, export and backup your data at any time with no restrictions in a machine readable format
  • Import data - predefined from formats like openflights,org, flightmemory.com, flugstatistik.de, flighty.app or
  • Import data - customizable from any other structured format
  • Benefit from a secure environment based on European GDPR, data hosted in Switzerland and application run in Germany

2 First Steps

2.1 Create Account

Register an account under https://flights.tripdesk.app/auth/register. The used email address must be valid and will be validated during the sign on process. However, there will be a transition period of one week to confirm the address.

Create user

If the chosen password does not meet the our standards, a hint will be displayed.

Password
It is recommended to use the Generated Secure Password function for generation a secure initial password.

With the end of the sign on process you will receive an email.

Check your email

You now already able to sign in to your account.

Sign inl

Do not forget to confirm the link within the email.

Verification email

If you do not confirm the link in the email, a red warning message is being displayed. You can resend the confirmation email from there.

Resend banner

Transition Period
In the case you do not confirm the email address, the account will be deleted after one week. You will receive further notifications within this period.

2.2 Set Profile

Start with setting your personal information, like home airport, user name (display name), and your profile photo.

Set your airport by setting its IATA code. Home airport

Choose a personal user name. Display name

Save these settings. Updated profile

2.3 Legacy Data Import

See Section 5.2 how to import your legacy data.

2.4 Login & Sessions

Security Note
TripDesk Flights uses industry-standard security practices including encrypted sessions,and secure cookie handling.

2.4.1 Login Options

  • Email & Password: Standard authentication
  • Remember Me: Extends session duration (configurable)
  • Session Management: View and manage active sessions

2.4.2 Session Security

  • Sessions are tied to your device and browser
  • IP address tracking for security monitoring
  • Automatic logout after inactivity
  • Manual session revocation available

2.4.3 Session Details

  • Device Information: Browser, operating system, device type
  • Location Data: IP address and approximate location
  • Activity Tracking: Last activity timestamp
  • Session Status: Online, away, or offline indicators

3 Trips and Flights

The data is organized by trips and flights (flight segments). Trips are optional.

3.1 Trips

Trips are a bracket around one or more flight segments. A trip is defined by a time frame. All flights, that are within this time window will be assigned to this trip. The flight list, flights that are assigned to a trip have a yellow bar with the trip name on the lefthand side.

Edit Trip

The route of that trip is displayed on a map.

Please note, if you have duplicate routes, only one is displayed (e.g. for the two flights SIN-PVG-DPS and DPS-PVG-SIN, only the first two legs are shown with numbers on the map).

Trip with route

3.2 Flights

The flights page lists all your flight segment. You can sort the list or filter for certain values.

Flights filter

Click on one line to open the flight edit window.

3.3 Flight Data

All flight details are editited in the flight edit window.

Flights filter

Click on the button in the upper righthand side to toggle the map display.

Flights filter

3.4 Live Update

The button "Update from Live Data" enriches your data from live sources.

Restrictions
The live data comes from two different sources. Getting data from third party vendors is not free and causes significant costs. So updates of such data may fail due to excess of free data requests (for all users, not your account only). To overcome this, in the time window of -7 and +7 days a different provider is used, where all data is free (but only for a two week time frame). A couple of days before your flight or right after, the update should work without interruptions.

Live data update


4 Statistics

4.1 Date Selection

  • Future: All flights from tomorrow to open end
  • This Year: All flights from beginning of the year to today
  • Last Year: All flights from beginning of last year to end of last year
  • Last 6 Months: All flights from this month and five months before
  • All Time: All flights
  • Custom Range: Choose range by date

4.2 Information

4.2.1 Overview

This is the overview dashboard. It contains general metrics based on the date selection. Flight Statistics

The trends page shows information about the selected flights distribution. Statistic Trends

4.2.3 Geography

The geography page displays an interactive globe with all selected flight routes (green lines). The globe is controllable with your pointing device (e.g. mouse, trackpad, touch screen). Statistic Geography

4.2.4 Airline

The airline page lists all selected airlines. Statistic Airline

4.2.5 Aircraft

The airline page lists all selected aircraft by type (manufacturer and type) and by airframe registration. Statistic Aircraft

4.2.6 Airport

The airport page lists all visited airports and the appropriate routes, based on your date selection. Statistic Airport

4.2.7 Country

The country page shows a map of all visited countries. The color will fade to red, the more often the airport was visited. The data is also shown in list format.

How to count
The numbers appear to be twice as high as expected. The reason is that, for example, a return flight counts as two visits. This is because both the departure and arrival airports are counted and added together.
Statistic Country


5 Data Management

5.1 Changed Values

Whenever data in your flight segments is modified (not created), the changed values are logged and shown on this page. Flight change history

5.2 Import

Importing from most major flight tracking platforms
The import mapping is fully customizable. Some popular data formats have a mapping preset:
(1) flugstatistik.de and flightmemeory.com
(2) openflights.org
(3) flighty.app
Please note: Only flight segments are subject to this import feature. Trips must be transferred manually, if any.

Migration Process:

  1. Prepare Your Data: Export from your current platform (preferably in CSV format)
  2. Use Import Wizard: Guided import with validation
  3. Review & Correct: Fix any issues before final import
  4. Verify Results: Check imported data for accuracy

Open the import page.

Flights

Upload your file. A mapping page will appear. If the format was recognized, all necessary fields will be mapped already. Feel free to do adjustments.

Mandatory fields
Flight date and flight number are mandatory values. If your flight does not have a flight number, it will be replaced by a dummy value.
Multiple identical flight numbers are allowed per day (e.g. direct flights with stops under same flight number).

Flights Import

Check the pre-processed data. You may download the issues for further investigation.

Import preview

Do not leave the import page after the import has started until the process is displayed as finished.

Import progress

After the import is finished you may head for the flights page to check the result.

Import completed

5.3 Export

Exports are possible in CSV or JSON format. All stored records are downloaded in a file to you local computer.

Flights export

5.4 Backup

It is recommended to regularly backup your trip and flight data. The data will be downloaded in a zip file to your local computer.

Backup

You restore your data in the same way. Check if your existing data should be deleted (default, unless you want a delta import). Also check, if trips only or trips and flight segments should be imported.

Restore target
Backups can be interchanged. This means, a backup that was taken from one user may be restored to any other user account.

Restore

5.5 Data Reset

Caution: This resets all you stored trips and flight segments. Only your user account will remain.

Data reset


6 Profile Settings

6.1 Profile

See Section 2.2 for setting your profile data.

6.2 Security

Change your password on the security page.

Here you can also see your current sessions and delete specific sessions. The session details indicate which device and network you were last logged into.

Password and sessions

6.3 Integrations

Security Feature
For security reasons, your request must be initiated with your email address used in your Tripdesk Flights account. This avoids abuse of your installed token.

6.3.1 Konfiguration

Repository
You will find all files in Github repository https://github.com/monswyk/tripdesk-flights-mcp.git with further documentation.

MCP server

6.3.2 Use Case: Claude Dektop

Download

Download Claude Desktop at https://claude.com/download and follow the installation instructions.


MacOS

Create the Tripdesk MCP bridge for Claude Desktop in Terminal:

cat > ~/Library/Application\ Support/Claude/mcp-bridges/tripdesk-bridge.js << 'EOF'
#!/usr/bin/env node
const https = require('https');
const readline = require('readline');

const TOKEN = process.env.TRIPDESK_TOKEN;
const URL = 'https://flights.tripdesk.app/api/mcp';

const rl = readline.createInterface({ input: process.stdin });

rl.on('line', (line) => {
  if (!line.trim()) return;
  
  let msg;
  try {
    msg = JSON.parse(line);
  } catch (e) {
    return;
  }
  
  const isNotification = msg.id === undefined || msg.id === null;
  
  const data = JSON.stringify(msg);
  
  const req = https.request(URL, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'x-mcp-token': TOKEN
    }
  }, (res) => {
    let body = '';
    res.on('data', chunk => body += chunk);
    res.on('end', () => {
      if (!isNotification && body) {
        try {
          const resp = JSON.parse(body);
          if (resp.id !== null && resp.id !== undefined) {
            console.log(body);
          }
        } catch (e) {
          // Nicht-JSON ignorieren
        }
      }
    });
  });
  
  req.on('error', (e) => {
    if (!isNotification) {
      console.error('Request error:', e.message);
    }
  });
  
  req.write(data);
  req.end();
});
EOF

Create a configuration file in Terminal:

cat > ~/Library/Application\ Support/Claude/claude_desktop_config.json << 'EOF'
{
  "mcpServers": {
    "tripdesk-flights": {
      "command": "node",
      "args": [
        "~/Library/Application Support/Claude/mcp-bridges/tripdesk-bridge.js"
      ],
      "env": {
        "TRIPDESK_TOKEN": "-----YOUR_TOKEN_HERE-----"
      }
    }
  },
  "preferences": {
    "sidebarMode": "chat",
    "coworkScheduledTasksEnabled": false
  }
}
EOF

Microsoft Windows

Create the Tripdesk MCP bridge for Claude Desktop with PowerShell:

$dir  = "$env:APPDATA\Claude\mcp-bridges"
$path = "$dir\tripdesk-bridge.js"
New-Item -ItemType Directory -Force -Path $dir | Out-Null

@'
#!/usr/bin/env node
const https = require('https');
const readline = require('readline');

const TOKEN = process.env.TRIPDESK_TOKEN;
const URL = 'https://flights.tripdesk.app/api/mcp';

const rl = readline.createInterface({ input: process.stdin });

rl.on('line', (line) => {
  if (!line.trim()) return;
  
  let msg;
  try {
    msg = JSON.parse(line);
  } catch (e) {
    return;
  }
  
  const isNotification = msg.id === undefined || msg.id === null;
  
  const data = JSON.stringify(msg);
  
  const req = https.request(URL, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'x-mcp-token': TOKEN
    }
  }, (res) => {
    let body = '';
    res.on('data', chunk => body += chunk);
    res.on('end', () => {
      if (!isNotification && body) {
        try {
          const resp = JSON.parse(body);
          if (resp.id !== null && resp.id !== undefined) {
            console.log(body);
          }
        } catch (e) {
        }
      }
    });
  });
  
  req.on('error', (e) => {
    if (!isNotification) {
      console.error('Request error:', e.message);
    }
  });
  
  req.write(data);
  req.end();
});
'@ | Set-Content -Encoding UTF8 $path

Alternatively create the file with the CMD-Terminal:

@echo off
set "BRIDGE=%APPDATA%\Claude\mcp-bridges\tripdesk-bridge.js"
if not exist "%APPDATA%\Claude\mcp-bridges" mkdir "%APPDATA%\Claude\mcp-bridges"

(
  echo #!/usr/bin/env node
  echo const https = require('https');
  echo const readline = require('readline');
  echo.
  echo const TOKEN = process.env.TRIPDESK_TOKEN;
  echo const URL = 'https://flights.tripdesk.app/api/mcp';
  echo.
  echo const rl = readline.createInterface({ input: process.stdin });
  echo.
  echo rl.on('line', (line) =^> {
  echo   if (!line.trim()) return;
  echo.
  echo   let msg;
  echo   try {
  echo     msg = JSON.parse(line);
  echo   } catch (e) {
  echo     return;
  echo   }
  echo.
  echo   const isNotification = msg.id === undefined ^|^| msg.id === null;
  echo.
  echo   const data = JSON.stringify(msg);
  echo.
  echo   const req = https.request(URL, {
  echo     method: 'POST',
  echo     headers: {
  echo       'Content-Type': 'application/json',
  echo       'x-mcp-token': TOKEN
  echo     }
  echo   }, (res) =^> {
  echo     let body = '';
  echo     res.on('data', chunk =^> body += chunk);
  echo     res.on('end', () =^> {
  echo       if (!isNotification ^&^& body) {
  echo         try {
  echo           const resp = JSON.parse(body);
  echo           if (resp.id !== null ^&^& resp.id !== undefined) {
  echo             console.log(body);
  echo           }
  echo         } catch (e) {
  echo           ^// Nicht-JSON ignorieren
  echo         }
  echo       }
  echo     });
  echo   });
  echo.
  echo   req.on('error', (e) =^> {
  echo     if (!isNotification) {
  echo       console.error('Request error:', e.message);
  echo     }
  echo   });
  echo.
  echo   req.write(data);
  echo   req.end();
  echo });
) > "%BRIDGE%"

Create a configuration file with PowerShell:

$path = "$env:APPDATA\Claude\claude_desktop_config.json"
@'
{
  "mcpServers": {
    "tripdesk-flights": {
      "command": "node",
      "args": [
        "%APPDATA%\\Claude\\mcp-bridges\\tripdesk-bridge.js"
      ],
      "env": {
        "TRIPDESK_TOKEN": "-----YOUR_TOKEN_HERE-----"
      }
    }
  },
  "preferences": {
    "sidebarMode": "chat",
    "coworkScheduledTasksEnabled": false
  }
}
'@ | Set-Content -Encoding UTF8 $path

Alternatively create the file with the CMD-Terminal:

@echo off
set "CFG=%APPDATA%\Claude\claude_desktop_config.json"
(
  echo {
  echo   "mcpServers": {
  echo     "tripdesk-flights": {
  echo       "command": "node",
  echo       "args": [
  echo         "%%APPDATA%%\\Claude\\mcp-bridges\\tripdesk-bridge.js"
  echo       ],
  echo       "env": {
  echo         "TRIPDESK_TOKEN": "-----YOUR_TOKEN_HERE-----"
  echo       }
  echo     }
  echo   },
  echo   "preferences": {
  echo     "sidebarMode": "chat",
  echo     "coworkScheduledTasksEnabled": false
  echo   }
  echo }
) > "%CFG%"

Use of Claude Desktop

Activate new Configuration
Restart Claude Desktop after installing the scripts to get them loaded. No error messages must appear after startup.

Start chatting with Claude Desktop.

In this example we would like to lists all flights (as the account is new, there should be no flights yet).

Prompt:

"Please list my flights. My email address is <PLACE YOUR ACCOUNT EMAIL ADDRESS HERE>."

The email address works as a second sign-in factor and secures your account. The configured token must match your account's email address.

Confirm the security question (always or once).

Claude Desktop: List flights

The result is empty, as we do not have any flights yet in the system.

Claude Desktop: List flights result

So let's create one.

Prompt:

Please add flight LX65 for tomorrow. Reason is business, seat is 5K in business class.

Confirm security questions, if any.

Claude Desktop: Add flight

The flight will be added. However, the segment looks quiet empty.

Claude Desktop: No flights

It is necessary to enrich the record with some more data. We could have provided all necessary values in the prompt before, but there is a more convenient way as the flight data is no individual data. We pull this from live data sources.

Prompt:

Yes, please update from live data.

Claude Desktop: Add flight result

Now we see a complete flight segment record.

Claude Desktop: Added flight


We set the configuration by terminal command from the command prompt. Your just installed file aka settings are also accessible via the Claude Desktop UI.

Open the Settings section in the menu bar, then click subtopic Developer.

However, Claude Desktop has currently no form based editor for maintaining those setting. Changes must be made in the file claude_desktop_config.json directly.

Claude Desktop: Settings

6.3.3 More Use Cases

You can use the MCP server with all kinds of applications, which support this protocol.

In Cursor IDE the MCP server coding is like this (probably not useful, just to give an idea). Add a new MCP server in Cursor settings:

{
  "mcpServers": {
    "tripdesk-flights": {
      "url": "https://flights.tripdesk.app/api/mcp",
      "headers": {
        "x-mcp-token": "-----YOUR_TOKEN_HERE-----"
      }
    }
  }
}

The individual formatting depends on the requirements of your client application.

6.4 Preferences

Set your preferences regarding formats and units here. Translation is a future feature, only English is available currently. Preferences

6.5 Membership

Data loss
Cancelling your membership will delete all your data. Data may not be restored after this point.
Shift the enabling button to the reight-hand side. This will enable the deletion button. Your complete account will be deleted after this. Membership

6.6 Sign Out

By clicking on your username in the upper right-hand side a context menu will open. You can logoff from the application by clicking Sign out.


7 Legal Information

7.1 Terms of Service

Find our terms of service under https://flights.tripdesk.app/terms.

7.2 Privacy Policy

The privacy statement is linked to https://flights.tripdesk.app/privacystatement.