PyP6Xer MCP Server
# PyP6Xer MCP Server
<!-- mcp-name: io.github.paulieb89/pyp6xer-mcp -->
[](https://pypi.org/project/pyp6xer-mcp/)
[](https://safeskill.dev/scan/paulieb89-pyp6xer-mcp)
[](https://glama.ai/mcp/servers/paulieb89/pyp6xer-mcp)
[](https://smithery.ai/servers/bouch/pyp6xer-mcp)
[](https://vscode.dev/redirect/mcp/install?name=pyp6xer&config=%7B%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fpyp6xer-mcp.fly.dev%2Fmcp%22%7D)
[](https://insiders.vscode.dev/redirect/mcp/install?name=pyp6xer&config=%7B%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fpyp6xer-mcp.fly.dev%2Fmcp%22%7D&quality=insiders)
[](https://cursor.com/en/install-mcp?name=pyp6xer&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vcHlwNnhlci1tY3AuZmx5LmRldi9tY3AifQ==)
[](https://vscode.dev/redirect/mcp/install?name=pyp6xer&config=%7B%22command%22%3A%22uvx%22%2C%22args%22%3A%5B%22pyp6xer-mcp%22%5D%7D)
AI-agent tools for Primavera P6 XER schedules. Load, analyse, compare, edit, and export `.xer` files from Claude, ChatGPT, Cursor, or any MCP-compatible client.
PyP6Xer MCP is workflow-oriented, not just a parser. Unlike basic XER readers, it gives AI agents the full project-controls loop: schedule health checks, critical path, delay comparison, progress updates, relationship edits, and write-back to XER.
> Prefer a web interface? [p6.bouch.dev](https://p6.bouch.dev) — upload an XER and analyse it without configuring MCP.
## Use cases
- Ask questions about a Primavera P6 XER schedule
- Run critical path and float analysis
- Compare baseline vs update XER files and identify slipping activities
- Run schedule quality and health checks
- Edit activity fields safely and batch-update progress
- Export modified XER files
- Analyse relationship changes between two XER snapshots
- Build AI workflows for delay analysis and project controls
## Example prompts
- *Load this XER and show the critical path.*
- *Compare baseline.xer and update-03.xer and list major slippages.*
- *Find activities with high float, missing logic, or long durations.*
- *Update activity A1020 to 60% complete and export the edited XER.*
- *Analyse relationship changes between two XER snapshots.*
## Connect
### Hosted (no install)
```json
{
"mcpServers": {
"pyp6xer": {
"type": "http",
"url": "https://pyp6xer-mcp.fly.dev/mcp"
}
}
}
```
### Local (uvx — no clone needed)
```json
{
"mcpServers": {
"pyp6xer": {
"type": "stdio",
"command": "uvx",
"args": ["pyp6xer-mcp"]
}
}
}
```
### Local (from source)
Clone the repo, then point your MCP client at it:
```bash
git clone https://github.com/paulieb89/pyp6xer-mcp.git
cd pyp6xer-mcp
uv sync
```
```json
{
"mcpServers": {
"pyp6xer": {
"type": "stdio",
"command": "uv",
"args": ["run", "server.py"],
"cwd": "/path/to/pyp6xer-mcp"
}
}
}
```
## Usage
```
1. pyp6xer_load_file — load a .xer from a local path, URL, or base64
2. <analysis tools> — analyse the loaded schedule
3. pyp6xer_write_file — persist any edits back to disk
```
Multiple files can be loaded simultaneously using different `cache_key` values.
## Tools (29)
| Category | Tools |
|---|---|
| File | `load_file`, `list_projects`, `clear_cache`, `get_upload_url` |
| Activities | `list_activities`, `get_activity`, `search_activities`, `get_activity_schema` |
| Analysis | `critical_path`, `float_analysis`, `schedule_quality`, `schedule_health_check`, `slipping_activities`, `relationship_analysis`, `lookahead` |
| Progress / EVM | `progress_summary`, `earned_value` |
| Resources | `list_resources`, `resource_utilization` |
| Calendars | `list_calendars` |
| WBS | `wbs_analysis`, `work_package_summary` |
| Export | `export_csv`, `export_xer`, `compare_snapshots`, `generate_report` |
| Write | `update_activity`, `batch_update`, `write_file` |
All tool names are prefixed `pyp6xer_` to avoid conflicts when used alongside other MCP servers.
## Dependencies
- [fastmcp](https://github.com/jlowin/fastmcp) 3.2.4
- [xerparser](https://github.com/HassanEmam/PyP6Xer) ≥ 0.13.0
- [httpx](https://www.python-httpx.org/) ≥ 0.28.0
## Licence
MIT
TDQS
Scored across 29 tools
Several tools overlap in purpose: schedule_health_check consolidates float/critical path/open-end data, generate_report bundles slipping activities/health/earned value, and work_package_summary overlaps with wbs_analysis. The descriptions help, but an agent could easily select the wrong analysis or report tool for a given request.
All tools use a consistent pyp6xer_ prefix and snake_case, with clear list/get/search/update/export verbs for operations. A minority of analysis tools use noun-style names such as critical_path, float_analysis, and earned_value, but the overall pattern remains readable and predictable.
At 29 tools, the surface is dense and exceeds the 25-tool threshold. Many narrow analysis/report variants could be consolidated without losing capability, and the large count increases the chance of an agent picking a redundant tool.
The domain is well covered: loading files, listing projects/calendars/resources/activities, searching, detailed activity views, WBS/earned value/float/critical path/quality analyses, snapshot comparison, and update/write/export workflows are all present. The main gap is that modification is limited to activity fields, with no create/delete or relationship/resource editing.