Skip to main content

wirk-mcp

wirk-mcp gives agents WIRK over MCP: five tools, wirk_status, wirk_query, wirk_write, wirk_review and wirk_show, whose arguments are WIRK's request bodies and whose answers are WIRK's compact text. Coordination and ticketing built for agents and the people they work with: your wirk, its context and its evidence in one wirkspace.

Install

One command installs the wirk command and this server, sets up Claude Code and Codex when they are present, and logs in:

curl -fsSL https://wirk.life/install | sh

By hand, install the CLI and MCP server as separate tools from PyPI:

uv tool install wirk
uv tool install wirk-mcp

Installing wirk-mcp alone provides the server binary, not the wirk CLI command. Run wirk login, then point your agent host at the installed binary. First check claude mcp get wirk or codex mcp get wirk: a server named wirk with another command is an earlier install. Replace it (Claude Code needs claude mcp remove --scope user wirk first; Codex's add replaces it), or skip the add when it already runs this binary:

claude mcp add --scope user wirk -- "$(command -v wirk-mcp)"      # Claude Code
codex mcp add wirk -- "$(command -v wirk-mcp)"                    # Codex

Package releases are also listed on GitHub.

The server uses the configuration wirk login made (~/.config/wirk, or $WIRK_CONFIG_DIR) and only the agents' token in it; it never reads a person's own token. A new login needs no restart. In an agent chat it uses that chat's own token instead, the one wirk login in the chat made: the chat is recognised by the thread ID a Codex request carries (or CODEX_THREAD_ID) and by CLAUDE_CODE_SESSION_ID in the server's environment (Claude Code, in the terminal and the desktop app), never by a tool argument. Until the chat has run wirk login, its calls answer actor_setup_required.

Use

For catch-ups about status, priorities or blockers, use wirk_status for breadth. Batch a few visible work and decision leads in the first wirk_query, then follow selected links or truncated details in the next before naming specific blockers, owners or next work. Cards and counts are leads; stop when evidence suffices and name gaps. Catch-ups are read-only and answered from WIRK: read the repository or other sources only to implement or when asked to verify, and otherwise offer to check. Old handoffs and age do not establish release or worker state. Direct MCP is preferred; the CLI also works.

An agent starts with wirk_status, optionally with a one-line task. wirk_query fetches by ID, short ID or exact title, lists with fields, finds what matters for the words in about, or looks up a receipt. wirk_write changes items and links in one batch, stating in expect the revision it read (rN on a card); completing wirk gives its evidence as reason. Context changes apply when the agent may make them; otherwise they are refused with requires_review and the agent proposes them. wirk_review accepts, rejects or defers proposals when the agent's role may review; a background agent only proposes. wirk_show returns a link to a live, read-only page for a person; anyone with the link can open it until it expires after 24 hours. wirk_status and wirk_query are annotated read-only. In wirk_write, uploads (on item.create and message.send) and attach_uploads (on item.edit) take upload IDs or absolute local file paths: the server stores each file first and sends the write only when every file is stored; set your own request_id when attaching files. format: "json" returns data instead of text. request_id may be left out: the server makes one and names it, and resending the identical body with it applies once.

What leaves the machine

The requests the agent makes and their content; the token, only as the bearer header to the configured address; and with wirk_status, the host's name and version, a session number for this server process, and the repository (host/owner/name, or a hash) and branch of the directory it runs in. No telemetry.

Development

The tests need the wirk package installed beside this one: uv pip install -e ../wirk-cli && uv pip install -e . && python -m pytest tests -q.

Releasing

A release is a version bump merged to main with Release: publish wirk-mcp <version> in its squash body; the version must equal the wirk== pin in pyproject.toml. After the release check passes on that exact commit, the tag v<version> is created there; pushing main publishes nothing, and a tag is never moved. The tag's Release workflow waits up to ten minutes for the wirk release of the same version, tests against that public CLI wheel, attaches the wheel, the sdist and SHA256SUMS to a GitHub Release, and publishes to PyPI through trusted publishing; no token is stored anywhere.

Release wirk first: a tag whose matching wirk release does not exist fails and stays unpublished, and the next version is released in step instead of moving the tag. New GitHub releases stay prereleases until their downloaded public bytes match the build and a clean public installation passes. Retry failed jobs to reuse the successful build artifacts: identical existing assets are retained, missing assets are uploaded, and differing bytes or a moved tag stop the run. The Release workflow's manual verification input checks an existing public tag without publishing. Publication does not update already-installed or running clients.

License

Apache-2.0. See LICENSE.

Metadata

Release files for wirk-mcp 0.4.29

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wirk-mcp 0.4.29
File Size Uploaded Provenance
wirk_mcp-0.4.29.tar.gz 34.3 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for wirk-mcp 0.4.29
File Interpreter ABI Platform
wirk_mcp-0.4.29-py3-none-any.whl Python 3 none any Details

Total release size: 49.6 kB

Release files / wirk_mcp-0.4.29.tar.gz

Download URL wirk_mcp-0.4.29.tar.gz
Size 34.3 kB
Tags Source
SHA-256 checksum
How to use checksums
974e1bdb4426eb245a14da9853b2c323b3546fed2f7e96e18edca405dca57646
BLAKE2b-256 checksum
How to use checksums
14a2205eec7fa58b1d36b7e9e1c305f855c1d3692c26f99bb558f2282dccb45d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / wirk_mcp-0.4.29-py3-none-any.whl

Download URL wirk_mcp-0.4.29-py3-none-any.whl
Size 15.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
570738c34970e8f5886da62f62e5323dd19bfdea1e6decef630e287066913122
BLAKE2b-256 checksum
How to use checksums
8ac38973dcbd950ce85c47d23739f36f695c22d87fd11d7bcc1900a7e1cae8b0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Security for wirk-mcp 0.4.29

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for wirk_mcp-0.4.29.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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