Zenkit
FreeNot checkedEnables managing Zenkit collections and entries through natural language commands, including listing, creating, updating, and deleting entries.
About
Enables managing Zenkit collections and entries through natural language commands, including listing, creating, updating, and deleting entries.
README
Direct Zenkit API access for Claude Desktop. Full control via single universal tool.
Installation
Quick Start
git clone https://github.com/wbgrds/mcp-zenkit.git
cd mcp-zenkit
npm install
npm run build
Claude Desktop Configuration
Edit ~/.config/Claude/claude_desktop_config.json (macOS/Linux) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"zenkit": {
"command": "node",
"args": ["/path/to/mcp-zenkit/dist/index.js"],
"env": {
"ZENKIT_API_KEY": "your-zenkit-api-key"
}
}
}
}
Get your API key from Zenkit Developer Settings.
Restart Claude Desktop after configuration.
Usage
Single tool: zenkit(method, path, body)
Get Workspaces
zenkit('GET', '/workspaces')
Response: All workspaces + lists
Get Lists in Workspace
zenkit('GET', '/workspaces/123')
Get List Fields (Elements)
zenkit('GET', '/lists/123/elements')
Returns: Field names, UUIDs, types, predefined values (for categories)
List Entries
zenkit('POST', '/lists/123/entries', {
limit: 100,
skip: 0
})
Create Entry
zenkit('POST', '/lists/123/entries', {
title: "My Task",
description: "Optional description",
properties: {
"field-uuid-1": "value",
"field-uuid-2": 123,
"field-uuid-3": ["array", "of", "values"]
}
})
To find field UUIDs: zenkit('GET', '/lists/123/elements')
Update Entry
zenkit('PATCH', '/lists/123/entries/entry-uuid', {
title: "Updated Title",
properties: {
"field-uuid": "new-value"
}
})
Delete Entry
zenkit('DELETE', '/lists/123/entries/entry-uuid')
Architecture
Version 2.0 (Approach B: Raw API)
- One universal tool
zenkit(method, path, body) - Direct pass-through to Zenkit API
- No abstraction layer, no hidden logic
- Token-based auth = full account control
What changed from v1:
- Removed:
zenkit_create_entry,zenkit_update_entry,zenkit_get_entries, etc. - Added: Single
zenkittool for all operations - Benefit: Works for any Zenkit API endpoint (present + future)
API Reference
Full Zenkit API docs: https://zenkit.com/api/
Common Endpoints
| Operation | Method | Path | Body |
|---|---|---|---|
| List workspaces | GET | /workspaces |
— |
| Get workspace | GET | /workspaces/{id} |
— |
| List entries | POST | /lists/{id}/entries |
{limit, skip} |
| Get fields | GET | /lists/{id}/elements |
— |
| Create entry | POST | /lists/{id}/entries |
{title, properties} |
| Update entry | PATCH | /lists/{id}/entries/{uuid} |
{title, properties} |
| Delete entry | DELETE | /lists/{id}/entries/{uuid} |
— |
Examples
Workflow: Create and Update
1. zenkit('GET', '/workspaces')
→ Find workspace ID
2. zenkit('GET', '/lists/123/elements')
→ Find field UUIDs you need
3. zenkit('POST', '/lists/123/entries', {
title: 'New Task',
properties: { 'field-uuid': 'value' }
})
→ Create entry, get entry UUID back
4. zenkit('PATCH', '/lists/123/entries/entry-uuid', {
title: 'Updated Task'
})
→ Update the entry
Working with Categories (Dropdowns)
When predefinedValues are present in get_list_fields response, they are category options:
{
"name": "Status",
"uuid": "a1b2c3d4-...",
"predefinedValues": [
{ "id": 1, "name": "Draft" },
{ "id": 2, "name": "In Progress" },
{ "id": 3, "name": "Done" }
]
}
Use the id value when setting properties:
zenkit('POST', '/lists/123/entries', {
title: 'Task',
properties: {
'a1b2c3d4-...': 2 // ← Category ID for "In Progress"
}
})
Troubleshooting
Error: "ZENKIT_API_KEY is required"
Make sure environment variable is set:
- Check
claude_desktop_config.jsonhasZENKIT_API_KEYinenv - Restart Claude Desktop
- Check API key is valid (from Zenkit Developer Settings)
Error: "Zenkit API error 404"
Path is wrong or resource doesn't exist.
- Check path syntax:
/lists/123/entries(notlists/123/entries) - Verify list ID, entry UUID, etc. exist
- Use
zenkit('GET', '/workspaces')to discover IDs
Error: "Field UUID not found"
When setting properties, make sure UUID is correct:
zenkit('GET', '/lists/123/elements') // Get correct UUIDs first
Environment Variables
ZENKIT_API_KEY(required): Zenkit API tokenZENKIT_API_BASE(optional): Override API base URL (default:https://base.zenkit.com/api/v1)
Development
# Install dependencies
npm install
# Build TypeScript
npm run build
# Run locally (requires ZENKIT_API_KEY env var)
ZENKIT_API_KEY=xxx npm run start
License
MIT
Support
- Zenkit API docs: https://zenkit.com/api/
- Issues: https://github.com/wbgrds/mcp-zenkit/issues
Complete Documentation
- README.md – Installation & Quick Start
- CHANGELOG.md – Version History & Migration Guide (v1 → v2)
- TOOL_REFERENCE.md – Comprehensive Tool Usage & Examples
- Zenkit API Docs – Official API Reference
Installing Zenkit
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/wbgrds/mcp-zenkitFAQ
Is Zenkit MCP free?
Yes, Zenkit MCP is free — one-click install via Unyly at no cost.
Does Zenkit need an API key?
No, Zenkit runs without API keys or environment variables.
Is Zenkit hosted or self-hosted?
A hosted option is available: Unyly runs the server in the cloud, no local setup required.
How do I install Zenkit in Claude Desktop, Claude Code or Cursor?
Open Zenkit on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare Zenkit with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
