mcp-zenkit
This server provides a single universal zenkit(method, path, body) tool for direct, raw access to the Zenkit API, supporting any current or future endpoint.
Explore workspaces: List all workspaces and their associated lists/projects, or fetch details for a specific workspace
Browse list fields: Retrieve field definitions (names, UUIDs, types, and predefined category values) for any list
Read entries: Fetch entries from any list with pagination support (limit/skip)
Create entries: Add new entries with titles, descriptions, and custom field properties (text, numbers, arrays, category dropdowns)
Update entries: Modify existing entries (title and/or specific field values) via PATCH
Delete entries: Remove entries from any list by UUID
Category/dropdown management: Set predefined category values using their numeric IDs
Full HTTP method support: Use GET, POST, PATCH, PUT, and DELETE for any valid Zenkit API endpoint
The pass-through design replaces multiple specialized tools with one consistent interface, ensuring compatibility with both current and future Zenkit API endpoints.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-zenkitList all my Zenkit collections"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Zenkit MCP Server (Raw API)
Direct Zenkit API access for Claude Desktop. Full control via single universal tool.
Installation
Option 1: Automated Installation (Recommended)
Using Node.js:
curl -O https://raw.githubusercontent.com/wbgrds/mcp-zenkit/main/install.js
node install.jsUsing Bash:
bash <(curl -s https://raw.githubusercontent.com/wbgrds/mcp-zenkit/main/install.sh)In Claude Code:
Open this repo in Claude Code
Say: "Run install.js"
Provide your Zenkit API key
Done!
The installer will:
Clone the repository
Install Node dependencies
Create
.envwith your API keyBuild TypeScript → JavaScript
Test the MCP server
Output Claude Desktop configuration
Option 2: Manual Installation
# 1. Clone repo
git clone https://github.com/wbgrds/mcp-zenkit.git
cd mcp-zenkit
# 2. Install dependencies
npm install
# 3. Build TypeScript
npm run build
# 4. Create .env with your API key
echo "ZENKIT_API_KEY=your-api-key" > .envConfigure Claude Desktop
Find your configuration file:
macOS/Linux:
~/.config/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonEdit or create it with:
{
"mcpServers": {
"zenkit": {
"command": "node",
"args": ["/path/to/mcp-zenkit/dist/index.js"],
"env": {
"ZENKIT_API_KEY": "your-zenkit-api-key"
}
}
}
}Replace /path/to/mcp-zenkit with your actual installation path.
Get your API key: https://zenkit.com/en/user/profile/developer/
Restart Claude Desktop after configuration.
Related MCP server: Vikunja MCP Server
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 operationsBenefit: 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 |
| — |
Get workspace | GET |
| — |
List entries | POST |
|
|
Get fields | GET |
| — |
Create entry | POST |
|
|
Update entry | PATCH |
|
|
Delete entry | DELETE |
| — |
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 entryWorking 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
Problem | Cause | Solution |
"ZENKIT_API_KEY is required" | Environment variable missing | Check |
"npm: command not found" | Node.js not installed | Install Node.js >= 18 from nodejs.org |
"Git clone fails" | Git not installed | Install Git |
"Claude doesn't see tool" | Config not reloaded | Restart Claude Desktop completely |
"Zenkit API error 404" | Wrong path or resource doesn't exist | Use |
"Field UUID not found" | UUID is incorrect | Get correct UUIDs via |
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 startLicense
MIT
Support
Zenkit API docs: https://zenkit.com/api/
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
Available Tools
1 toolzenkitB
Raw Zenkit API access. Complete control over any Zenkit operation via direct API calls. Pass method, path, and optional body.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Request body for POST/PATCH/PUT operations (optional for GET/DELETE) | |
| path | Yes | Zenkit API path (e.g., /workspaces, /lists/123/entries, /lists/123/elements). Full path without base URL. | |
| method | Yes | HTTP method |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose any behavioral traits such as destructiveness, idempotency, or error handling. Without annotations, this is a significant gap for a raw API tool that can perform arbitrary operations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with no wasted words. The purpose is front-loaded effectively.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Missing key information: no mention of return value format, error handling, authentication, or preconditions. For a raw API tool with no output schema, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description merely repeats parameter names without adding meaningful context beyond the schema descriptions. No additional format or constraint details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides raw access to the Zenkit API with complete control over any operation. This is a specific and unambiguous purpose, distinguishing it as a low-level gateway.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is given. It implies advanced usage via 'Complete control' but lacks alternatives or context for choosing this tool over higher-level abstractions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v1.0.0- First observed
zenkit
TDQS
Scored across 1 tool
Only one tool exists, so there is no possibility of confusion between tools. The tool's purpose is clearly defined as raw API access.
With only one tool named 'zenkit', there is no inconsistency. The name matches the server's domain and is clear.
A single tool for a server providing Zenkit access feels thin. While the tool is powerful, it lacks specialization, making the set minimal.
The tool provides raw API access to all Zenkit operations, offering complete coverage of the domain. No obvious gaps exist.
Maintenance
Related MCP Connectors
Manage projects, tasks, time tracking, and team collaboration through natural language.
Streamline your Attio workflows using natural language to search, create, update, and organize com…
Manage Superlist tasks and lists in plain language from any MCP-compatible AI agent.
Interact with your Google Cloud Firestore resources using natural language commands.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables task and board management in Focalboard through natural language, supporting board operations, card creation/updates, and column movements with automatic authentication and user-friendly property names.104-
- AlicenseBqualityDmaintenanceEnables interaction with Vikunja task management instances through natural language. Supports comprehensive project and task operations including CRUD, assignments, labels, comments, relations, and attachments.3316 npm2MIT
- FlicenseCqualityDmaintenanceEnables managing todo lists and tasks through natural language, supporting creation, status changes, and deletion.7-
- AlicenseNot gradedqualityBmaintenanceEnables managing Nextcloud tasks through natural language, including creating, updating, completing, and deleting tasks.MIT