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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

trueppm_mcp-0.4.0b1.tar.gz (49.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

trueppm_mcp-0.4.0b1-py3-none-any.whl (32.9 kB view details)

Uploaded Python 3

File details

Details for the file trueppm_mcp-0.4.0b1.tar.gz.

File metadata

  • Download URL: trueppm_mcp-0.4.0b1.tar.gz
  • Upload date:
  • Size: 49.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.11.15

File hashes

Hashes for trueppm_mcp-0.4.0b1.tar.gz
Algorithm Hash digest
SHA256 a48b90e0a3e4c7061d8037c6b544b29d9bad74f26f8753f77fa0234f3334c6e9
MD5 e7914d0b5c680539861bd84e8d7060d7
BLAKE2b-256 b5c1d0c7de69d77923ed5a48972f808b2828ff24bad3b9e38d17a8482a18caa1

See more details on using hashes here.

Provenance

The following attestation bundles were made for trueppm_mcp-0.4.0b1.tar.gz:

Publisher: .gitlab-ci.yml on trueppm/trueppm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file trueppm_mcp-0.4.0b1-py3-none-any.whl.

File metadata

  • Download URL: trueppm_mcp-0.4.0b1-py3-none-any.whl
  • Upload date:
  • Size: 32.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.11.15

File hashes

Hashes for trueppm_mcp-0.4.0b1-py3-none-any.whl
Algorithm Hash digest
SHA256 7e0fc585d8e0c356dc543cf7ab8dfb1fc7b4a70aa770212d7e246a0859436359
MD5 7d400a8e74b0fce6ba0420245b5eea82
BLAKE2b-256 82dbcc844d45dd379e2be9d2ae952f3f4e2f92863383bdb602dce77f139b19b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for trueppm_mcp-0.4.0b1-py3-none-any.whl:

Publisher: .gitlab-ci.yml on trueppm/trueppm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.4.0b1 This release

2 files

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