tripkit
Allows exporting trips, days, flights, stays, and day plans as Markdown documents for readable, portable itineraries.
Click on "Deploy 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., "@tripkitCreate a trip to Lisbon May 2-8 and add a stay near the city center."
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.
Tripkit
A shared trip ledger, exposed as MCP tools.
Tripkit is a Neuron-class OSS MCP server: it does not plan your trip or hold a conversation with you. Your personal agent (Claude, or any MCP-capable assistant) keeps that role. Tripkit is the tool surface underneath it — a small, structured ledger of trips, flights, stays, day plans, people, and packing lists that an agent can read and write reliably, without re-parsing free text or losing state between sessions.
The problem
Ask an AI agent to help plan a trip and it will happily produce an itinerary — as unstructured prose, gone the moment the conversation ends or you switch tools. There's nowhere for "the flight confirmation number," "who's staying at which hotel," or "what's actually in the 2pm slot on Tuesday" to live in a form the agent can reliably re-read, update, and export later. Tripkit gives agents a small set of typed tools backed by a real database, so trip state survives across sessions, tools, and people.
Related MCP server: TaskPilot MCP Server
What Tripkit is / isn't
Owns (v1):
A trip ledger, shared per-Trip across Accounts: trips, flights, stays, days, people
MCP tools to add/update/query those entities
Constrained day plans (time-boxed blocks that can't overlap), packing lists, and rough transit sketches
Markdown and ICS (calendar) export
Does not own (v1):
Being the chat planner itself — that's your agent's job, not Tripkit's
Full airline/hotel booking or checkout — Tripkit stores confirmation numbers you already have; it doesn't buy anything
Live routing, pricing, or availability APIs — transit sketches are deterministic placeholder estimates, not real quotes
Deploy path: hosted on Supabase (Postgres + Auth) — every Account reads
and writes through MCP, authenticated per-request via their own Supabase
identity, with Row Level Security enforcing that a Member only ever sees
Trips they belong to. There is no local-only or account-free mode (ADR
0004): storage sits behind a TripkitRepository interface, but the only
implementation is SupabaseTripkitRepository.
Install
Requires Node.js >= 22.
npm install -g @kovartravis/tripkitOr run it without installing, via npx:
npx @kovartravis/tripkit mcpQuickstart
Tripkit needs a Supabase project (Postgres + Auth, with Dynamic Client
Registration enabled and the schema in supabase/migrations/ applied) and
a Supabase Account of your own before it can do anything. Set these env
vars:
export TRIPKIT_SUPABASE_URL=https://<ref>.supabase.co
export TRIPKIT_SUPABASE_ACCESS_TOKEN=<your own Supabase session access token>
export SUPABASE_SERVICE_ROLE_KEY=<the project's service_role key>
export SUPABASE_DB_HOST=<pooler host>
export SUPABASE_DB_USER=<pooler user>
export SUPABASE_DB_PASSWORD=<pooler password>Connect it as an MCP server
Tripkit speaks MCP over stdio, authenticated for the whole session as
whichever Account TRIPKIT_SUPABASE_ACCESS_TOKEN belongs to. Point any
MCP-capable client at it — for example, in Claude Desktop's
claude_desktop_config.json:
{
"mcpServers": {
"tripkit": {
"command": "npx",
"args": ["-y", "@kovartravis/tripkit", "mcp"],
"env": {
"TRIPKIT_SUPABASE_URL": "https://<ref>.supabase.co",
"TRIPKIT_SUPABASE_ACCESS_TOKEN": "...",
"SUPABASE_SERVICE_ROLE_KEY": "...",
"SUPABASE_DB_HOST": "...",
"SUPABASE_DB_USER": "...",
"SUPABASE_DB_PASSWORD": "..."
}
}
}
}Or run it directly:
tripkit mcpFor a shared, always-on deployment reachable by multiple Members (Owner
and Companions alike, each through their own agent), run it over HTTP
instead — see tripkit --help for --http's flags. Each request
authenticates against Supabase's own OAuth 2.1 server (dynamic client
registration + PKCE); Tripkit is only ever the resource server.
Once connected, your agent can call tools like tripkit_trip_create,
tripkit_flight_add, and tripkit_day_plan_set to build up a trip, then
tripkit_export_markdown or tripkit_export_ics to hand you something
readable.
Tools
All 14 tools are prefixed tripkit_. Full parameter and return-value
reference: docs/TOOLS.md.
Tool | Purpose |
| Create a trip (name, dates, home timezone, notes) |
| Update trip fields |
| Get one trip |
| List all trips |
| Add a traveler to a trip |
| Update a traveler |
| List travelers on a trip |
| Add a flight (airline, times, confirmation, seat, travelers) |
| Update a flight |
| List a trip's flights |
| Add lodging (check-in/out, address, confirmation, guests) |
| Update a stay |
| List a trip's stays |
| Create/update a calendar day on a trip |
| Set a day's plan as ordered, non-overlapping time blocks |
| Get one day (with its plan) |
| List a trip's days (with plans) |
| Generate a packing list from trip length, travelers, and climate hints |
| Check off, edit, add, or remove packing items |
| Rough transit-leg estimate between two places (no live routing) |
| Structured filtered query over a trip's ledger |
| Export a trip or single day as markdown |
| Export flights/stays/day blocks as an ICS calendar |
| Invite a Companion by email to join a trip you own |
CLI
tripkit mcp Start the Tripkit MCP server on stdio
tripkit mcp --http ... Serve MCP over HTTP, plus a read-only dashboard at /ui
tripkit --help Full flag/env var referenceStorage
Data lives in Supabase Postgres. Trips, people, flights, stays, days, day
blocks, packing items, and invites each get their own table, with foreign
keys cascading from trips. All access goes through the TripkitRepository
interface (src/db/repository.ts), implemented by
SupabaseTripkitRepository (src/db/postgres/), which forwards each
caller's verified JWT into a per-request Postgres transaction so Row Level
Security — not application code — is what actually enforces that a Member
only reads or writes Trips they belong to.
Development
git clone https://github.com/kovartravis/tripkit.git
cd tripkit
npm install
npm run build
npm testSee CONTRIBUTING.md for project layout and contribution guidelines, and CHANGELOG.md for release notes.
License
This server cannot be deployed
Maintenance
Related MCP Connectors
Agent-native notes, tasks, dev-docs, vaults, sync & handoffs. MCP + OpenAPI dual surface.
Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.
Persistent docs and memory for AI agents — read, write, organize & search a shared workspace.
Local-first, governed memory and session continuity for AI coding agents. No cloud, no telemetry.
Related MCP Servers
- AlicenseAqualityCmaintenanceAutomatically maintains a personal journal on behalf of an AI agent, storing text, photos, and voice notes as plain markdown files locally. Enables agents to add entries, recall memories, and reflect on patterns without user intervention.1137 npmMIT
- AlicenseNot gradedqualityBmaintenanceProvides 13 tools for AI agents to manage tasks, calendar, and goals in TaskPilot, a local-first desktop task manager with a permissioned agent runner and review workflows.MIT

operations-pulseofficial
AlicenseNot gradedqualityAmaintenanceEnables AI assistants to run local-first operations checks, review evidence, and manage durable tickets in a SQLite-backed ledger through self-describing MCP tools.MIT- AlicenseNot gradedqualityAmaintenanceProvides coding agents with persistent local memory by exposing tools to save, search, and retrieve decisions, bugs, and context as Markdown with hybrid keyword and semantic search.4MIT