A side-by-side look at the Casefile and ProductBrain MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Casefile for product management work over a hosted endpoint; choose ProductBrain for product management as a local process. You can also run both side by side in one mcpServers block.
get_task, search_tasks, create_task.PRODUCTBRAIN_API_KEY, PRODUCTBRAIN_PROJECT_ID, PRODUCTBRAIN_API_URL.search, list_nodes, get_tree.Rows where the two servers differ are marked.
| Spec | P ProductBrain | |
|---|---|---|
| Category | Product Management | Product Management |
| Quality signal | 53/100 · Good | 56/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Remote HTTP/SSE | Local subprocess (stdio) |
| Auth | Not declared | API key required |
| Pricing | Not declared | BYOK (pay the provider) |
| Required env vars | None listed | PRODUCTBRAIN_API_KEYPRODUCTBRAIN_PROJECT_IDPRODUCTBRAIN_API_URL |
| Verified owner | Community listing | Community listing |
| GitHub stars | 6 | 0 |
| Directory activity | 0 views 0 installs 0 upvotes | 0 views 0 installs 0 upvotes |
| Tools | 32 | 26 |
| Full listing | View Casefile | View ProductBrain |
get_taskreturns everything about one task in a single call: card, parent and children, links, computed features, latest summary, open questions, unresolved remarks, its discussions, case index and transition targetssearch_taskssearches tasks by a query-language string, by separate conditions, or by bothcreate_taskcreates a task in `backlog` in an area of its project (`area_required` without one), optionally as a child of a parent taskupdate_taskchanges the given fields of a task; fields left out stay as they aretransitionmoves a task to another status along the fixed transition tableclose_taskcloses a task: files entries, verdicts and the final summary and moves it to `done`, in one transactionmove_taskmoves a task, or each task of a list with an outcome per key, to another project with a reason; its previous key keeps leading to itread_entriesreturns entry bodies of one task's case, with payload, in number orderadd_summaryfiles a summary: the handover note of a case, in four partsadd_entryfiles an entry without payload: a decision, attempt, finding, artifact, remark or noteaskfiles a question to registry participants in a discussion; asked about a task, it opens the discussion and attaches the task in the same callansweranswers a question of a discussion or of a task's case, or closes one still unanswered as `withdrawn` or `replaced` by a later question, with a reason; an answered question cannot be withdrawnsearchSemantic search — **use first** for any lookuplist_nodesBulk read, optional type/iteration filterget_treeA node in context (ancestors/siblings/children/subtree)mutateCreate/update/delete nodes + phases; pass `idempotencyKey` to make retries safelist_iterationsPhases; `current:true` for the active onerun_workflowStory-Mapping methodology (add / task-curate / phase-assign)export_okfThe plan as a portable OKF file bundleget_changelogPlan history: every add/update/delete/restore, attributed to the app or a named agentset_viewDrive / read the live canvaslist_projectsProjects you own or are a member of; `includeArchived` for the restcreate_projectBootstrap a brain — seeds the system "Later" phase. Pass an explicit `id`: `addProject` runs before mutate reads `Idempotency-Key`, so it is not retry-saferename_projectChange the display name; the id is immutablePaste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"casefile": {
"url": "http://localhost:8100/mcp"
}
}
}
{
"mcpServers": {
"productbrain": {
"command": "npx",
"args": [
"-y",
"@productbrain-com/mcp"
],
"env": {
"PRODUCTBRAIN_API_KEY": "YOUR_PRODUCTBRAIN_API_KEY_HERE",
"PRODUCTBRAIN_PROJECT_ID": "YOUR_PRODUCTBRAIN_PROJECT_ID_HERE",
"PRODUCTBRAIN_API_URL": "YOUR_PRODUCTBRAIN_API_URL_HERE"
}
}
}
}