Skip to main content

tackboard-mcp — an optional MCP adapter

A small Model Context Protocol server that exposes one tack project board to an MCP client (an IDE assistant, a chat client, another agent runtime).

This package is optional and outside the core. The tackboard package — the CLI, the database, the JSON contracts — stays dependency-free and does not import anything here. If you only want the board, install tackboard; if your agent runtime speaks MCP and you would rather it called tools than assembled shell commands, install this beside it.

What it is, precisely

The adapter contains no domain logic. Every tool shells out to the tack CLI with --json and returns that document unchanged, so a client can never see a claim, a transition or a validation rule that differs from the board. A non-zero exit is raised as an error whose payload is the CLI's own error document ({"schema_version":1,"error":{...}}).

What it adds is discovery and a typed surface: twelve named tools with described arguments, instead of a CLI string to compose.

Install

uv tool install tackboard-mcp      # or: pip install tackboard-mcp

This installs the adapter and pulls tackboard with it, so the tack CLI comes along in the same environment. The MCP framework and the core are this package's dependencies, and they are declared here — never in the core.

TACK_CMD remains available for unusual environments where the adapter and the CLI live in separate environments; set it to the command that invokes tack (for example TACK_CMD="uv run tack").

Configure

The server reads three environment variables:

Variable Meaning
TACKBOARD_DB the board file to operate on (same variable the CLI reads)
TACKBOARD_AGENT the actor every mutation is attributed to
TACK_CMD overrides the CLI command prefix; defaults to the installed core module, or tack when the core is not importable
TACKBOARD_DB=~/.local/state/board.sqlite3 TACKBOARD_AGENT=assistant tackboard-mcp

The process speaks MCP over stdio. Register it with your client the way that client documents stdio servers:

{
  "mcpServers": {
    "tackboard": {
      "command": "tackboard-mcp",
      "env": {
        "TACKBOARD_DB": "/path/to/board.sqlite3",
        "TACKBOARD_AGENT": "assistant"
      }
    }
  }
}

Tools

Tool Arguments Returns
memo_read rev? the memo document, current or one stored revision
next_claim stage? (work/review) the next --claim document; task is null when nothing is eligible
claim task_id, force?, reason? the mutation document; force requires a non-empty reason
status task_id, status, force?, reason?, if_version? the mutation document
reject task_id, reason, if_version? the mutation document; the claim returns to the author
list status?, assignee?, label?, priority?, blocked?, eligible?, limit?, full? the list document; descriptions only with full
show task_id the show document: the task and its notes
note task_id, text, refs? (KIND:VALUE) the note document with the appended event
complete task_id the mutation document; completing unblocks dependents
release task_id, reason? the mutation document; a reason is the audited force path
create title, description?, priority?, assignee?, labels?, depends_on?, status? the created task document
board_brief — the counts-only board document

Every tool declares all four MCP annotation hints as explicit booleans. The four read tools (memo_read, list, show, board_brief) are read-only and repeatable; every mutating tool writes only the one local board and touches no external system (openWorldHint false); nothing on this surface deletes data (destructiveHint false); and complete and claim are idempotent while next_claim, status, reject, note, release and create are not.

Each tool returns the CLI's JSON document unchanged. Exit codes are not translated into a second vocabulary: a failed call raises with the CLI's error.code, exit_code and details intact.

Tests

uv run pytest packages/tackboard-mcp/tests

The tool layer is tested without the framework: argument mapping against a fake transport, plus a scratch board driven through the real CLI. The binding tests (test_server.py) run only when mcp is installed — including a real client handshake over stdio — and skip otherwise, so the core suite never needs the framework.

Limits

  • One board per process: the database is fixed at start-up.
  • The web view and the schema commands are not exposed; they are not tool-shaped.
  • --force is reachable only through release, claim and status, each requiring a non-empty reason; the remaining force cases stay operator decisions. reopen, depend_add, memo_append and claims are deliberately not exposed — fall back to the CLI for those.

Metadata

Release files for tackboard-mcp 0.9.0

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

Source distribution (sdist)

Source distribution for tackboard-mcp 0.9.0
File Size Uploaded Provenance Actions
tackboard_mcp-0.9.0.tar.gz 7.8 kB With provenance Details for tackboard_mcp-0.9.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for tackboard-mcp 0.9.0
File Interpreter ABI Platform Actions
tackboard_mcp-0.9.0-py3-none-any.whl Python 3 none any Details for tackboard_mcp-0.9.0-py3-none-any.whl

Total release size: 17.7 kB

Release files / tackboard_mcp-0.9.0.tar.gz

Download URL tackboard_mcp-0.9.0.tar.gz
Size 7.8 kB
Tags Source
SHA-256 checksum
How to use checksums
e2dd608cc07d9a1a7082141c79cf34eec36d6178a352c6adf5ba626ba1c7a485
BLAKE2b-256 checksum
How to use checksums
e7358ba13528107d66b05dc6a2dd89189c9f5f0ecccd5bf521e34c80c30b4bd3
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 30, 2026.

Transparency log

Release files / tackboard_mcp-0.9.0-py3-none-any.whl

Download URL tackboard_mcp-0.9.0-py3-none-any.whl
Size 9.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3fac55aa2de920f443d2d32ac29af4f2214e3a0b7c7b35ce5db6e0658f29d8b1
BLAKE2b-256 checksum
How to use checksums
bb62169c912469dd741d2cf13d4850b5a0cb3ef7b779b648f2345b67276704a7
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 30, 2026.

Transparency log

Security for tackboard-mcp 0.9.0

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 tackboard_mcp-0.9.0.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 30, 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.

Release history Release notifications | RSS feed

This release

0.9.0 This release

2 release files Full provenance

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