Skip to main content
Glama
paulieb89

PyP6Xer MCP Server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
API_KEYNoA secret key used to enable and enforce authentication for self-hosted deployments.
AI_MODELNoThe specific AI model to use (default: gpt-4o-mini). Required if using a non-default model like 'claude-3-5-sonnet-20240620'.
OPENAI_API_KEYNoAPI key for OpenAI models. Used by the server for AI-assisted analysis features or when running the full stack.
ANTHROPIC_API_KEYNoAPI key for Anthropic models. Required if using Claude/Anthropic models for analysis.

Capabilities

Features and capabilities supported by this server

CapabilityDetails
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

NameDescription
pyp6xer_get_activity_schemaA

Return the available field names for activity read tools.

Use the returned field names with the fields parameter of pyp6xer_list_activities, pyp6xer_get_activity, and pyp6xer_search_activities to limit response size to only the columns you need.

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:

  • Missing predecessors / successors (open ends)

  • Activities with lags or leads

  • Activities with hard constraints

  • Negative total float

  • Activities with no resources (optional warning)

  • Milestone checks

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:

  • BCWS (PV): Budgeted Cost of Work Scheduled = total budgeted cost × duration %

  • BCWP (EV): Budgeted Cost of Work Performed = sum of (budget × % complete) per task

  • ACWP (AC): Actual Cost of Work Performed = sum of actual costs

  • SPI: Schedule Performance Index = EV / PV

  • CPI: Cost Performance Index = EV / AC

  • CV: Cost Variance = EV - AC

  • SV: Schedule Variance = EV - PV

  • EAC: Estimate at Completion = BAC / CPI

  • VAC: Variance at Completion = BAC - EAC

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:

  • status_code: 'TK_NotStart', 'TK_Active', or 'TK_Complete'

  • phys_complete_pct: physical percent complete (0–100)

  • remain_drtn_hr_cnt: remaining duration in hours

  • act_start_date / act_end_date: actual dates (YYYY-MM-DD)

  • expect_end_date: expected finish (YYYY-MM-DD)

  • target_start_date / target_end_date: baseline dates (YYYY-MM-DD)

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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

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