Skip to main content

unntak-mcp

local MCP server for the unntak.no agent API. it lets an MCP client read, create, time, comment on, and complete tasks inside an agent's tag scope.

version 0.2 adds end-to-end encrypted accounts. encrypted task content is decrypted only inside this local process. unntak.no receives the inner scoped API credential and ciphertext; the master key from the combined token is never sent to the server.

setup

  1. in unntak.no, open :) → settings → agents and create an agent token. copy the complete token once. encrypted tokens start with unntak-agent-v2..
  2. add the local server to your MCP client:
read -s "UNNTAK_TOKEN?Agent token: "
echo
claude mcp add --scope user unntak \
  -e UNNTAK_TOKEN="$UNNTAK_TOKEN" \
  -- uvx unntak-mcp
unset UNNTAK_TOKEN

for a local Unntak instance, also add -e UNNTAK_URL=http://localhost:8000 before --.

the complete token is a password and, for encrypted accounts, also contains the key needed to read the agent's task content. never commit it, paste it into issues, or include it in logs. revoke it in Unntak settings if it is exposed.

legacy unntak-agent-... tokens remain supported during the E2EE rollout.

upgrade an existing installation

uvx installs published versions on demand. force it to refresh the cached package, then verify the token and E2EE decryption:

read -s "UNNTAK_TOKEN?Agent token: "
echo
export UNNTAK_TOKEN
uvx --refresh-package unntak-mcp unntak-mcp --check
unset UNNTAK_TOKEN

restart the MCP client afterwards. if Unntak gave you a new token during the encryption migration, replace the stored MCP configuration as well:

read -s "UNNTAK_TOKEN?New agent token: "
echo
claude mcp remove --scope user unntak
claude mcp add --scope user unntak \
  -e UNNTAK_TOKEN="$UNNTAK_TOKEN" \
  -- uvx unntak-mcp
unset UNNTAK_TOKEN

then confirm the connection:

claude mcp list

connection check

the check is read-only. success prints the decrypted agent name, scope, and open task count:

{"agent":"007","open_tasks":0,"scope":"agent;007"}

agent flow

the server sends these rules to the model automatically on connect: check list_tasks at session start, read a task and its comments before working, start the timer, comment progress, and always complete or stop the task before ending the session.

tools

  • whoami — agent name, scope, and open task count
  • list_tasks — open tasks in the agent's scope
  • get_task — one task with comments
  • add_task — create a scoped task
  • start_task / stop_task — operate the live focus timer
  • log_time — log a block of seconds without the live timer
  • comment — comment under the agent's name
  • complete_task — finish a task and archive it

encryption compatibility

the client supports both token generations:

  • legacy token: plaintext agent endpoints, kept for rollout compatibility
  • combined v2 token: AES-256-GCM task/comment payloads, authenticated metadata, and HMAC-SHA-256 blind scope tokens

the combined token is split locally. only its inner API token is used as the HTTP bearer credential. ciphertext, keys, and combined tokens are removed from MCP tool results and error messages.

skill/SKILL.md documents the agent workflow for clients with skill support. direct curl commands only work with legacy tokens; encrypted accounts must use this MCP package (or another compatible local E2EE client).

development

uv sync --locked --dev
uv run pytest
uv build --no-sources

test the built wheel instead of the editable source:

UNNTAK_TOKEN=unntak-agent-v2... \
  uvx --from ./dist/unntak_mcp-0.2.0-py3-none-any.whl unntak-mcp --check

release

CI tests Python 3.11 and 3.14, builds both distributions, and smoke-tests the built artifacts. publishing uses the pypi GitHub environment and PyPI trusted publishing, so no PyPI password is stored in GitHub.

create a tag matching the package version only after CI passes:

uv run pytest
uv build --no-sources
git tag -a v0.2.0 -m v0.2.0
git push origin v0.2.0

the tag publishes to PyPI. server.json can then be published separately to the official MCP registry for discovery.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

unntak_mcp-0.2.0.tar.gz (58.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

unntak_mcp-0.2.0-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

Details for the file unntak_mcp-0.2.0.tar.gz.

File metadata

  • Download URL: unntak_mcp-0.2.0.tar.gz
  • Upload date:
  • Size: 58.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for unntak_mcp-0.2.0.tar.gz
Algorithm Hash digest
SHA256 5ec666364b270529ebb5d9556629f2c0c28a27e30437a2254baeab134f46c507
MD5 e87282470a1720e01d94ff7b1c9933c0
BLAKE2b-256 66d0bf3c12be490645fbbf7ce72a7ff711289c63d7a04f0d5f9260c1c9c87c37

See more details on using hashes here.

File details

Details for the file unntak_mcp-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: unntak_mcp-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 9.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for unntak_mcp-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ad364b88924926861e2801de8190fdc583d8763c2f5999add84d539768b98671
MD5 3f1f6e9d2637b22bde9a7834977727f8
BLAKE2b-256 b4eeadf9726e863f2958cbb518bab5c23df4d5553d6a55b0c6b5570f523b6fef

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

This release

0.2.0 This release

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page