Workel MCP Server
OfficialClick on "Install 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., "@Workel MCP ServerWhat tasks are due this week?"
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.
Workel MCP Server
The official Model Context Protocol server
for Workel — a thin, stateless client of the
Workel Public API v1. It exposes a Workel
workspace to AI agents (Claude, the OpenAI Agents SDK, or any other
MCP-speaking client) as a small set of well-scoped tools. Every rule that
actually matters — what this key can see, what it can write, how fast it can
write it — lives in the Workel API itself; this package holds no authority
the key doesn't already have. A curl request made with the same key can do
exactly what this server can do, no more.
For full per-client setup (Claude Desktop, Claude Code, project-scoped
.mcp.json, and the OpenAI Agents SDK), see
the Workel developer docs.
Using Claude? You probably don't need this package
Workel runs a hosted MCP server. Add it in Claude under Settings → Connectors → Add custom connector:
https://mcp.workel.com/mcpYou sign in to Workel, pick one workspace, and you're connected. No install, no config file, and no API key — you never see one and neither does Claude. Authorizing requires owner or admin on the workspace you choose, and the connection is re-checked on every request, so losing that role disconnects it without anyone having to remember to revoke a key.
It can read your projects, tasks, comments, events and members — including a task's cover image, attachments and full history — and it can create tasks, comments and events, and update existing tasks: renaming them, changing dates and priority, moving them between columns and projects, and changing who they are assigned to. It cannot delete anything, and it cannot upload files. Read and write permissions are listed separately on the consent screen, so you approve them knowingly rather than discovering them later.
Connecting more than one workspace
One connection covers one workspace, because the credential behind it is bound
to that workspace. To reach a second, add the connector again and pick the
other workspace — each connection registers separately, so they coexist, and
each appears under the name of its workspace (workel — Acme) rather than as
identical entries you can't tell apart.
One thing to watch: re-authorizing an existing connection moves it, it does not add. Going through consent again on a connector you already added replaces its credential and disables the old one, so that connection switches to whichever workspace you pick. If you want both, add a new connector instead of re-authorizing the one you have.
Related MCP server: Google Workspace MCP Server
Running it yourself
This package is for the cases the hosted server doesn't cover: Claude Code, CI agents, the OpenAI Agents SDK — anywhere you want to run the process yourself and hold the credential. Everything below is about that.
It handles multiple workspaces differently, and better for this use case: set
WORKEL_API_KEYS to a comma-separated list, one key per
workspace, and every tool gains a workspace argument naming which one to act
in. Ten tools stay ten tools however many workspaces you configure, rather
than multiplying per workspace — which matters because every tool definition is
context the model pays for on each turn.
Mint a dedicated read-only key before you start
Before pointing any AI client at this server, go to Workel → Settings →
Developers and mint a new API key just for this purpose — don't reuse
a key another integration already holds. Minting a key requires an owner or
admin role. Grant it only the read:* scopes the tools in this release
actually use (read:projects, read:tasks, read:members, read:events —
see Tools below); leave every write:* scope unchecked unless you
have deliberately decided to let an agent create and edit things in your
workspace on its own. Use one key per machine or agent, name it so you
remember what it's for later, and if a machine is retired or a client is
compromised, revoke that one key in Settings → Developers rather than
rotating a key several tools share — revocation is instant and takes effect
on the next request.
Two things worth understanding before touching the flags described below:
WORKEL_ENABLE_WRITESis a local operator consent flag, not an authorization boundary. It can only ever narrow what an already-scoped key is offered, never widen it — and because it lives in a config file or environment variable that an AI coding agent typically has write access to, an agent running on your machine can flip it back totrueitself. A local flag is not something an untrusted agent can be trusted to leave alone. The key's own scopes — granted deliberately at mint time, and revocable at any time — are the real gate.A
WORKEL_API_BASE_URLoverride sends your key to another host. Every request this server makes carries your key in theAuthorizationheader. IfWORKEL_API_BASE_URLever points at a URL you don't control, that host receives your key on every call. This client refuses a plainhttp://override except tolocalhost/127.0.0.1/[::1]for exactly this reason. The same logic applies to a real key pasted into any file: if it's ever committed to git, rotating the key is the only real fix — git history is forever. A later commit that deletes the line does not remove it from the repository's history, and anyone who cloned the repo in between still has the old key.
Install
npx -y @workel/mcp@0.4.0Pin the version — 0.4.0 above is this package's current release; check
npm view @workel/mcp version for the latest one before you pin it. The
unpinned form below is convenience only, fine for a one-off manual try,
not for anything an agent's config runs unattended:
npx -y @workel/mcpEnvironment variables
Variable | Required | Default | What it does |
| Yes (or | — | Your Workel API key. Read only from this environment variable — never from a command-line argument, which any other local user could read via |
| No | — | Comma-separated keys, one per workspace, to reach several workspaces from a single server. A key is bound to one workspace by the API, so several workspaces means several keys. Every tool then takes a |
| No |
| Development only — a normal install should never set this. Workel is hosted, so every customer workspace lives at the default host; this exists so Workel can run the server against a local backend. Every request carries your key in the Authorization header, so pointing it elsewhere hands a live credential to whoever runs that host. Loopback only — |
| No |
| Local consent for write tools — see the security note above. Since 0.2.0 the write tools do register when this is set AND the key carries the matching |
| No |
| Set to |
| No |
| One of |
doctor
Run npx -y @workel/mcp@0.4.0 doctor any time your MCP client reports only
"server failed to start" with no further detail. It runs the exact same
startup check the server itself runs — load config, then probe GET /me —
and prints a plain-text report to stdout instead of trying to speak the MCP
protocol:
base URL: https://api.workel.com/api/public/v1
workspace: Acme Inc
key: ci-key
scopes: read:projects, read:tasks
2 tools would register: workel_whoami, workel_list_projects
write budget: 59/60 remaining this minutedoctor never starts a transport and never talks to your MCP client — it's
a standalone command you run from a terminal, and it exits 0 on success or
1 on any failure (missing/invalid WORKEL_API_KEY, an unreachable API, or
a key the API rejects). Unlike the one-line summary the server prints to
stderr on a normal boot (which omits the base URL when it's the default),
doctor always prints the effective base URL — including when it's the
default — because a doctor run is exactly the moment a tampered
WORKEL_API_BASE_URL needs to be visible.
Tools
This release registers the following read tools. workel_whoami needs
no scope at all and works with any valid key; every other tool is only
registered when the key's scopes (discovered via the GET /me probe above)
include the scope listed. List tools return 25 results per call by default
(50 max — this client caps below the API's own 100 deliberately, see src/tools/conventions.ts) and page via an opaque cursor / next_cursor pair.
Tool | Scope | What it does |
| (none) | Identity check: which workspace, which key, its current scopes, and its remaining rate-limit budget. Call this first to confirm the server is configured correctly and see which other tools this key can actually use. |
|
| List the projects visible to this key. Archived projects, private projects, and the per-user inbox project are never returned. |
|
| Fetch one project by id, including its full (possibly truncated) description. |
|
| List a project's board columns — its kanban lists such as "To Do" or "Done" — not the tasks inside them. |
|
| List tasks, filterable by project, column, completion, and due-date/update-time. There is no text search on this endpoint. |
|
| Fetch one task by id — the full detail view: description, cover image, and attachments (each with a download url, size, and uploader). |
|
| List every comment on a task — top-level comments and replies together. Order is unspecified; sort by |
|
| List a task's history, newest first — who did what to it and when. |
|
| List the workspace's active members — the only tool that returns email addresses. |
|
| List events on the workspace and any of its visible projects. |
Write tools
Four, and they register only when both gates pass: the key carries the
matching write:* scope and WORKEL_ENABLE_WRITES=true is set. Either
one alone registers nothing, so a read-only install never sees them.
Tool | Scope | What it does |
|
| Create a task, placed by either |
|
| Update fields on an existing task, including moving it to another column ( |
|
| Add a plain-text comment to a task. No @-mentions; the API rejects the request outright if a mention field is sent. |
|
| Create a calendar event. |
No tool deletes anything. workel_update_task is annotated
destructiveHint: true, so a client that honours annotations prompts before
each call; the read tools are annotated read-only and run without one.
The hosted server at mcp.workel.com runs with writes enabled, so all
thirteen tools are available there.
Limitations
replayed does not prove uniqueness. Every write this server's tools
would make carries an Idempotency-Key, and the Workel API's idempotency
store (24-hour retention, scoped to the calling key) replays the exact same
response for a repeated attempt with the same key and the same request body
— the second attempt reports replayed: true, and nothing is created or
changed a second time.
replayed: false means this particular attempt genuinely executed — it does
not mean no duplicate exists anywhere else. In particular: an error
response is never cached, so retrying after a failure always re-executes for
real; the idempotency record expires after 24 hours, so a very late retry
re-executes for real; and the store is namespaced per API key, so the same
literal Idempotency-Key value sent under a different key never collides
with — and never protects against a duplicate created by — the first one.
Unless a tool call explicitly reuses the same idempotency key across two
attempts, each attempt is a genuinely independent write as far as the server
can tell.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Connect AI agents to Filepad workspaces through OAuth MCP.
Work management where AI agents are first-class members: tasks, projects, memory over hosted MCP
Your org's AI agents, tasks, runs, search, and brain files as MCP tools and resources.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with Google Workspace services (Gmail, Drive, Docs, Tasks, Calendar) through OAuth 2.0 authentication, providing 25+ operations for business automation and productivity.1
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to interact with Google Workspace (Gmail, Calendar, Sheets, Drive, Docs) through MCP tools, allowing natural language commands to manage emails, schedule events, and handle documents via a Telegram bot interface.1,8951MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to send Gmail emails, create drafts, and append content to Google Docs through MCP tools. Provides secure OAuth-based integration with Google Workspace.225MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to manage WordPress sites by providing tools for posts, media, users, plugins, menus, widgets, comments, options, and system administration over the MCP protocol, with support for application passwords and OAuth 2.1.GPL 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/WorkelCEO/workel-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server