@prozari/mcp-server
v0.2.0
Published
Model Context Protocol server for Prozari — drive boards, cards, sprints and the social scheduler from Claude Code, Cursor, Codex, and any other MCP-aware AI tool.
Maintainers
Readme
@prozari/mcp-server
Drive Prozari boards from Claude Code, Cursor, Codex, or any other AI tool that speaks the Model Context Protocol.
Built for the "I just finished a task with Claude — add it to my board" workflow.
What you can do once it's connected
| Prompt | Tool the AI calls |
|---|---|
| "Add this fix as a completed card on the Atlas Bills Payment board, priority high" | create_card({ title, listId, priority: 'high', markCompleted: true }) |
| "What's on my plate today?" | list_my_cards({ scope: 'today' }) |
| "Move TASK-L8NV to Done" | move_card({ cardId: 'TASK-L8NV', listId: '<done-list-id>' }) |
| "Mark TASK-L8NV complete" | complete_card({ cardId: 'TASK-L8NV', completed: true }) |
| "Comment 'PR up' on TASK-L8NV" | add_comment({ cardId: 'TASK-L8NV', body: 'PR up' }) |
| "What lists does the Atlas Audit board have?" | list_lists({ boardId }) |
| "Draft a LinkedIn post about today's launch and send it for review" | create_social_post({ platform: 'LINKEDIN', body, socialAccountId }) |
| "What social posts are waiting for my approval?" | list_social_posts({ status: 'PENDING_APPROVAL' }) |
| "Approve post cm5x…" | approve_social_post({ postId }) |
| "How did our social posts perform this month?" | get_social_analytics_summary() |
Install
Most MCP clients spawn the server via npx, so there's nothing to install globally — Node 18+ is the only prerequisite.
# verify the package resolves on your machine (optional)
npx -y @prozari/mcp-server --helpIf you want it on $PATH:
npm install -g @prozari/mcp-server
prozari-mcp # binary namePrefer to hack on it? See Local development below.
Configure
Three env vars; only the first is required.
| Var | Required | What |
|---|---|---|
| PROZARI_TOKEN | yes | A pzr_… API token (recommended) or a JWT. See "Getting a token" below. |
| PROZARI_API_BASE | no | Defaults to https://api.prozari.com/api. Point this at http://localhost:3000/api for local dev. |
| PROZARI_WORKSPACE_ID | no | Default workspace ID so list_boards and list_my_cards don't need it on every call. |
| PROZARI_BOARD_ID | no | Default board ID so list_lists and create_card use it by default. |
Getting a token
Recommended — workspace API token (v0.2+)
- Open Prozari → Settings → API tokens
- + New token → name it ("MCP — laptop"), pick scopes (
*if you want full access), pick expiry - Copy the
pzr_…value once — it's hashed at rest and can't be shown again export PROZARI_TOKEN="pzr_…"in your shell rc
The token inherits your current UI permissions, so removing yourself from a board removes that board from the token's reach. No more 24-hour rotation.
Legacy — web app JWT
For quick smoke tests you can also use the JWT the web app stores in localStorage.tf_token. It expires every 24h.
Wire it into Claude Code
claude mcp add prozari -- npx -y @prozari/mcp-serverThen set the env vars (Claude Code passes the calling shell's environment through, so a one-time export in your shell rc is the simplest path):
# ~/.zshrc or ~/.bashrc
export PROZARI_TOKEN="eyJhbGciOiJIUzI1NiIs…"
export PROZARI_WORKSPACE_ID="cmd…"
export PROZARI_BOARD_ID="cmd…"Restart your shell, run claude, and ask "What lists does my default board have?" — you should see the AI call list_lists and return them.
Wire it into Cursor
Cursor uses the same MCP config shape; add to .cursor/mcp.json in your project root:
{
"mcpServers": {
"prozari": {
"command": "npx",
"args": ["-y", "@prozari/mcp-server"],
"env": {
"PROZARI_TOKEN": "eyJhbGciOiJIUzI1NiIs…",
"PROZARI_WORKSPACE_ID": "cmd…"
}
}
}
}Wire it into Codex / OpenAI
Codex follows the same MCP spec; consult OpenAI's MCP docs for the latest config path. The command + args shape is identical.
Tools
Discovery
| Name | Purpose |
|---|---|
| list_workspaces | List workspaces the user belongs to |
| list_boards | List boards in a workspace |
| list_lists | List lists (columns) on a board, with card counts |
| get_default_target | Echo the configured default workspace + board IDs |
Cards
| Name | Purpose |
|---|---|
| create_card | Create a card; supports markCompleted: true for log-what-I-just-did flows |
| update_card | Patch any combination of title / description / priority / dueDate / points |
| move_card | Move to a different list; the server-side workflow auto-sets completedAt on Done lists |
| complete_card | Flip the Mark-Complete toggle; respects workspace auto-archive policy |
| list_my_cards | List cards assigned to the authenticated user; filter by today / overdue / this-week |
| add_comment | Add a comment to a card (supports @name mentions) |
Social scheduler
The differentiating tool family. No other PM-tool MCP integration lets an AI client drive the full draft → review → publish → analyse lifecycle.
| Name | Purpose |
|---|---|
| list_social_accounts | Discover connected Facebook Pages, Instagram Business accounts, LinkedIn organisations |
| list_social_posts | List posts in a workspace, optionally filtered by status / date range. Reviewer-friendly. |
| create_social_post | Create a post. Status derived server-side: PENDING_APPROVAL when workspace policy is on, else SCHEDULED or DRAFT based on scheduledAt. |
| approve_social_post | OWNER/ADMIN approves a pending post (server enforces non-self-approval) |
| reject_social_post | OWNER/ADMIN rejects a pending post; optional reason persists on the bounced draft |
| get_social_analytics_summary | Trailing-30-day workspace summary: totals, per-platform breakdown, top-5 posts by engagement |
Local development
git clone <repo-url> prozari-mcp
cd prozari-mcp
npm install
npm run build # one-shot build
npm run dev # tsc --watchSmoke test without an AI client — pipe a list_tools request and see the schemas:
PROZARI_TOKEN=dummy node dist/index.js <<'EOF'
{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}
EOFThe server will print a single JSON-RPC response listing all 16 tools and exit.
Version history
v0.2.0 (current)
PROZARI_TOKENnow accepts workspace-scopedpzr_…API tokens minted in Settings → API tokens- Tokens inherit issuer's UI permissions; removal from a workspace revokes implicitly
- Legacy JWT path still works for smoke tests
- No change to tool surface — all 16 tools work unchanged
v0.1.1
- Six social-scheduler tools added (see "Social scheduler" above)
v0.1.0
- Initial release with 10 board + card tools
Roadmap
v0.3 — Per-route scope enforcement on legacy /api
- Today: a
pzr_…token with any scope works on legacy endpoints (whatever the issuer can do) - v0.3: legacy routes start checking
cards:write,social:approve, etc.
v0.4 — Polish
- Webhooks (reverse direction: Prozari → AI tool when cards are assigned)
- Claude Code skill manifest so users get a
/prozarislash command without configuring MCP manually - Streaming responses for long-running list calls
License
MIT © Right Pitch Nigeria Limited
