UNPKG

flightaware-mcp

Version:

MCP server bridging to FlightAware AeroAPI

300 lines (223 loc) 6.2 kB
# FlightAware MCP Server A bridge server connecting Model Context Protocol (MCP) clients to FlightAware's AeroAPI for real-time aviation data. ## Features - **Flight Information**: Get real-time information about specific flights - **Airport Operations**: Track arriving and departing flights at airports - **Aircraft Details**: Retrieve aircraft information by tail number - **Airport Search**: Find airports by region, country, or custom query - **Detailed Tracking**: Get comprehensive flight operation details - **Flexible Protocol Support**: Works with both TCP and WebSocket connections - **Easy Configuration**: Simple setup via environment variables or command line ## MCP Tools This server provides the following tools via the MCP interface: ### `getFlightByIdent` Get information about a specific flight using its identifier. ```json { "id": "req123", "method": "getFlightByIdent", "params": { "ident": "AAL100" } } ``` ### `getFlightsForAirport` List flights arriving at or departing from a specific airport. ```json { "id": "req124", "method": "getFlightsForAirport", "params": { "airport_code": "KJFK", "arrivals": true, "departures": true, "type": "all" } } ``` ### `getAircraftByTail` Get information about a specific aircraft by its tail number. ```json { "id": "req125", "method": "getAircraftByTail", "params": { "tail": "N12345" } } ``` ### `getAirportsByRegion` Search for airports by country, region, or custom query. ```json { "id": "req126", "method": "getAirportsByRegion", "params": { "country": "US", "region": "CA", "query": "international" } } ``` ### `getFlightDetails` Get detailed information about a specific flight. ```json { "id": "req127", "method": "getFlightDetails", "params": { "ident": "AAL100" } } ``` ## Configuration ### AeroAPI Key You'll need a FlightAware AeroAPI key to use this server. - Sign up at [FlightAware AeroAPI](https://flightaware.com/aeroapi/) - Follow their instructions to obtain an API key ### Installation #### Using NPX (No installation required) Run directly with npx: ```bash npx flightaware-mcp --port 8080 --aeroapi-key YOUR_API_KEY ``` #### Global Installation Install globally and run from anywhere: ```bash npm install -g flightaware-mcp flightaware-mcp --port 8080 --aeroapi-key YOUR_API_KEY ``` #### Local Installation Install locally in your project: ```bash npm install flightaware-mcp ``` Then add to your `package.json` scripts: ```json "scripts": { "start-mcp": "flightaware-mcp --port 8080" } ``` ### Command Line Options ``` Usage: flightaware-mcp [options] Options: -V, --version output the version number -p, --port <number> Port to listen on (default: "8080") -k, --aeroapi-key <string> FlightAware AeroAPI key -m, --mode <string> Server mode (tcp or ws) (default: "tcp") -t, --timeout <number> Request timeout in milliseconds (default: "30000") -d, --debug Enable debug mode with verbose logging -h, --help display help for command Notes: - If you experience timeout errors (MCP error -32001), try increasing the timeout value. - Debug mode will provide detailed logs about requests and timeouts. - For n8n integrations, set a higher timeout value (60000 or more) if needed. ``` ### Environment Variables You can use environment variables instead of command line arguments: ``` AEROAPI_KEY=your_api_key MCP_SERVER_PORT=8080 MCP_SERVER_MODE=tcp # or ws for WebSocket MCP_REQUEST_TIMEOUT=60000 # timeout in milliseconds, increase if experiencing timeouts DEBUG=true # enable debug mode with verbose logging LOG_LEVEL=info # log level (error, warn, info, debug) ``` ## Usage Examples ### MCP Client Configuration For MCP clients that support server configuration, you can use this configuration: ```json { "mcpServers": { "flightaware": { "command": "npx", "args": [ "-y", "flightaware-mcp" ], "env": { "AEROAPI_KEY": "YOUR_API_KEY_HERE" } } } } ``` ### Sample MCP Client Code ```javascript const net = require('net'); const client = new net.Socket(); client.connect(8080, '127.0.0.1', () => { console.log('Connected to MCP server'); // Request flight information const request = { id: 'req1', method: 'getFlightByIdent', params: { ident: 'UAL123' } }; client.write(JSON.stringify(request) + '\n'); }); client.on('data', (data) => { const response = JSON.parse(data.toString().trim()); console.log('Received response:', response); client.end(); }); client.on('close', () => { console.log('Connection closed'); }); ``` ### Testing with Included Client This package includes a test client for easy testing: ```bash # First, start the server npm start # In another terminal, run the test client npm run client ``` ## Development ### Building from Source ```bash # Clone the repository git clone <repository-url> cd flightaware-mcp # Install dependencies npm install # Start development server npm start ``` ### Running Tests ```bash npm test ``` ### Linting ```bash npm run lint ``` ## Troubleshooting ### Timeout Errors If you're experiencing timeout errors (`MCP error -32001: Request timed out`), try these solutions: 1. **Increase the timeout value:** ```bash # With command line flightaware-mcp --timeout 60000 # With environment variables MCP_REQUEST_TIMEOUT=60000 flightaware-mcp ``` 2. **Enable debug mode to get more information:** ```bash flightaware-mcp --debug ``` 3. **Check your network connectivity:** - Ensure your server has stable internet access - Check if there are any firewall rules blocking outbound requests 4. **For n8n integration:** - Set a higher timeout value (60000ms or more) - Make sure the MCP server and n8n can communicate properly - Try both TCP and WebSocket modes (`--mode ws` or `--mode tcp`) 5. **Check AeroAPI rate limits:** - FlightAware AeroAPI has rate limits based on your subscription - Enable debug mode to see detailed API response information ## License MIT