Model Context Protocol server for the Deferno task manager backend.
Project description
Deferno MCP Server
An MCP server that exposes the Deferno task-manager backend to AI agents.
MCP is the open standard used by Claude Desktop / Claude Code, Cursor, Windsurf, Zed, VS Code Copilot agents, Continue, OpenAI Agents, and others, so this server works with any of them — you configure it once in your client and every tool and resource below becomes available.
What the agent can do
Tools (function calls)
| Tool | Purpose |
|---|---|
login |
Authenticate with a username + password |
logout |
Invalidate the stored session token |
register |
Create a new Deferno user |
whoami |
Return the currently authenticated user |
list_tasks |
List every task owned by the authenticated user |
get_task |
Fetch a single task by UUID |
create_task |
Create a new task (optionally nested under a parent) |
update_task |
Patch any mutable field (title, description, status, mood…) |
set_task_status |
Convenience wrapper for open/in-progress/done/… |
split_task |
Decompose a task into two child tasks |
fold_task |
Insert a next-step task into the sibling chain |
merge_task |
Roll a parent's active children back into the parent |
get_daily_tasks |
Today's prioritized tasks with urgency reasons |
get_mood_history |
Mood log for finished tasks |
Resources (readable by MCP clients that index resources)
| URI | Content |
|---|---|
deferno://tasks |
All tasks for the current user |
deferno://tasks/today |
Today's prioritized tasks |
deferno://tasks/mood-history |
Mood log for finished tasks |
deferno://task/{task_id} |
A single task by UUID |
Install
The easiest way is uvx — it runs the package
in an isolated environment without a manual install step:
uvx deferno-mcp
Or install permanently:
pip install deferno-mcp
# or with uv:
uv pip install deferno-mcp
Configure
Environment variables:
| Variable | Default | Purpose |
|---|---|---|
DEFERNO_BASE_URL |
http://127.0.0.1:3000 |
URL of the Deferno backend HTTP API |
DEFERNO_TOKEN |
(unset) | Pre-existing bearer token; skips interactive login |
DEFERNO_USERNAME |
(unset) | Auto-login on first authed tool call if no token is set |
DEFERNO_PASSWORD |
(unset) | Paired with DEFERNO_USERNAME |
DEFERNO_LOG_LEVEL |
WARNING |
Python logging level |
If none of the auth env vars are set, the agent can still call the login
tool interactively.
Client configuration snippets
Claude Desktop / Claude Code
Add to your MCP client settings (claude_desktop_config.json on
Claude Desktop, or Claude Code's mcpServers config).
Recommended — token auth (no password prompts):
Get your token from the Deferno Settings page → "Copy API token", or from
browser dev tools: localStorage.getItem("deferno_token").
{
"mcpServers": {
"deferno": {
"command": "uvx",
"args": ["deferno-mcp"],
"env": {
"DEFERNO_BASE_URL": "https://deferno.work",
"DEFERNO_TOKEN": "your-api-token-here"
}
}
}
}
Alternative — username/password auth:
{
"mcpServers": {
"deferno": {
"command": "uvx",
"args": ["deferno-mcp"],
"env": {
"DEFERNO_BASE_URL": "https://deferno.work",
"DEFERNO_USERNAME": "your-user",
"DEFERNO_PASSWORD": "your-password"
}
}
}
}
Cursor / Windsurf / Zed
Same shape — these clients all consume the MCP stdio transport. Point
them at the deferno-mcp command and set the same env vars.
VS Code Copilot agent mode
In .vscode/mcp.json:
{
"servers": {
"deferno": {
"command": "deferno-mcp",
"env": { "DEFERNO_BASE_URL": "http://127.0.0.1:3000" }
}
}
}
Running the backend
The server talks to the Rust backend over HTTP. Start it first:
cd backend
cargo run
It listens on :3000 and connects to Redis via REDIS_URL
(default redis://127.0.0.1:6379/).
Development
Syntax / import sanity check:
python -c "from deferno_mcp.server import create_server; create_server()"
The server implementation is a single module (src/deferno_mcp/server.py)
plus a thin async HTTP client (src/deferno_mcp/client.py). Adding a new
tool is a matter of wrapping a new client method in an @mcp.tool().
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file defernowork_mcp-0.1.0.tar.gz.
File metadata
- Download URL: defernowork_mcp-0.1.0.tar.gz
- Upload date:
- Size: 9.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a48cbebeb36760e9d5fdce15c2377b379c693028e6196f3e28519a067cd31ef0
|
|
| MD5 |
7eac751b250b031e19d850319a4ea59b
|
|
| BLAKE2b-256 |
792c8de422df063e3b31e0cc2fc2190d13270c17a840ef9e6fe864e71026bf4e
|
Provenance
The following attestation bundles were made for defernowork_mcp-0.1.0.tar.gz:
Publisher:
release.yml on Kyle-Falconer/defernowork-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
defernowork_mcp-0.1.0.tar.gz -
Subject digest:
a48cbebeb36760e9d5fdce15c2377b379c693028e6196f3e28519a067cd31ef0 - Sigstore transparency entry: 1281047504
- Sigstore integration time:
-
Permalink:
Kyle-Falconer/defernowork-mcp@d8e237202da7f1b18786fce8b664ede8844dfd60 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/Kyle-Falconer
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d8e237202da7f1b18786fce8b664ede8844dfd60 -
Trigger Event:
push
-
Statement type:
File details
Details for the file defernowork_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: defernowork_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 3.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c76fd4066b1721be28a1fff0779b3b2ecd9c3751354e4e6201aa6e05eb1dd922
|
|
| MD5 |
a3593f0cef6514cf4f7971629015be6d
|
|
| BLAKE2b-256 |
8591ecaec761f83209fe43bc6fe63c62e0ec91edec254c08cf2111e95f77c859
|
Provenance
The following attestation bundles were made for defernowork_mcp-0.1.0-py3-none-any.whl:
Publisher:
release.yml on Kyle-Falconer/defernowork-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
defernowork_mcp-0.1.0-py3-none-any.whl -
Subject digest:
c76fd4066b1721be28a1fff0779b3b2ecd9c3751354e4e6201aa6e05eb1dd922 - Sigstore transparency entry: 1281047509
- Sigstore integration time:
-
Permalink:
Kyle-Falconer/defernowork-mcp@d8e237202da7f1b18786fce8b664ede8844dfd60 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/Kyle-Falconer
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d8e237202da7f1b18786fce8b664ede8844dfd60 -
Trigger Event:
push
-
Statement type: