This is the Model Context Protocol (MCP) Server for P6 XER files, exposes machine-readable MCP manifests for PyP6XER's modules for use by AI models.
SaferSkills independently audited p6xer MCP Server (MCP Server) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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.
| 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) |
| 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 |
| Prompt | Types |
|---|---|
analyze_xer_project | general · schedule · resources · progress · quality |
xer_reporting_prompt | executive · detailed · critical_path · resource · milestone |
uvx p6xer-mcp-serverpip install p6xer-mcp-server
p6xer-mcp-serverSearch for p6xer-mcp-server on smithery.ai and click Install. It will generate the correct Claude Desktop config automatically.
The server is listed in the GitHub MCP Registry. In Claude Code:
claude mcp add p6xer -- uvx p6xer-mcp-server{
"mcpServers": {
"p6xer": {
"command": "uvx",
"args": ["p6xer-mcp-server"]
}
}
}# 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" pyp6xerDevelopment / MCP Inspector:
uv run mcp dev src/p6xer_mcp_server/server.pyStdio (Claude Desktop / Claude Code):
uv run p6xer-mcp-serverAdd to claude_desktop_config.json:
{
"mcpServers": {
"p6xer": {
"command": "uvx",
"args": ["p6xer-mcp-server"]
}
}
}Config file locations:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.jsonclaude mcp add p6xer -- uvx p6xer-mcp-serverOnce 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.xerproject_id – numeric P6 project ID (e.g. "1234")project_short_name – project short name string (e.g. "PROJ1")TK_NotStart · TK_Active · TK_Complete
TT_Task · TT_Mile · TT_FinMile · TT_WBS
RT_Labor · RT_Mat · RT_Equip
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.mdmcp[cli] >= 1.6.0, < 2.0.0pyp6xer >= 1.16.0MIT
This repository includes a release workflow at .github/workflows/publish-to-pypi.yml based on the PyPA guide and pypa/gh-action-pypi-publish.
Create trusted publishers for this exact workflow file:
Use these values:
osama-atap6xer-mcp-serverpublish-to-pypi.ymlpypi (for PyPI), testpypi (for TestPyPI)p6xer-mcp-serverIn repository settings, create two environments:
pypitestpypiRecommended security setup:
pypitestpypipython -m pip install --upgrade build twine
python -m build
python -m twine check dist/*main: publishes to TestPyPIv* (for example v0.1.1): publishes to PyPIgit tag v0.1.1
git push origin v0.1.1~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.