mileage-log
A local MCP server for tracking deductible mileage: log trips, apply effective-dated rates, summarize deductions, and export CSV.
Log trips with date, from/to, distance and unit, purpose, category, note, and optional jurisdiction.
List and filter trips by date range and category, showing each trip’s applicable rate and earned amount.
Remove a trip by its exact
TR-YYYY-NNNNid; ids are not reissued.Set mileage rates as effective-dated series per jurisdiction, category, unit, and currency.
List all rate series on file.
Summarize deductible mileage for a date range per category and currency, including unpriced-trip reasons.
Export the log as accountant-ready CSV, refusing if any non-personal trip in the window is unpriced (Pro).
Check license status or activate a Pro key offline.
Keep all data local with no account, API key, or network calls.
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., "@mileage-log Log a 12-mile business trip to the client office today."
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.
mcp-mileage-log
MCP server for a mileage log for deductible driving: trips, effective-dated rates, summaries and a CSV export. Mileage log for deductible driving: trips, effective-dated rates, summaries and CSV export.
Works with Claude Desktop, Claude Code, Cursor and any Model Context Protocol client. Runs on your own machine, or hosted with no install.
Product page: https://mcp.zovo.one/s/mileage-log - what it does, the tools it exposes, and a live token endpoint.
Install
Hosted, nothing to install. Get a token from https://mcp.zovo.one/mcp/connect (the connect page) or https://mcp.zovo.one/mcp/token (the same token as JSON); a free anonymous one is issued on the spot and a Pro key works the same way. Then point an MCP client at https://mcp.zovo.one/mcp/mileage-log over streamable-http and send the token as Authorization: Bearer <token>.
If your client cannot set headers, put the token in the path instead: https://mcp.zovo.one/mcp/mileage-log/t/<token>. Both forms work. The bare URL with no token answers 401 on tools/call, so the token is not optional.
Claude Desktop, one click. Download mileage-log.mcpb from the latest release and double-click it.
From source. The mirror is self-contained: every @theluckystrike/* dependency is vendored, so a fresh clone builds with no extra setup.
git clone https://github.com/theluckystrike/mcp-mileage-log.git
cd mcp-mileage-log
npm install && npm run buildThen point your client at the built entry point:
{
"mcpServers": {
"mileage-log": {
"command": "node",
"args": ["/absolute/path/to/mcp-mileage-log/dist/index.js"]
}
}
}
@theluckystrike/mcp-mileage-logis not published on npm yet, so annpx -y @theluckystrike/mcp-mileage-logcommand will fail. The three paths above are the working ones and each is exercised by CI.
Read-only mirror of mcp-servers/servers/mileage-log. See MIRROR.md.
In the official MCP Registry (io.github.theluckystrike/mileage-log).
An mcp mileage tracker that keeps the mileage log freelancers need at tax time, the moment the drive happens instead of reconstructed from memory in April. Log each trip with the date, from and to, the distance in miles or km, the purpose and the category (business, medical, moving, charitable, personal); set the rates that apply to you as an effective-dated series per jurisdiction and category; and the summary prices every trip at the rate in force on the day it was driven, per category and per currency. When the log is right, one call exports it as CSV to hand to your accountant. Everything stays on this machine; there is no account and no network call.
Built by theluckystrike.
npm publish for @theluckystrike/mcp-mileage-log is pending, so npx -y @theluckystrike/mcp-mileage-log returns 404 today. Until then, a clone+build is the working path.
Related MCP server: Expense Claim Helper
Install
Claude Desktop
macOS ~/Library/Application Support/Claude/claude_desktop_config.json, Windows %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"mileage-log": {
"command": "npx",
"args": ["-y", "@theluckystrike/mcp-mileage-log"]
}
}
}Claude Code
claude mcp add mileage-log -- npx -y @theluckystrike/mcp-mileage-logCursor
~/.cursor/mcp.json (global) or .cursor/mcp.json (project), same entry as Claude Desktop.
Tools
tool | what it does |
| Log one trip: date, from, to, distance in miles or km, purpose, category. Returns |
| List trips oldest first, with the rate and amount each earns; filter by date range and category |
| Remove a trip by its exact id, for entries made by mistake. The id is not reissued |
| Set what one mile or km is worth for one category in one jurisdiction from a date forward. A series, not one global number |
| Every rate on file, grouped by jurisdiction and category with effective dates in order |
| A date range (default the current year): per-category distance, the rate each trip earned, and the deductible amount, per currency |
| The log as CSV for an accountant: date, from, to, distance, category, rate, amount. Pro |
| Free or Pro, and the key |
Rates are a series, and none ship with the server
Tax authorities change their mileage rates, usually every year, so this server never holds one global rate: rate_set adds a rate for a jurisdiction, a category and a unit from an effective date, and each trip earns the rate in force on its own day. No rates ship with this server, and the example below is an EXAMPLE, not a statement of current law. Verify the figures that apply to you before you file.
An example rate set (illustrative only):
rate_set jurisdiction:"US federal (EXAMPLE)" category:business rate:0.70 unit:miles currency:USD effective_from:2026-01-01
rate_set jurisdiction:"US federal (EXAMPLE)" category:business rate:0.655 unit:miles currency:USD effective_from:2025-01-01
rate_set jurisdiction:"US federal (EXAMPLE)" category:medical rate:0.21 unit:miles currency:USD effective_from:2026-01-01
rate_set jurisdiction:"US federal (EXAMPLE)" category:charitable rate:0.14 unit:miles currency:USD effective_from:2026-01-01A 2025 trip then prices at 0.655 and a 2026 trip at 0.70, automatically. If your trips are in km and your rate is per mile (or the other way around), the distance is converted with the exact factor (1 mile = 1.609344 km) before pricing.
Free vs Pro
Free | Pro | |
Trips per calendar month | 20 | Unlimited |
Trip list and mileage summary | Yes | Yes |
Rates per jurisdiction and category | 1 (overwrite stays free) | Unlimited series |
CSV export for the accountant | No | Yes |
The monthly cap is counted on the month of the trip date, so reconstructing last year's log at tax time does not consume this month's allowance. The log itself is never metered: reading, listing and summarizing stay free for good.
Get Pro: https://mcp.zovo.one/buy/mileage-log, $19 one-time for this server, or $39 for the bundle.
Money and rounding
A trip's deductible amount is its distance times the effective rate, rounded half-up to the cent per trip, and every total is the sum of those rounded per-trip amounts: a total can never drift from the lines it is made of, and the CSV export reconciles line by line with the summary. The arithmetic is integer-only (distances as thousandths of a unit, rates as thousandths of a currency unit), so 12.5 miles at 0.70 a mile is exactly 875 cents, never 874.99999. Miles and km are kept apart and never added together; amounts are kept per currency and never mixed. When a trip's unit differs from the rate's, the distance is converted first (1 mile = 1.609344 km exactly) and rounded half-up to the thousandth of the rate's unit, then priced.
Privacy
All data stays local, in ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/mileage-log/. Three files: trips.json, rates.json, counter.json. Nothing is sent anywhere, there is no account, no API key and no network call in this server at all. License keys are verified offline. Nothing this server computes is tax advice; the rates you enter are your own figures to verify.
Built by theluckystrike. https://github.com/theluckystrike
Use these docs as an MCP server
Any MCP client (Claude, Cursor, Windsurf, VS Code) can read this repository's documentation directly via GitMCP - no install:
Docs MCP URL: https://gitmcp.io/theluckystrike/mcp-mileage-log
Available Tools
9 toolslicense_activateActivate licenseA
Activate a Pro key (MCPL1.xxx.yyy) from checkout: verified offline against a built-in public key, saved to your config file. A wrong, malformed or expired key is refused, unsaved. license_status reads it back.
Inputs: key (required).
license_statusLicense statusA
Report this server's licence state: product, tier free or pro, licence id, expiry, the key source and the upgrade URL. No arguments, no network. Explains a free-tier refusal; license_activate installs a key.
Inputs: no named parameters.
mileage_exportExport the log as CSV for an accountantA
The mileage log as CSV, one row per trip, oldest first: date, from, to, distance, unit, category, the rate applied (the one in force on the trip's day), the currency and the amount, plus purpose, jurisdiction, effective_from and id. The amount column is a bare number a spreadsheet reads. Refuses while any non-personal trip in the window is unpriced, so an accountant never receives a log with silent gaps. Pro.
Inputs: to_date, from_date.
mileage_summarySummarize a date rangeA
The deductible mileage for a date range, per category: trips, distance kept per unit, the rate each trip earned (the one in force on its day), and the deductible amount, totalled per currency. Trips with no applicable rate are listed with the reason, not silently dropped. Defaults to the current calendar year. Never metered.
Inputs: to_date, category, from_date.
rate_listList the rates on fileA
List every mileage rate on file, grouped by jurisdiction and category with the effective-from dates in order: the series each trip is priced from. Reads only.
Inputs: no named parameters.
rate_setSet a mileage rateA
Set what one mile or km is worth for one category in one jurisdiction from a date forward: the jurisdiction label, the category, the rate per unit, the currency, and the date it takes effect. Rates form a series per jurisdiction and category, and each trip earns the rate in force on the day it was driven. No rate ships with this server; the figures are yours to verify. Free tier: one rate per jurisdiction and category; the year-over-year series is Pro.
Inputs: rate (required), unit (required), category (required), currency (required), +2 more.
trip_addLog a tripA
Log one drive in the mileage log: the date, where from and to, the distance in miles or km, the purpose, and the category (business, medical, moving, charitable, personal). Returns its TR-YYYY-NNNN id. Free tier: 20 trips per calendar month, counted on the month of the trip date.
Inputs: to (required), date (required), from (required), unit (required), +5 more.
trip_listList tripsA
List trips in the mileage log, oldest first: date, from, to, distance, category, and the amount each earns under the rate in force on its day (or the plain reason it is unpriced). Filter by date range and category. Reads only.
Inputs: to_date, category, from_date.
trip_removeRemove a tripA
Remove one trip from the mileage log by its exact TR-YYYY-NNNN id, for entries made by mistake. The id is not reissued: a gap in the TR series is the record that a trip was removed.
Inputs: id (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 9 tools
The trip add/list/remove and rate set/list tools are clearly separated, and license_activate/status are distinct. mileage_summary and mileage_export both report trip data, but their descriptions differentiate totals versus raw CSV output, so only mild ambiguity exists.
Trip and rate tools consistently follow object_verb naming like trip_add, trip_list, rate_set, and rate_list. mileage_summary and license_status break the verb pattern with noun suffixes, but the object prefix and intuitive wording keep naming mostly predictable.
Nine tools cover trip entry/listing/removal, rate management, reporting/export, and licensing without redundant operations. This is a well-scoped set for a focused mileage-log server.
Core workflows are covered: log trips, configure rates, view summaries, export data, and manage licensing. The main gaps are the lack of a trip update/edit operation and no single-trip lookup by id, but users can remove and re-add trips and list all trips.
Maintenance
Related MCP Connectors
Log drives by purpose, apply your own dated rates, get deductible totals and a CSV for taxes.
Log business expenses with the VAT split and mileage, total them, export CSV or XLSX.
Track Australian work-related tax deductions: expenses, assets, car trips and work-from-home days.
Log expenses and export clean reports for tax time - your ledger never leaves your machine.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables managing personal vehicle history including mileage, maintenance, expenses, reminders, and document references through MCP tools and resources, all stored locally in SQLite.1MIT
- AlicenseBqualityBmaintenanceEnables agents to review local travel expenses against fictional policy rules, preview and build immutable XLSX/PDF/DOCX/ZIP claim packages, and track submission, approval, and reimbursement status. Runs entirely offline with SQLite storage, receipt imports, exports, and portable backups.6MIT
- AlicenseNot gradedqualityBmaintenanceEnables drivers to keep a spoken car logbook by starting and ending trips, recording odometer readings, purposes and destinations, and tracking business-use percentage and period rules for the Australian ATO 12-week logbook or the US IRS mileage log, with CSV export. It supports status checks, trip listing, late-entry flagging and closing a logbook.MIT
- AlicenseAqualityBmaintenanceEnables users to calculate 2026 US freelancer and sole-proprietor tax figures — quarterly estimated payments with safe harbor, self-employment tax, IRS due dates, mileage deductions, home office deductions, and SEP IRA vs Solo 401(k) contribution limits. Runs entirely locally with no API key, account, or network calls.8366 npmMIT