@getzulu/mcp
v0.2.0
Published
getzulu MCP server — exposes the Zulu API v1 to Claude
Maintainers
Readme
getzulu MCP Server
A local MCP server (name: getzulu) that
exposes the Zulu API v1 to MCP clients such as Claude
Desktop and Claude Code. Ask about — and manage — your clients, products,
invoices, purchase orders, opportunities, stock, forms, and more, in plain
language.
It authenticates with a zulu_* Bearer token, so everything is scoped to that
token's account. Get a token from your Zulu dashboard under Settings → API.
For the same tools from the terminal, see the companion CLI,
@getzulu/cli.
Connect to Claude Code
claude mcp add getzulu -e ZULU_API_TOKEN=zulu_… -- npx -y @getzulu/mcpConnect to Claude Desktop
Add this to claude_desktop_config.json (Settings → Developer → Edit
Config), then restart Claude Desktop:
{
"mcpServers": {
"getzulu": {
"command": "npx",
"args": ["-y", "@getzulu/mcp"],
"env": {
"ZULU_API_TOKEN": "zulu_…"
}
}
}
}Then ask: "What Zulu account am I connected to?", "List my Zulu clients", or "Add a note to Acme's client record."
Configuration
ZULU_API_TOKEN is the only required setting — a zulu_* Bearer token from
your Zulu dashboard (Settings → API). Requires Node.js 18+.
Set ZULU_READONLY=1 to expose only the safe read tools — the server will
then advertise no way to modify your data. Useful when an agent should be able
to look but never touch.
Tools
The server exposes the full Zulu API as tools named <resource>_<action>,
generated directly from the API's OpenAPI spec — so the tool set tracks the API
and stays in sync. Read tools (_list, _get) are annotated readOnlyHint;
write tools (_create, _update, _add, _remove, …) are not, and deletes
carry destructiveHint, so clients can surface confirmations appropriately.
| Resource | Tools |
|---|---|
| Account | tenant_info, account_modules |
| Clients & suppliers | client_list/get/create/update, supplier_list/get/create/update |
| Products | product_list/get/create/update, product_taxonomy, product_price_update, product_category_*, product_tag_*, product_image_upload, category_* |
| Sales & purchasing | invoice_* (+ invoice_line_*), porder_* (+ porder_line_*) |
| Pipeline | opportunity_list/get/create, opportunity_stage_list/set |
| Projects & content | jobcard_*, post_*, note_list/create |
| Inventory | inventory_stock, inventory_stock_adjust |
| Forms & files | form_*, submission_*, file_upload |
Each tool declares a full JSON Schema of its parameters (filters, pagination,
body fields), which MCP clients discover automatically. Resources are addressed
by token (returned by the matching list tool), never by numeric id.
Verify with MCP Inspector (optional)
npx @modelcontextprotocol/inspector npx -y @getzulu/mcp(set ZULU_API_TOKEN in the Inspector's environment panel.)
Notes
- Read and write. The server can create and update Zulu data. Read tools
are annotated
readOnlyHint; deletes carrydestructiveHint. SetZULU_READONLY=1to expose read tools only. - Scoped to your token. Every call is scoped to the token's account.
- Local stdio transport. Your token stays on your machine; the server talks directly to your Zulu instance.
License
MIT
