skedo-mcp
v0.2.0
Published
MCP server for Skedo tasks. Thin, PAT-authenticated client over the Skedo API.
Maintainers
Readme
skedo-mcp
MCP (Model Context Protocol) server for Skedo tasks. A thin, PAT-authenticated client over the Skedo HTTP API — no business logic lives here; the Skedo API is the source of truth.
Works with any MCP client: Claude Code, Cursor, Claude Desktop, etc.
Tools
list_tasks— list tasks (optionallimit,status,search)get_task— fetch one task by UUID or public ref (for exampleSK-42)create_task— create a task (requirestitle; other fields optional)update_task— validated patch of an existing taskadd_task_link— append a labeled URL (for example a PR link) to task notes
update_task accepts only these patch keys: title, description, notes,
category, tracks, priority (low | normal | high | urgent), status
(todo | inprogress | review | done | rejected | canceled), deadline,
assignee (id string, null, or object with id), is_draft (boolean).
Compatibility aliases: due_date is accepted and mapped to deadline;
isDraft is accepted and mapped to is_draft.
Draft tasks
create_task with is_draft: true creates a private draft, visible only to
its creator until published. update_task with is_draft: false publishes a
draft. Publishing is one-way: the server rejects turning a published task back
into a draft.
Configuration
Configuration comes exclusively from environment variables set in your MCP
client config. There is no .env auto-loading.
SKEDO_API_BASE_URL(required) — for examplehttps://skedo.example.comorhttp://localhost:3000SKEDO_API_TOKEN(required) — Personal Access Token from Skedo settings (/settings/tokens)SKEDO_TIMEOUT_MS(optional) — outbound API timeout, defaults to10000
Treat SKEDO_API_TOKEN like a secret. Do not commit it or paste it into shared logs.
Client config
Claude Code (.mcp.json or ~/.claude.json)
{
"mcpServers": {
"skedo": {
"command": "npx",
"args": ["-y", "skedo-mcp"],
"env": {
"SKEDO_API_BASE_URL": "https://your-skedo-url",
"SKEDO_API_TOKEN": "<your_pat_here>"
}
}
}
}Cursor
Same shape in Cursor's MCP settings:
{
"mcpServers": {
"skedo": {
"command": "npx",
"args": ["-y", "skedo-mcp"],
"env": {
"SKEDO_API_BASE_URL": "https://your-skedo-url",
"SKEDO_API_TOKEN": "<your_pat_here>"
}
}
}
}No repo checkout is needed — npx fetches the published package. The MCP client
launches and stops the server process automatically.
Development
npm install
npm run dev # run from source (tsx), needs SKEDO_API_* env vars
npm run build # compile to dist/
npm test # build + unit tests + stdio smoke test
npm run typecheckTo point a local MCP client at your working copy instead of the npm package:
{
"mcpServers": {
"skedo": {
"command": "node",
"args": ["/absolute/path/to/skedo_mcp/dist/server.js"],
"env": {
"SKEDO_API_BASE_URL": "http://localhost:3000",
"SKEDO_API_TOKEN": "<your_pat_here>"
}
}
}
}Publishing
npm publish # prepublishOnly runs build + testsSee also
skedo-cli— terminal client for the same API, same PAT auth
