tripl-mcp
Standalone MCP server exposing a curated,
agent-safe toolset over a running tripl instance. It is a pure HTTP client
of the tripl REST API (/api/v1) — it imports no backend code and is not
mounted into the FastAPI app.
- 18 curated tools (15 read, 3 write): plan search, event read/write, event types & fields, variables, branches & diffs, scans, monitors, reconciliation, projects.
- Read tools carry
readOnlyHint; write tools require atk_w_API key. - Plan-mutating tools require
branch_idso an agent never edits the live main plan by accident. Operators can override withTRIPL_MCP_ALLOW_MAIN=1. - Branch merge/revert/transition, SSE streams, and photo upload are intentionally not exposed in v1.
- The HTTP client is not in this package. It lives in the
tripldistribution (../cli) and is imported from there, so the CLI and this server share one implementation rather than two that drift (tripl-ey6j.1).
stdio (Claude Code / Claude Desktop)
Every form below resolves from PyPI, but for two different reasons, and the difference is worth one sentence each:
uvx tripl-mcpinstalls the published 0.1.0, which predates the client extraction and therefore depends on nothing butmcpandhttpx— thetripldistribution never enters the picture.- The git form installs this revision, which imports its HTTP client from
tripl(tripl-ey6j.1). That resolves from the index too, now thattripl0.1.0 is published, so it no longer needs the siblingcli/directory.
The published release trails this repository. 0.1.0 exposes 17 of the 18 tools listed above —
get_scanlanded after it. Install from git for the version this README describes.
From PyPI — the released version:
{
"mcpServers": {
"tripl": {
"command": "uvx",
"args": ["tripl-mcp"],
"env": {
"TRIPL_BASE_URL": "https://tripl.example.com",
"TRIPL_API_KEY": "tk_r_..."
}
}
}
}
From git — no clone needed, and the way to run what is in this repository:
{
"mcpServers": {
"tripl": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/vladenisov/tripl.git#subdirectory=mcp-server",
"tripl-mcp"
],
"env": {
"TRIPL_BASE_URL": "https://tripl.example.com",
"TRIPL_API_KEY": "tk_r_..."
}
}
}
}
From a local checkout:
{
"command": "uv",
"args": ["run", "--project", "/path/to/tripl/mcp-server", "tripl-mcp"]
}
Create API keys in the tripl app under Settings → API keys. Use a
project-scoped tk_r_ key for read-only agents; reserve tk_w_ keys for
agents explicitly allowed to edit the plan.
streamable-http (shared server)
TRIPL_BASE_URL=https://tripl.example.com tripl-mcp --transport streamable-http --port 8765
In this mode the server holds no credentials. Every incoming MCP request
must carry Authorization: Bearer tk_...; the header is forwarded verbatim to
the tripl API and never stored. Requests without it get a clear tool error.
Environment
| Variable | Meaning |
|---|---|
TRIPL_BASE_URL |
Base URL of the tripl instance (required) |
TRIPL_API_KEY |
API key for stdio mode (required for stdio) |
TRIPL_MCP_ALLOW_MAIN |
Set to 1 to allow plan writes without branch_id (edits main) |
Development
cd mcp-server
uv sync
uv run --group dev pytest -q
uv run --group dev ruff check
uv run --group dev ruff format --check
uv run --group dev mypy src
uv resolves tripl from ../cli via [tool.uv.sources], so an edit there is
picked up with no install step — and must be, because tripl_cli.client is this
server's transport. Run both suites after touching it, which is what
ci.yml's cli and mcp jobs do.
The container image builds from the repository root, not this directory, for the same reason:
docker build -f mcp-server/Dockerfile . # `docker build ./mcp-server` no longer works
Docs
Full agent workflow guidance lives in the website docs:
website/docs/integrate/agent-api-guide.md and
website/docs/use-cases/llm-agent.md.
Metadata
Release files for tripl-mcp 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tripl_mcp-0.2.0.tar.gz | 85.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tripl_mcp-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 113.9 kB
Release files / tripl_mcp-0.2.0.tar.gz
| Download URL | tripl_mcp-0.2.0.tar.gz |
|---|---|
| Size | 85.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f36be3b110f811dd80cfe341f38f0e2b11a9b96e2c729ad7d43972b969306091
|
|
BLAKE2b-256 checksum How to use checksums |
1309cf8fd8ae54db54b935eadf21bbb8507f129964afefdd14474326c4a5a573
|
| 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 Aug 10, 2026.
Transparency logRelease files / tripl_mcp-0.2.0-py3-none-any.whl
| Download URL | tripl_mcp-0.2.0-py3-none-any.whl |
|---|---|
| Size | 28.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
783041db3c98379086d216fb94d0ebe04a609a78ecce43cc3dc8ef068c3b0d98
|
|
BLAKE2b-256 checksum How to use checksums |
105228dda920836fce4fadea76d475de28446e716514c0e22dbdac0a44c52680
|
| 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 Aug 10, 2026.
Transparency log