MCP · Read-only · Local

TowBook MCP

A local assistant tool for a TowBook account you already log into. It retrieves dispatch data. It does not create, change, or delete calls.

GitHub

How it works

TowBook does not publish an API for this. The dispatch site already calls a JSON API at app.towbook.com. This server makes those same read calls, using the browser session cookie, and exposes them as MCP tools.

Claude Desktop, Claude Code, and the ChatGPT desktop app (Codex or Work) start the process on your machine over stdio. Writes are refused. One report query is a POST because TowBook has no GET for it, and that query cannot create or change a call.

The dispatch board summary is short on purpose. A separate read can return the payroll row (driver, truck, invoice, payments, balance, commission) and the two fields that report leaves blank: internal billing notes and account notes. Payments include the type, so cash, check, and card stay distinct. Nothing is created or changed.

Get the cookie

The cookie is the session. Treat it like a password. You need a TowBook login.

  1. In Brave or Chrome, open app.towbook.com and log in. Land on Dispatching.
  2. Open DevTools. On a Mac: View, Developer, Developer Tools, or press Command-Option-I.
  3. Open the Network tab. If it is empty, reload the dispatch page. Reloading only reads.
  4. Click Fetch/XHR, or type app.towbook.com in the filter.
  5. Click a request named quotes, callRequests/, or companydispatchstatuses. Skip Google, Sentry, and Pusher.
  6. Open Headers. Under Request Headers, find Cookie.
  7. Copy the value only: the text after Cookie:, every name=value pair. Do not copy the response body.
  8. Save that one line to ~/.config/towbook-mcp/cookie.txt and run chmod 600 on the file. Do not paste it into chat, Slack, or git.

The cookie dies when you log out or when TowBook expires the session. If a tool says to refresh the cookie, repeat these steps.

Install locally

Node 20 or newer. Clone the repo, install, then check the session. The check prints a status line. It does not print the cookie or the response.

git clone https://github.com/ZRApps/towbook-mcp.git towbook-mcp
cd towbook-mcp
npm install
node src/check.js

A line starting with ok means the session works.

Connect Claude

Quit Claude Desktop. Edit ~/Library/Application Support/Claude/claude_desktop_config.json and merge this into mcpServers. Replace both paths. Restart Claude Desktop.

{
  "mcpServers": {
    "towbook": {
      "command": "node",
      "args": ["/ABSOLUTE/PATH/TO/towbook-mcp/src/index.js"],
      "env": {
        "TOWBOOK_COOKIE_FILE": "/Users/YOU/.config/towbook-mcp/cookie.txt"
      }
    }
  }
}

Claude Code, from any directory:

claude mcp add --transport stdio \
  --env TOWBOOK_COOKIE_FILE=$HOME/.config/towbook-mcp/cookie.txt \
  towbook -- node /ABSOLUTE/PATH/TO/towbook-mcp/src/index.js

If that flag set differs in your version, put the same JSON in .mcp.json. Restart the session. Ask it to list dispatch statuses, not to change a call.

Connect ChatGPT

Standard Chat, and the older ChatGPT Classic app, cannot launch a local stdio server. They only attach to remote HTTP connectors. This server is not on the internet, and it should not be. A public tunnel would send the session's data off the machine.

Use the current ChatGPT desktop app, in Codex or ChatGPT Work:

  1. Open Settings and find Add MCP Server.
  2. Name: towbook. Type: STDIO.
  3. Command: node /ABSOLUTE/PATH/TO/towbook-mcp/src/index.js
  4. Environment: TOWBOOK_COOKIE_FILE set to the cookie file path above.
  5. Save. In a Codex or Work thread, ask for a read, such as dispatch statuses.

If the dialog has no STDIO type, you are in standard Chat. Switch to Codex or Work. Do not paste a public URL.

Repository

Source: github.com/ZRApps/towbook-mcp. MIT license. The cookie stays on your machine. It is not in the repository.

Public · MIT