p6xer MCP Server

io.github.osama-ataPublished by GitHub account osama-atav0.1.3Updated Oct 24, 2026

An MCP server for Primavera P6 XER files.

Overview

AI-generated overview

Lets an assistant parse and analyze Primavera P6 XER schedule files, including critical path, resources, and earned value.

What you can do
Built on PyP6XER, it exposes 13 tools for reading .xer schedule files: parsing a file into project lists and status breakdowns, listing activities and WBS hierarchy, finding critical path activities, checking schedule quality with DCMA-style rules, and reviewing resources, assignments, calendars, and relationships. It also computes earned value metrics such as PV, EV, AC, CPI, SPI, and EAC, plus summary statistics. Three resources and two prompt templates provide project, activity, and resource summaries and report outlines.
When to use it
Useful when an assistant needs to inspect or report on Primavera P6 project schedules stored as XER files, for example schedule quality reviews, critical path questions, resource utilization checks, or earned value reporting. It suits project controls and planning workflows rather than general file handling.
Requirements
Runs locally as a stdio process, typically via uvx or pip, and needs Python 3.10 or newer with the mcp and pyp6xer packages. An API key is read from the P6XER_API_KEY environment variable; P6XER_ENDPOINT optionally points to a p6xer service, otherwise a local daemon is assumed. P6XER_LOG_LEVEL optionally sets log verbosity. Desktop client only.
Before you install
The server asks for a secret named P6XER_API_KEY, so treat that value as sensitive and avoid exposing it in shared configuration. Setting P6XER_ENDPOINT can send schedule data to a remote service rather than keeping it local. The tools read and analyze XER files; confirm whether any operation writes or modifies files before pointing it at production schedules.

Installation

In SourceWeft

  1. Open p6xer MCP Server in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

P6XER MCP Server

mcp-name: io.github.osama-ata/p6xer-mcp-server

[PyPI version] [Python 3.12+] [License: MIT] [MCP]

A full-featured Model Context Protocol (MCP) server for Primavera P6 XER files, built on PyP6XER.

Exposes 13 Tools, 3 Resources, and 2 Prompts so any MCP-compatible AI client (Claude Desktop, Claude Code, Cursor, etc.) can interactively parse, query, and analyze .xer schedule files.


🚀 Features

🔧 Tools (13)

ToolDescription
parse_xer_fileParse an XER file — project list, totals, status breakdowns
get_project_activitiesActivities with filters: project_id, project_short_name, status, task_type
get_critical_pathCritical path activities (float ≤ 0), sorted by early start
analyze_resource_utilizationPlanned/actual hours & costs per resource; over-allocation flags
check_schedule_qualityDCMA-style check: missing logic, long durations, high float, unresourced tasks
get_resourcesList resources, optionally filtered by type
get_resource_assignmentsResource–activity assignments with enriched names and costs
get_wbsWork Breakdown Structure hierarchy
get_relationshipsPredecessor/successor relationships enriched with task codes
get_calendarsCalendar definitions with hours-per-period data
get_schedule_summaryAt-a-glance stats: counts, date range, critical count
get_earned_valueEVM: PV, EV, AC, CV, SV, CPI, SPI, EAC per project
get_activity_detailFull detail for one activity (preds + succs + resources)

📋 Resources (3)

URIDescription
xer-project://{file_path}/{project_id}Detailed text summary of a specific project
xer-activities://{file_path}Activities summary with status breakdown and duration stats
xer-resources://{file_path}Resources summary with type breakdown and assignment stats

💬 Prompts (2)

PromptTypes
analyze_xer_projectgeneral · schedule · resources · progress · quality
xer_reporting_promptexecutive · detailed · critical_path · resource · milestone

� Install from Store

Via PyPI (uvx — no install needed)

bash
uvx p6xer-mcp-server

Via PyPI (pip)

bash
pip install p6xer-mcp-serverp6xer-mcp-server

Via Smithery

Search for p6xer-mcp-server on smithery.ai and click Install. It will generate the correct Claude Desktop config automatically.

Via GitHub MCP Registry

The server is listed in the GitHub MCP Registry. In Claude Code:

bash
claude mcp add p6xer -- uvx p6xer-mcp-server

Claude Desktop config (after PyPI install)

json
{  "mcpServers": {    "p6xer": {      "command": "uvx",      "args": ["p6xer-mcp-server"]    }  }}

�📦 Installation

bash
# Clone the repogit clone https://github.com/osama-ata/p6xer-mcp-server.gitcd p6xer-mcp-server
# Install with uv (recommended)uv sync
# Or with pippip install "mcp[cli]>=1.6.0,<2.0.0" pyp6xer

🏃 Running

Development / MCP Inspector:

bash
uv run mcp dev src/p6xer_mcp_server/server.py

Stdio (Claude Desktop / Claude Code):

bash
uv run p6xer-mcp-server

🔌 Claude Desktop

Add to claude_desktop_config.json:

json
{  "mcpServers": {    "p6xer": {      "command": "uvx",      "args": ["p6xer-mcp-server"]    }  }}

Config file locations:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

🔌 Claude Code (CLI)

bash
claude mcp add p6xer -- uvx p6xer-mcp-server

💬 Example Prompts

Once connected:

Parse project.xer and give me an overview of all projects
What are all the critical path activities, sorted by start date?
Run a DCMA schedule quality check on project.xer
Calculate earned value metrics — what are the CPI and SPI?
Show all resource assignments for "John Smith"
What are the predecessors and successors of activity A1000?
List all over-allocated labor resources
Generate an executive summary report for project.xer

📊 Tool Reference

Filter parameters (most tools accept)

  • project_id – numeric P6 project ID (e.g. "1234")
  • project_short_name – project short name string (e.g. "PROJ1")

Status codes

TK_NotStart · TK_Active · TK_Complete

Task types

TT_Task · TT_Mile · TT_FinMile · TT_WBS

Resource types

RT_Labor · RT_Mat · RT_Equip


🗂️ Project Structure

p6xer-mcp-server/├── src/│   └── p6xer_mcp_server/│       ├── __init__.py│       └── server.py       # All tools, resources, and prompts├── manifest.json           # MCPB bundle manifest├── mcp.json                # MCP registry metadata├── smithery.yaml           # Smithery registry configuration├── pyproject.toml└── README.md

📋 Requirements

  • Python ≥ 3.10
  • mcp[cli] >= 1.6.0, < 2.0.0
  • pyp6xer >= 1.16.0

📄 License

MIT


🚢 Publishing to PyPI (GitHub Actions + Trusted Publishing)

This repository includes a release workflow at .github/workflows/publish-to-pypi.yml based on the PyPA guide and pypa/gh-action-pypi-publish.

1) Configure Trusted Publishers

Create trusted publishers for this exact workflow file:

Use these values:

  • Owner: osama-ata
  • Repository: p6xer-mcp-server
  • Workflow file: publish-to-pypi.yml
  • Environment: pypi (for PyPI), testpypi (for TestPyPI)
  • Project name: p6xer-mcp-server

2) Create GitHub Environments

In repository settings, create two environments:

  • pypi
  • testpypi

Recommended security setup:

  • Require manual approval for pypi
  • No approval required for testpypi

3) Build locally (optional sanity check)

bash
python -m pip install --upgrade build twinepython -m buildpython -m twine check dist/*

4) Release flow

  • Push to main: publishes to TestPyPI
  • Push tag v* (for example v0.1.1): publishes to PyPI
bash
git tag v0.1.1git push origin v0.1.1

Source: README.md at commit 416ec11

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.3LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts