CorporateTravel Dispatch MCP
OfficialThe CorporateTravel Dispatch MCP server provides tools for operational dispatch, flight tracking, and administrative control, focused on aviation and ground transportation logistics primarily in the DC area.
Platform Health & Feed Monitoring
Check service health, feed freshness, and error states for all data sources (TFR, METAR, NWS, NOTAM, Amtrak, ATCSCC, runsheet)
Airspace & Aviation Data
Retrieve active FAA Temporary Flight Restrictions (TFRs), including AI-enriched versions with threat level, movement type (POTUS/Marine One/AF1), and plain-language summaries
Fetch active NOTAMs for DC-area airports
Access the FAA ATCSCC National Operations Plan (ground delays, ground stops, miles-in-trail restrictions)
Weather
Get DC-area METAR snapshots (ceiling, visibility, wind, flight category) for KIAD, KDCA, KBWI
Retrieve active NWS weather alerts (warnings, watches, advisories) for the DC metro region
HEMS & Ground Operations
Query the Critical Predictability State (CPS) — a go/no-go score for HEMS operations based on ceiling, visibility, wind, precipitation, airspace, and GDP
Get ground route impact assessments for DC-area chauffeur corridors with recommended adjustments
Check Amtrak train status at Washington Union Station (Acela, NE Regional)
Access the active trip runsheet with client, pickup, destination, and status details (requires Tailscale)
Daily Briefing
Retrieve an AI-generated daily operational brief synthesizing TFRs, weather, CPS, NWS alerts, and ATCSCC ops plan
VIP Flight Watchlist
List, add, and remove flights/persons/ground subjects from a VIP watchlist for automated ntfy push monitoring
Live Flight Tracking (ADS-B via airplanes.live)
Look up real-time aircraft position by ICAO callsign, tail/registration number, or confirmed ICAO 24-bit hex address
Admin Tools (requires DISPATCH_TOKEN)
Extended health check with internal queue and container status
Force-refresh any named data feed on demand
Trigger immediate CPS recomputation or ATCSCC ops plan snapshot
Send push notifications via ntfy with configurable priority
View the append-only audit log (90-day retention)
Sends push notifications via ntfy.sh for alerting and monitoring.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@CorporateTravel Dispatch MCPcheck active TFRs near DC"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
corporatetravel-dispatch-mcp
Last verified against code: 2026-08-11
Right repo? You want
corporatetravel-dispatch-mcp(this one) for the MCP server. The dispatch platform source lives atcorporatetraveldc-dispatch. The public mirror is atctdi-dispatch.
MCP server exposing the CS Executive Services dispatch platform (Raspberry Pi 5 based), airplanes.live flight tracking, and airframes.io ACARS as portable, agent-agnostic tools. Works with any MCP-compatible agent: Claude Code, Cline, Cursor, Zed, Windsurf, and — via two mcpo HTTP bridges — Open WebUI locally and remote integrations (e.g. a Claude.ai custom connector) publicly.
ALL Public Commits are GPG signed using Key: ABD3976FCC006E0F3FE559177286B3118BA4EFB2. Pubkey is included in this repo as
ABD3976FCC006E0F3FE559177286B3118BA4EFB2.gpg.
Tools (34 total; 26 in public-safe mode)
Tool registration lives in dispatch_mcp/tools/__init__.py:
register(mcp, public_safe: bool). With DISPATCH_MCP_PUBLIC_SAFE=1 the
admin module (7 tools) and second_brain package (1 tool) are never
loaded — not merely gated — leaving the 26-tool public-safe subset. Counts
verified 2026-08-11 with grep -rc "@mcp.tool" dispatch_mcp/tools/ and against
both running mcpo instances' /openapi.json (34 paths private, 26 public).
Dispatch platform — Tier 0 (no auth required) — tools/dispatch.py
Tool | Endpoint | Description |
|
| Service health + snapshot ages |
|
| Feed freshness and error state |
|
| Active TFRs from FAA |
|
| TFRs with AI threat interpretation |
|
| DC-area METAR snapshot |
|
| Active NWS weather alerts |
|
| Active NOTAMs (requires FAA key on Pi) |
|
| Critical Predictability State (HEMS go/no-go) |
|
| Ground route impact assessment |
|
| Amtrak status at WAS |
|
| AI-generated daily operational brief |
|
| FAA ATCSCC National Operations Plan |
|
| Active trip runsheet (Tailscale-only, sends bearer token) |
|
| Pi network data usage (vnstat daily log) |
Dispatch platform — Watchlist — tools/dispatch.py (bearer token sent)
Tool | Method + route | Description |
|
| List active VIP watchlist sessions |
|
| Add subject to watchlist (typed routes; generic/ground/person not yet supported) |
|
| Remove watchlist session |
Dispatch platform — FIDS — tools/fids.py
Tool | Endpoint | Description |
|
| Confirmed gate, baggage carousel, arrival status (DCA/IAD, MWAA) |
|
| FIDS feed health/freshness snapshot (DCA/IAD) |
|
| Forward-looking arrivals, DCA/IAD/BWI (SWIM + website + AeroAPI) |
FAA Aircraft Registry — tools/aircraft.py (local cache on the Pi, updated weekly)
Tool | Endpoint | Description |
|
| Look up aircraft by N-number or ICAO hex |
|
| Local registry cache status |
Admin — tools/admin.py (requires DISPATCH_TOKEN; excluded in public-safe mode)
Tool | Route | Description |
|
| Extended health check |
|
| Force-refresh a named feed (metar, nws, tfr, notam, amtrak, atcscc_opsplan, runsheet) |
|
| Force CPS recomputation |
|
| Force opsplan fetch |
|
| Send ntfy push notification |
|
| View audit log (append-only, 90-day retention) |
|
| Last ctdi-watchdog run result (lives in admin.py, so excluded in public-safe mode despite the name) |
Second Brain — tools/second_brain/remember.py (requires DISPATCH_TOKEN; excluded in public-safe mode)
Tool | Route | Description |
|
| Capture a manual note into the second-brain vault ( |
Flight Tracking — airplanes.live — tools/flight.py (no auth)
Tool | Description |
| ADS-B position lookup by ICAO callsign |
| ADS-B position + hex by tail number |
| ADS-B position by confirmed ICAO 24-bit hex |
Hex resolution order: callsign → registration → hex. Always confirm hex via
flight_get_by_registration before adding to watchlist — hex is airframe-bound;
callsign-to-hex mappings can be stale day-over-day.
ACARS — airframes.io — tools/acars.py (no auth)
Tool | Description |
| Recent ACARS/VDL2/HFDL messages for an airframe hex |
Related MCP server: quads-mcp
Security model: no per-caller auth on admin/second-brain tools
admin._check_token() only verifies the process has a DISPATCH_TOKEN
configured — it does not verify the MCP caller presented anything. Every
outbound admin call uses that one fixed token regardless of caller. These
tools are therefore only safe on instances where reachability itself is the
access control (stdio on your own machine, or the loopback/tailnet mcpo
instance). Any instance fronted by a public hostname must run with
DISPATCH_MCP_PUBLIC_SAFE=1, which never loads them at all. See
docs/mcpo-openwebui.md for the two-instance
deployment that enforces this.
Install
pip install -e .Requires Python 3.11+. Dependencies (declared in pyproject.toml): mcp[cli],
httpx, pydantic, and jsonschema.
Why jsonschema is pinned here:
mcp/server/lowlevel/server.pyimportsjsonschemaunconditionally, but themcppackage does not declare it and themcp[cli]extra does not reliably pull it in. Without it the server crashes at import. Declared explicitly in this repo'spyproject.tomlas of 2026-08-11.
Public mirror gap (2026-08-11): the public GitHub mirror (
corporatetravel-dispatch-mcppublic copy) is missing thepublic_saferegistration-mode commits. Anyone installing from the public repo'spip install git+https://...instructions gets a build with no way to exclude admin/second_brain tools. Until the mirror is re-synced, do not build a publicly exposed instance from the public repo.
Configure
Env var | Default | Notes |
|
| Tailscale address of the Pi — primary. |
|
| Tried only on transport-level failure of the primary (connect/timeout), never on HTTP 4xx/5xx. CF Access gates POST routes there, so admin failover may 401/403. |
| (empty) | Required for admin/second-brain tools ( |
|
| Dispatch HTTP timeout (seconds) |
|
| airplanes.live timeout (seconds) |
|
| airframes.io ACARS aggregator |
|
| airframes.io timeout (seconds) |
|
|
|
|
| Port when transport=http |
| (unset) |
|
Retired hostname:
ops.csexecutiveservices.comis fully retired and hard-rejected app-side (dispatch platformrunner/main.py_RETIRED_HOSTNAMES). It must not appear in any config. Older docs and examples that referenced it as the defaultDISPATCH_BASE_URLare obsolete.
Use with Claude Code
Register at user scope (persists across projects):
claude mcp add dispatch \
-e DISPATCH_BASE_URL=http://100.94.80.100:8000 \
-e DISPATCH_TOKEN=your-token-here \
--scope user \
-- dispatch-mcpOr add to ~/.claude/.claude.json directly under "mcpServers":
{
"mcpServers": {
"dispatch": {
"type": "stdio",
"command": "/full/path/to/dispatch-mcp",
"args": [],
"env": {
"DISPATCH_BASE_URL": "http://100.94.80.100:8000",
"DISPATCH_TOKEN": "your-token-here"
}
}
}
}On the Pi itself, dispatch-mcp-wrapper.sh (repo root) is the preferred
command: it extracts DISPATCH_ADMIN_TOKEN from
/etc/corporatetraveldc/dispatch-secrets.env without sourcing the file as
bash, exports it as DISPATCH_TOKEN, and execs the venv binary at
/opt/corporatetraveldc/corporatetravel-dispatch-mcp/venv/bin/dispatch-mcp.
Both deployed mcpo services use this wrapper.
Use with Cline / Cursor / Zed / Windsurf
Same MCP JSON config block — each supports mcpServers in their settings file.
Point command at the installed dispatch-mcp binary or python -m dispatch_mcp.server.
Use with Open WebUI / Claude.ai / HTTP clients
See docs/mcpo-openwebui.md. Two separate mcpo bridge instances run on the Pi:
Private, full toolset (34):
corporatetraveldc-mcpo.service, port8082, no public hostname — Open WebUI consumes it viahost.containers.internal:8082.Public-safe (26):
corporatetraveldc-mcpo-public.service, port8083(loopback-bound),DISPATCH_MCP_PUBLIC_SAFE=1, fronted by nginx + Cloudflare Tunnel athttps://mcp.csexecutiveservices.com— the endpoint remote integrations (e.g. a Claude.ai custom connector) use.
Context efficiency and plan compatibility
MCP tool responses are structured and compact — each tool returns only the data the agent actually needs, rather than dumping raw API payloads into the context window. This matters for subscription plan users:
Claude Pro — operational dispatch workflows (TFR checks, CPS queries, flight lookups, daily brief) stay well within the message window because context stays lean. Pairing with a context guardian skill (e.g. the
dispatch-context-guardianCowork skill bundled with this deployment) automatically compacts sessions before they hit plan limits.Claude Max / API — compact responses reduce per-request token cost and latency.
Cline / Cursor / Windsurf — same economy; MCP tool calls consume far fewer tokens than equivalent REST-then-paste workflows.
Verify syntax
python -m py_compile \
dispatch_mcp/server.py \
dispatch_mcp/config.py \
dispatch_mcp/client.py \
dispatch_mcp/tools/__init__.py \
dispatch_mcp/tools/dispatch.py \
dispatch_mcp/tools/flight.py \
dispatch_mcp/tools/admin.py \
dispatch_mcp/tools/aircraft.py \
dispatch_mcp/tools/acars.py \
dispatch_mcp/tools/fids.py \
dispatch_mcp/tools/second_brain/__init__.py \
dispatch_mcp/tools/second_brain/remember.py
echo "All clean"Notes
Tier 0 endpoints (
/api/v1/*) require no authentication.dispatch_get_runsheetis Tailscale-gated and only works against the default TailscaleDISPATCH_BASE_URL.Admin endpoints require
DISPATCH_TOKEN. Create tokens on the Pi:csex-token create.dispatch.csexecutiveservices.comhas Cloudflare Access on POST routes; it is the transport-failure fallback only, not the primary.ops.csexecutiveservices.comis retired and hard-rejected — never use it.CUI rules: this server never generates or exposes SHARES/HEARS/HEART frequencies. The platform ships with empty placeholder credential files.
License
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA production-grade MCP server designed for multi-tenant, authenticated, and observable AI agent systems, enabling secure tool execution across heterogeneous data sources.57MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for interacting with QUADS infrastructure systems via API, enabling resource management and automation through LLM applications.MIT
- AlicenseAqualityCmaintenanceMCP server giving AI agents access to real-time aviation data — live flight tracking, airport weather, airline and airport information.103MIT
- AlicenseBqualityCmaintenanceMCP server for grounded analysis of synthetic electric-taxi operations data, exposing tools for aggregated metrics, charging risk, and policy retrieval.3MIT
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
Autopilot MCP server for GEO analyses, reports, content, audits, memories and agents.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/CorporateTravelDC/corporatetravel-dispatch-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server