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. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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_qualityB | 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_updateA | Update multiple activities in a single call. |
| pyp6xer_write_fileA | 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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