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:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
claude 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.xer
project_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.md
- Python β₯ 3.10
mcp[cli] >= 1.6.0, < 2.0.0pyp6xer >= 1.16.0
MIT
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:
- 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
In repository settings, create two environments:
pypitestpypi
Recommended security setup:
- Require manual approval for
pypi - No approval required for
testpypi
python -m pip install --upgrade build twine
python -m build
python -m twine check dist/*- 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