PyP6Xer MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| API_KEY | No | A secret key used to enable and enforce authentication for self-hosted deployments. | |
| AI_MODEL | No | The specific AI model to use (default: gpt-4o-mini). Required if using a non-default model like 'claude-3-5-sonnet-20240620'. | |
| OPENAI_API_KEY | No | API key for OpenAI models. Used by the server for AI-assisted analysis features or when running the full stack. | |
| ANTHROPIC_API_KEY | No | API key for Anthropic models. Required if using Claude/Anthropic models for analysis. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pyp6xer_get_activity_schemaA | Return the available field names for activity read tools. Use the returned field names with the summary_fields are available on list_activities and search_activities. detail_fields are only available on get_activity (they require fetching relationships and resources which are not on the list view). |
| pyp6xer_load_fileA | Load a Primavera P6 XER file into the analysis cache. Accepts a local file path, an HTTP/HTTPS URL, or a base64-encoded string of the file's binary content. The loaded data is stored under cache_key so multiple schedules can be open simultaneously. |
| pyp6xer_clear_cacheA | Remove one or all loaded XER files from the cache. |
| pyp6xer_get_upload_urlA | Get instructions for uploading an XER file to this server. Since this is a local server, files are loaded directly via pyp6xer_load_file using a local path or URL. |
| pyp6xer_list_projectsA | List all projects in the loaded XER file with summary statistics. Returns project IDs, names, data date, finish date, activity counts, and high-level cost and schedule metrics. |
| pyp6xer_list_activitiesB | List activities with optional filtering and pagination. |
| pyp6xer_get_activityA | Get full details for a single activity including dates, float, costs, resources assigned, and predecessor/successor relationships. |
| pyp6xer_search_activitiesA | Search activities by name or activity ID (case-insensitive substring match). |
| pyp6xer_list_resourcesA | List all resources with assignment counts and cost/quantity totals. |
| pyp6xer_list_calendarsA | List all calendars defined in the XER file. Returns calendar name, type (global/project/resource), hours per day/week/year, and whether it is the project default. |
| pyp6xer_critical_pathA | Return all activities on the critical path (total float ≤ 0 or longest path flag). Activities are sorted by early start date. Includes float, dates, and predecessor/successor counts. |
| pyp6xer_float_analysisA | Analyse total float distribution across activities. Groups activities into float buckets and flags near-critical activities. |
| pyp6xer_schedule_qualityA | Run DCMA-style schedule quality checks. Checks include:
|
| pyp6xer_schedule_health_checkA | Generate a composite schedule health score with narrative summary. Combines data date currency, float distribution, critical path density, open ends, and constraint usage into a single 0–100 health score. |
| pyp6xer_slipping_activitiesA | Find activities that are running late (forecast finish > baseline finish). |
| pyp6xer_lookaheadA | Return activities active within the next N days from the data date. An activity is included if: finish >= data_date AND start <= data_date + days_ahead. This covers in-progress activities and those starting in the window. |
| pyp6xer_relationship_analysisA | Analyse relationship types, lag/lead distribution, and logic density. Reports counts by type (FS/SS/FF/SF), lag distribution, and activities with no logic ties. |
| pyp6xer_resource_utilizationA | Summarise resource loading: planned vs actual vs remaining quantities and costs. |
| pyp6xer_wbs_analysisA | Return the WBS hierarchy with task counts and cost rollups per node. Shows each WBS element's direct and total (rolled-up) activity counts, schedule range, and cost summary. |
| pyp6xer_work_package_summaryA | Summarise leaf-level WBS nodes (work packages) with schedule and cost data. Leaf nodes are WBS elements with no children — the lowest level of the breakdown. |
| pyp6xer_progress_summaryA | Summarise schedule progress: status breakdown, percent complete, milestones. Returns counts by status, weighted percent complete, and milestone statistics. |
| pyp6xer_earned_valueA | Calculate Earned Value Management (EVM) metrics. Metrics:
|
| pyp6xer_generate_reportA | Assemble a complete monthly progress report dataset. Returns structured metrics: progress %, health score, slipping activities, critical path density, and earned value. Use this data to write a monthly narrative with sections: Executive Summary, Schedule Status, Critical Path & Risks, and Outlook. |
| pyp6xer_export_csvA | Export activities to CSV format (returned as a string). |
| pyp6xer_compare_snapshotsA | Compare two loaded XER files (snapshots) to identify schedule changes. Reports added, removed, and changed activities (dates, duration, float, status). Useful for analysing schedule updates between periods. |
| pyp6xer_update_activityA | Update fields on a single activity in the in-memory cache. Changes are held in memory until pyp6xer_write_file is called. Updatable fields:
|
| pyp6xer_batch_updateB | Update multiple activities in a single call. |
| pyp6xer_write_fileC | Write the current (possibly modified) schedule back to a .xer file. Serialises the raw table data (including any updates from pyp6xer_update_activity or pyp6xer_batch_update) and writes to the specified path. |
| pyp6xer_export_xerA | Export the current (possibly modified) schedule as base64-encoded XER bytes. Returns serialised XER content encoded as base64 so callers can offer a file download without requiring a writable local path on the server. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/paulieb89/pyp6xer-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server