p6xer MCP Server MCP Server
io.github.osama-ata/p6xer-mcp-server
Parse, query, and analyze Primavera P6 XER schedule files with AI-powered tools.
What is the p6xer MCP Server MCP server?
The P6XER MCP Server is a Model Context Protocol server for Primavera P6 XER files that exposes 13 tools, 3 resources, and 2 prompts for parsing and analyzing project schedules. It enables AI clients like Claude and Cursor to interactively query activities, resources, critical paths, and earned value metrics from .xer files.
This server bridges Primavera P6 scheduling data and AI agents, allowing you to parse XER files, extract project activities and resources, identify critical paths, perform DCMA schedule quality checks, calculate earned value metrics, and generate reports—all conversationally through Claude or Cursor.
How to install p6xer MCP Server
Copy-paste configuration for popular MCP clients.
P6XER_API_KEYsecretAPI key used to authenticate with p6xer service.
P6XER_ENDPOINTOptional p6xer endpoint URL (default uses local p6xer daemon).
P6XER_LOG_LEVELOptional log verbosity level (e.g., DEBUG, INFO, WARN, ERROR).
Tools & capabilities
Tools this server exposes to the agent.
parse_xer_file— Parse an XER file and return project list, totals, and status breakdownsget_project_activities— Retrieve activities with optional filters by project_id, project_short_name, status, or task_typeget_critical_path— Identify critical path activities (float ≤ 0), sorted by early start dateanalyze_resource_utilization— Analyze planned/actual hours and costs per resource, with over-allocation flagscheck_schedule_quality— Perform DCMA-style schedule quality checks for missing logic, long durations, high float, and unresourced tasksget_resources— List resources, optionally filtered by type (Labor, Material, Equipment)get_resource_assignments— Retrieve resource–activity assignments with enriched names and costsget_wbs— Retrieve the Work Breakdown Structure hierarchyget_relationships— Get predecessor/successor relationships enriched with task codesget_calendars— Retrieve calendar definitions with hours-per-period dataget_schedule_summary— Get at-a-glance schedule statistics: counts, date range, and critical activity countget_earned_value— Calculate Earned Value Management metrics: PV, EV, AC, CV, SV, CPI, SPI, EAC per projectget_activity_detail— Retrieve full detail for a single activity including predecessors, successors, and resource assignments
Use cases
- Parse a Primavera P6 XER file and generate an executive summary of all projects and their status
- Identify critical path activities and activities at risk of delay to prioritize management focus
- Analyze resource utilization and over-allocation to optimize workforce planning and costs
- Perform DCMA schedule quality checks to identify missing logic, long durations, and unresourced tasks
- Calculate earned value metrics (CPI, SPI, EAC) to track project performance and forecast completion
p6xer MCP Server MCP server FAQ
It's an MCP server that parses Primavera P6 XER schedule files and exposes 13 tools for querying activities, resources, critical paths, and earned value metrics. It integrates with Claude Desktop, Claude Code, and Cursor to enable conversational schedule analysis.
Yes, the P6XER MCP Server is open-source under the MIT license and free to use.
Install via PyPI (pip install p6xer-mcp-server) or use uvx (uvx p6xer-mcp-server), then add the server to your claude_desktop_config.json with the command and args shown in the README.
The README focuses on Claude Desktop and Claude Code. For Cursor, follow the same MCP server installation pattern: install the package and configure it in Cursor's MCP settings.
No, the server does not require authentication. It works directly with local XER files you provide.
Python 3.10 or higher is required. The server is built on PyP6XER and the MCP framework.
README (reference)
Source of truth, from the repository.
P6XER MCP Server
mcp-name: io.github.osama-ata/p6xer-mcp-server
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)
| Tool | Description |
|---|---|
parse_xer_file | Parse an XER file — project list, totals, status breakdowns |
get_project_activities | Activities with filters: project_id, project_short_name, status, task_type |
get_critical_path | Critical path activities (float ≤ 0), sorted by early start |
analyze_resource_utilization | Planned/actual hours & costs per resource; over-allocation flags |
check_schedule_quality | DCMA-style check: missing logic, long durations, high float, unresourced tasks |
get_resources | List resources, optionally filtered by type |
get_resource_assignments | Resource–activity assignments with enriched names and costs |
get_wbs | Work Breakdown Structure hierarchy |
get_relationships | Predecessor/successor relationships enriched with task codes |
get_calendars | Calendar definitions with hours-per-period data |
get_schedule_summary | At-a-glance stats: counts, date range, critical count |
get_earned_value | EVM: PV, EV, AC, CV, SV, CPI, SPI, EAC per project |
get_activity_detail | Full detail for one activity (preds + succs + resources) |
📋 Resources (3)
| URI | Description |
|---|---|
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)
| Prompt | Types |
|---|---|
analyze_xer_project | general · schedule · resources · progress · quality |
xer_reporting_prompt | executive · detailed · critical_path · resource · milestone |
� Install from Store
Via PyPI (uvx — no install needed)
uvx p6xer-mcp-server
Via PyPI (pip)
pip install p6xer-mcp-server
p6xer-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:
claude mcp add p6xer -- uvx p6xer-mcp-server
Claude Desktop config (after PyPI install)
{
"mcpServers": {
"p6xer": {
"command": "uvx",
"args": ["p6xer-mcp-server"]
}
}
}
�📦 Installation
# Clone the repo
git clone https://github.com/osama-ata/p6xer-mcp-server.git
cd p6xer-mcp-server
# Install with uv (recommended)
uv sync
# Or with pip
pip install "mcp[cli]>=1.6.0,<2.0.0" pyp6xer
🏃 Running
Development / MCP Inspector:
uv run mcp dev src/p6xer_mcp_server/server.py
Stdio (Claude Desktop / Claude Code):
uv run p6xer-mcp-server
🔌 Claude Desktop
Add to claude_desktop_config.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)
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.0pyp6xer >= 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:
- PyPI: https://pypi.org/manage/account/publishing/
- TestPyPI: https://test.pypi.org/manage/account/publishing/
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:
pypitestpypi
Recommended security setup:
- Require manual approval for
pypi - No approval required for
testpypi
3) Build locally (optional sanity check)
python -m pip install --upgrade build twine
python -m build
python -m twine check dist/*
4) Release flow
- Push to
main: publishes to TestPyPI - Push tag
v*(for examplev0.1.1): publishes to PyPI
git tag v0.1.1
git push origin v0.1.1
Related MCP servers

Genie Expense Tracker
Read-only access to Genie accounts, transactions, investments, and financial summaries.

Canary MCP
Read-only IBKR MCP: account, positions, brief, regime, stress, reporting, Edge, and risk.
An MCP server that provides tools to author OSCAL security compliance documentation

Anamnesis
Cross-machine, file-first memory for Claude Code: markdown + SQLite FTS5, synced with git

Zoteus
Access your Zotero library inside Claude, ChatGPT, and Cursor—search, cite, extract passages, and manage your research.

chartlink
Charts and tables for AI agents with live-updating embed links. No account: signup returns a key.
