Skip to main content

Use Broome Projects MCP

Broome Projects MCP is a read-only local MCP server that lets an AI agent inspect FileTag Kanban work through natural-language questions. It can show what is ready, blocked, assigned to you, expensive, highest-impact to unblock, or inside one known card without giving the agent direct database access.

The package is currently private and unpublished. Install it from a local checkout.

Prerequisites

  • Node.js 20 or newer.
  • A FileTag PAT with the kanban:read scope. Use the secret beginning with ftag_pat_, not the token UUID shown by internal administration screens.
  • Access to the target FileTag environment.

Build the local checkout

cd /absolute/path/to/broome-projects-mcp
npm ci
npm run build
npm test
npm run typecheck

Register it with Claude Code

claude mcp add broome-projects-mcp \
-e FILETAG_API_KEY=<your-ftag-pat> \
-- node /absolute/path/to/broome-projects-mcp/dist/index.js

For protected staging:

claude mcp add broome-projects-mcp \
-e FILETAG_API_URL=https://staging.filetag.ai \
-e FILETAG_API_KEY=<your-ftag-pat> \
-e VERCEL_AUTOMATION_BYPASS_SECRET=<your-bypass-secret> \
-- node /absolute/path/to/broome-projects-mcp/dist/index.js

Never commit either secret. The Vercel bypass is needed only for an environment protected by Vercel Deployment Protection.

Ask naturally

You do not need to know the MCP tool names. Ask questions such as:

  • “Which CI-1 subtasks are still open?”
  • “What do I need to implement in CI-11?”
  • “What is blocking AUTH-4?”
  • “Considering my cards and unassigned work, what should I pick up next?”
  • “What should I finish first to unblock the most work?” — answered by one unlock call. Each card reports how many blocked cards become ready the moment it is done, and how many downstream cards depend on it transitively.
  • “What has the agent changed recently?” — answered by one activity call. Each entry says what happened, to which card, whether it succeeded, and which token issued it when the call carried one.
  • “Find cards or documents mentioning device authorization.”

For a known identifier such as CI-11, the MCP reads the card's structured neighborhood in one call: subtasks, completion state, dependencies, dependents, document summaries, linked files, and attachments. It fetches a full subtask document only when the answer needs its implementation detail.

How unlock impact is measured

Two different numbers travel with every card:

  • Becomes ready counts the direct dependents that are startable the moment this card is done. A dependent still waiting on another unfinished card is not counted.
  • Downstream reach counts the distinct downstream cards that depend on this one, directly or through a chain, once each. It is a measure of how much work sits behind this card — not a prediction that all of it becomes ready.

Both numbers are counted only over the cards you can see, at every step of the chain. Work that is reachable only through a card on a board you cannot open is left out, so both numbers are lower bounds rather than a complete picture. This is deliberate: the privacy boundary is preserved even at the cost of an undercount. Completed cards report zero and are never counted as downstream of anything.

What search covers

Keyword search covers:

  • card titles and descriptions;
  • subtask titles;
  • subtask-document names and text content;
  • attached file names.

It does not search binary file contents, external websites, or semantic similarity. Phase 1 uses lexical Postgres full-text search; pgvector hybrid search is planned separately.

What the activity feed covers

The activity feed reads the Kanban API's audit trail, newest first, and can be narrowed by action, outcome, or target type. Four things are worth knowing before you rely on it.

It covers only what you can see. Every entry is filtered by workspace membership and by board visibility. An entry whose card sits on a board you cannot open does not appear at all.

It records API calls, not every possible change. Writes that go through the Kanban API's audited operations show up. A writer that updates its table directly does not — the older in-app comment action is the known example and never appears here. Treat a missing entry as "not recorded", never as proof that nothing happened.

A token names the caller; its absence names nobody. An entry that carries a token came in over the API, and the token identifies who is responsible for it. An entry with no token only means none was recorded — it is not evidence that a person made the change in the browser.

Card and subtask names are resolved when you read. Each entry keeps the target's stable id, and the readable name is looked up from the record as it stands right now. Rename a subtask and every older entry about it reads with the new name. The facts that do not move — what happened, to which id, with what outcome, and when — are the ones stored with the entry.

Entries link back to the board. Each entry carries card_id and board_id when the target's board is visible to you, so a feed line can be opened directly at …/boards/{board_id}?card={card_id}. Entries without a board — workstream changes, or failed calls whose target never resolved — carry null for both, and a hidden board looks exactly the same as no board at all.

Troubleshooting

401 Invalid or missing token

Confirm FILETAG_API_KEY contains the PAT secret beginning with ftag_pat_. A token UUID is an identifier, not a bearer credential.

403 Insufficient scope

Issue a PAT that includes kanban:read.

404 Not found on staging

The token may not be admitted by the current canary rollout. This is separate from authentication and must be resolved by the staging administrator.

401 Protected deployment

The request reached Vercel Deployment Protection before FileTag. Configure VERCEL_AUTOMATION_BYPASS_SECRET for protected staging only.

The old MCP name or path still appears

Remove the old registration and add broome-projects-mcp using the renamed checkout path. The active binary must be /absolute/path/to/broome-projects-mcp/dist/index.js.

Current limits

  • Read-only: the MCP cannot create, move, complete, or edit work.
  • The single-card intel enrichment can miss its aggregate intel row in a workspace with more than 200 accessible cards; structural card data still returns.
  • Search is lexical, not semantic.
  • The package is private and unpublished, so local checkout registration is required.