zube-mcp
MCP server for the Zube.io project management API, exposing boards, cards, epics, tickets, sprints, and workspaces as tools for AI assistants.
README
zube-mcp
MCP server for the Zube.io project management API. Exposes Zube boards, cards, epics, tickets, sprints, and workspaces as tools that AI assistants can call.
Setup
Prerequisites
- Python 3.10+
- uv:
- macOS:
brew install uv - Windows:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"orwinget install astral-sh.uv - Any platform:
pip install uv
- macOS:
- SSH access to this GitHub repo
1. Get your Zube API credentials
- Go to Zube.io → Account Settings → API Keys
- Create a new API key — this gives you a Client ID and a private key file (PEM)
- Save the private key somewhere safe (e.g.
~/.zube/private-key.pem)
2. Configure in Cursor
Add to your .cursor/mcp.json (project-level or global ~/.cursor/mcp.json):
{
"mcpServers": {
"zube": {
"command": "uvx",
"args": ["--from", "git+ssh://git@github.com/reachreporting/zube-mcp", "zube-mcp"],
"env": {
"ZUBE_CLIENT_ID": "your-client-id-here",
"ZUBE_PRIVATE_KEY_PATH": "/path/to/your/private-key.pem"
}
}
}
}
Replace the env values with your own Zube credentials. uvx will install the package directly from GitHub — no clone needed.
To pin a specific version, tag a release and append it to the URL:
git+ssh://git@github.com/reachreporting/zube-mcp@v0.3.0
Alternative: local install
If you prefer to clone and run locally:
git clone git@github.com:reachreporting/zube-mcp.git
cd zube-mcp
pip install -e .
Then point the Cursor config at your local path:
"args": ["--from", "/path/to/zube-mcp", "zube-mcp"]
Development
Making changes
After editing the source code, you must bump the version in pyproject.toml for Cursor to pick up changes. This is because uvx caches the built package by version — if the version hasn't changed, it serves the stale cached copy.
# 1. Edit code in zube_mcp/
# 2. Bump version in pyproject.toml (e.g. 0.2.0 → 0.3.0)
# 3. Commit and push
# 4. In Cursor: Settings → MCP → toggle zube off, then on
To verify your changes locally before restarting Cursor:
uvx --from . python3 -c "
from zube_mcp.server import mcp
import inspect
from zube_mcp.server import list_cards
print(inspect.signature(list_cards))
"
Zube API reference
Full API docs: https://zube.io/docs/api
Key concepts for adding new filters:
- List endpoints support
where[field]=valuequery params for filtering - The
_build_params()helper inserver.pyconverts awheredict into these query params automatically - Array filters (e.g.
assignee_ids) usewhere[field][]=value(handled by_build_paramswhen the value is a list) - Card numbers (the
#12345visible in the UI) are distinct from internal card IDs — usewhere[number]to filter by the visible number
Known Zube API quirks
get_cardrequires the internal card ID, not the visible card number. Useget_card_by_numberto look up by the human-visible#number.search_keyon list endpoints is a full-text search and can be unreliable for finding cards by number.- List responses return items in
dataarray with apaginationobject. - Rate limit: 1 request/second. Short bursts are tolerated but sustained higher rates will be rejected.
Available Tools
Person & Accounts
| Tool | Description |
|---|---|
get_current_person |
Get the authenticated user's profile |
list_accounts |
List organizations the user belongs to |
get_account |
Get details for a specific account |
Projects
| Tool | Description |
|---|---|
list_projects |
List projects (optionally by account) |
get_project |
Get project details |
create_project |
Create a new project |
Workspaces (Kanban Boards)
| Tool | Description |
|---|---|
list_workspaces |
List workspaces (optionally by project) |
get_workspace |
Get workspace details |
create_workspace |
Create a new workspace |
Cards (Issues / PRs)
| Tool | Description |
|---|---|
list_cards |
List cards with filters (project, workspace, sprint, epic, number, state, search) |
list_project_cards |
List cards scoped to a project (also supports number filter) |
list_triage_cards |
List cards in a project's triage |
get_card |
Get full card details by internal ID |
get_card_by_number |
Look up a card by its visible #number (e.g. 15293) |
create_card |
Create a card |
update_card |
Update a card |
move_card |
Move a card to a column or triage |
archive_card |
Archive a card |
Card Comments
| Tool | Description |
|---|---|
list_card_comments |
List comments on a card |
create_card_comment |
Add a comment |
update_card_comment |
Edit a comment |
delete_card_comment |
Delete a comment |
Epics
| Tool | Description |
|---|---|
list_epics |
List epics for a project |
get_epic |
Get epic details |
create_epic |
Create an epic |
update_epic |
Update an epic |
list_epic_cards |
List cards in an epic |
Sprints
| Tool | Description |
|---|---|
list_sprints |
List sprints for a workspace |
get_sprint |
Get sprint details |
create_sprint |
Create a sprint |
update_sprint |
Update a sprint |
Tickets
| Tool | Description |
|---|---|
list_tickets |
List tickets for a project |
get_ticket |
Get ticket details |
create_ticket |
Create a ticket |
update_ticket |
Update a ticket |
Labels & Members
| Tool | Description |
|---|---|
list_labels |
List project labels |
create_label |
Create a label |
list_sources |
List connected GitHub repos |
list_project_members |
List project members |
list_account_members |
List account members |
Architecture
zube_mcp/
auth.py # RS256 JWT creation for Zube's refresh token flow
client.py # Async HTTP client with automatic token management
server.py # FastMCP tool definitions (40 tools)
The auth flow:
- Sign a 60-second JWT with your private key
- Exchange it at
POST /api/users/tokensfor a 24-hour access token - The client auto-refreshes when the token is near expiry
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。