Skip to main content
Yanked

This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Consider using release 0.4.0rc1 instead.
Reason given by maintainers: release script issue; use beta 3

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.0b2

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.0b2
File Size Uploaded Provenance
trueppm_mcp-0.4.0b2.tar.gz 50.1 kB With provenance Details

Built distribution (wheel)

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

Total release size: 83.7 kB

Release files / trueppm_mcp-0.4.0b2.tar.gz

Download URL trueppm_mcp-0.4.0b2.tar.gz
Size 50.1 kB
Tags Source
SHA-256 checksum
How to use checksums
1eeb709ceaccc153da83ebaf2df61bb9f24b2f6730c6ea264c29c43b535548e0
BLAKE2b-256 checksum
How to use checksums
726c88a4ae6dbcba9b277d1c46b83dce1fe5ab10269e7c4259ee8eb6c0702643
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 Sep 19, 2026.

Transparency log

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

Download URL trueppm_mcp-0.4.0b2-py3-none-any.whl
Size 33.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8c748ea448662a56b6b93aea99d858abfb43f00868eba48cc47aade7d873bc05
BLAKE2b-256 checksum
How to use checksums
a98d59c5568ec55e3272e80bbb830ca23281bd3a7f86b2de16b06602925a5dec
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 Sep 19, 2026.

Transparency log

Security for trueppm-mcp 0.4.0b2

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.0b2.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 Sep 19, 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