Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

trueppm-mcp

PyPI version PyPI downloads License

A read-only Model Context Protocol server for self-hosted TruePPM.

Point any MCP client — Claude Desktop and the like — at your self-hosted TruePPM instance and ask real questions of the live schedule: critical path, sprint status, the risk register, My Work. Every answer is computed server-side by the same engine the web UI uses — never an LLM guess, never leaving your box.

Why reach for this instead of just asking a model? A model has no access to your schedule and no CPM/Monte Carlo engine to run — asked "what happens if we slip this task three days," it can only guess in prose. This server lets the same question hit your actual engine: whatif reruns the real Monte Carlo simulation in memory and returns the percentile shift, get_schedule_derivation names the actual dependency that set a date instead of a plausible-sounding one. The answer is computed, cited, and reproducible — never invented.

Read-only by design. This server exposes no write tools; the write surface is deliberately held to a later release.

Requirements

  • Python 3.11+
  • A running, network-reachable self-hosted TruePPM instance on 0.4.0-beta.1 or later — earlier releases don't expose the endpoints these tools call (e.g. the non-mutating what-if endpoint, #993, is a 0.4 addition). There is nothing to connect to without one; this package is a protocol adapter, not a standalone tool.
  • A personal access token minted on that instance with the mcp:read scope and an expiry (see Quick start below) — the server has no other way to authenticate.

How it works

trueppm-mcp is a thin protocol adapter. It talks to TruePPM only over HTTP via the public REST API, carrying your API token as a bearer credential. It never touches the database or the ORM — your role-based permissions are enforced exactly once, at the API layer. The server can see nothing you could not already read in the web client with the same token.

┌────────────────┐   stdio    ┌──────────────┐   HTTPS + Bearer   ┌──────────────┐
│  AI client     │◀──────────▶│ trueppm-mcp  │◀──────────────────▶│  TruePPM API │
│ (Claude etc.)  │   (MCP)    │  (this pkg)  │   GET /api/v1/...  │ (self-hosted)│
└────────────────┘            └──────────────┘                    └──────────────┘

Quick start

The server is configured entirely from the environment:

Variable Required Description
TRUEPPM_API_URL yes Base URL of your TruePPM instance, e.g. https://ppm.example.com
TRUEPPM_API_TOKEN yes A personal access token (tppm_<64-hex>) minted with the mcp:read scope and an expiry, from Personal Settings → API tokens

Mint the right token. The MCP read surface accepts only a personal (owner-scoped) token carrying the mcp:read scope — a project- or program-scoped token is rejected there so it can never read beyond the single scope it was minted for. Choose the mcp:read scope and set an expiry (required for mcp:read): the token acts as you, reads only what your role permits, and cannot write or outlive its expiry — so a leaked token is read-only and self-limiting.

Run it as a local subprocess (the primary, stdio transport):

pip install trueppm-mcp
TRUEPPM_API_URL=https://ppm.example.com \
TRUEPPM_API_TOKEN=tppm_your_token_here \
  trueppm-mcp            # stdio (default)

Or expose the HTTP/SSE transport for a web-based assistant:

trueppm-mcp --transport http --host 127.0.0.1 --port 8000

See packages/website/src/content/docs/administration/mcp-server.md for wiring it into Claude Desktop's claude_desktop_config.json.

Example

Once connected, ask the client a real question about your schedule in plain language:

"If the API redesign task slips three days, do we still hit the March 3 launch?"

The client calls the whatif tool — GET /projects/<id>/monte-carlo/whatif/ — which reruns Monte Carlo in memory with the perturbed duration and returns the shifted P50/P80/P95, the delta against the current forecast, and whether the task is still on the critical path. Nothing is written; the same call can be made as many times as you like.

Dependencies

Pulled in automatically by pip install trueppm-mcp — nothing to install separately:

Package Why
mcp[cli] The official Model Context Protocol SDK (FastMCP) — server runtime, tool registration, and the stdio/SSE/streamable-HTTP transports.
httpx Async HTTP client used for every call to the TruePPM REST API.
cryptography A transitive dependency of mcp[cli] (via pyjwt[crypto]), pinned directly here only to force a resolver floor past a fixed CVE — not used by this package's own code.

Status

The read-tool surface ships in 0.4: 19 read-only tools across projects and programs, tasks and My Work, schedule and risk (including non-mutating what-if and schedule derivation), and sprints — each mapping to one existing REST endpoint and returning only what your role permits. The mcp:read token scope that marks a token read-only at the API layer lands alongside; the read surface admits only owner-scoped mcp:read tokens, which must carry an expiry. Write tools are deliberately held to a later release.

License

Apache-2.0. Part of the TruePPM Community edition.

Metadata

Release files for trueppm-mcp 0.4.0rc1

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

Source distribution (sdist)

Source distribution for trueppm-mcp 0.4.0rc1
File Size Uploaded Provenance
trueppm_mcp-0.4.0rc1.tar.gz 59.1 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for trueppm-mcp 0.4.0rc1
File Interpreter ABI Platform
trueppm_mcp-0.4.0rc1-py3-none-any.whl Python 3 none any Details

Total release size: 100.7 kB

Release files / trueppm_mcp-0.4.0rc1.tar.gz

Download URL trueppm_mcp-0.4.0rc1.tar.gz
Size 59.1 kB
Tags Source
SHA-256 checksum
How to use checksums
68fec719ed252d2e9323b1585241414d38230cb42c8b17c26fcaea0251f50795
BLAKE2b-256 checksum
How to use checksums
cea72ee567208484542ec2502aa5866a2170fb8c133d9a778ada193f7ced1c28
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.11.15

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 GitLab CI/CD, verified by PyPI on Oct 20, 2026.

Transparency log

Release files / trueppm_mcp-0.4.0rc1-py3-none-any.whl

Download URL trueppm_mcp-0.4.0rc1-py3-none-any.whl
Size 41.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a82ecbb837d0cb1b0a4b443bc299cb86a9e8dcadc6566d08dce53d79fc1067ee
BLAKE2b-256 checksum
How to use checksums
d5160fa8156c3b4266b470889aeecb220d08d6f8fc1e828c383593e9f87e1b68
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.11.15

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 GitLab CI/CD, verified by PyPI on Oct 20, 2026.

Transparency log

Security for trueppm-mcp 0.4.0rc1

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 trueppm_mcp-0.4.0rc1.tar.gz

PyPI Publish Attestation

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

Signed by GitLab CI/CD, verified by PyPI on Oct 20, 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.

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