pm4py-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PM4PY_MCP_CWD_HINT | No | Optional but strongly recommended — resolves relative paths against your project root when the server's own CWD isn't under it. |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pingA | Health-check tool. Returns the server name and version. Used by the testing pyramid and by humans verifying that a freshly installed server is reachable from their MCP client (Claude Desktop, Claude Code, MCP Inspector). |
| abstract_log_featuresC | Textual description of log-level features (activity set, concurrency, timing). Wraps |
| abstract_log_attributesB | Textual description of attribute distributions (value frequencies, quantiles). Wraps |
| abstract_variantsB | Trace variants + frequencies + (optionally) per-variant performance. Wraps |
| abstract_dfgA | Directly-follows graph rendered as text. Note: takes |
| abstract_caseA | Describe one case as a natural-language walkthrough of its events.
|
| abstract_streamA | Tail of events in reverse-chronological order. Answers "what happened recently in this log?" without computing variants
or discovering a model. Wraps |
| abstract_petri_netA | Describe a Petri net (from Wraps |
| abstract_ocelA | Textual description of OCEL features for a single object type.
|
| abstract_ocdfgA | Object-centric directly-follows graph as text. Note: takes |
| abstract_declareA | Natural-language description of a discovered DECLARE model. Takes the handle returned by |
| abstract_log_skeletonA | Natural-language description of a discovered log skeleton. Takes the handle returned by |
| abstract_snaA | Describe the top-k connections of a social-network (SNA) model in prose. pm4py's LLM abstractions do NOT ship an
Works on any handle produced by |
| abstract_temporal_profileA | Natural-language description of a discovered temporal profile. Takes the handle returned by |
| conformance_token_replayA | Token-based replay conformance check. Returns mean trace fitness (0.0..1.0) and the count of perfectly-fit
traces. For detailed per-trace diagnostics, re-run the PM4Py
|
| conformance_alignmentsA | Alignment-based conformance check. More accurate than token replay but slower — can take minutes on large
logs. Emits progress events so the client keeps the request alive past its default timeout. |
| set_domain_contextA | Register a domain context (SOP, glossary, process description) under
Limits: 20 KB per context (raises |
| get_domain_contextB | Retrieve a previously-stored domain context. Raises :class: |
| convert_modelA | Convert a process model from one representation to another.
Supported pairs:
Unsupported combinations raise |
| discover_dfgA | Discover the directly-follows graph (DFG) of an event log. Returns a handle for later rendering via |
| discover_petri_netA | Discover a Petri net from an event log.
Returns a handle to the (net, initial_marking, final_marking) triple
plus structural counts. The model is stored with kind |
| discover_process_treeA | Discover a process tree via the Inductive Miner. Process trees compose cleanly and convert to Petri nets / BPMN. Returns a handle to the tree plus its structural shape. |
| discover_bpmnC | Discover a BPMN diagram via the Inductive Miner. Convenience wrapper over |
| discover_declareB | Discover a DECLARE model from an event log. DECLARE is a declarative constraint notation capturing patterns like "response" (if A then eventually B) or "precedence" (B requires A earlier). PM4Py returns a nested dict: template → (activity-tuple → {"support": N, "confidence": N}).
Returns a handle plus counts of templates covered and constraints found. |
| discover_log_skeletonB | Discover a log skeleton — a set of behavioral constraints per activity pair. The log skeleton captures six constraint types (equivalence, always_after, always_before, never_together, directly_follows, activ_freq). Useful as a declarative complement to Petri-net / process-tree discovery.
|
| discover_powlA | Discover a POWL model (Partially Ordered Workflow Language). POWL generalizes process trees by letting siblings have partial-order dependencies rather than strict sequence / concurrency / choice. Useful when the discovered model has unclear sibling ordering.
|
| discover_temporal_profileA | Discover a temporal profile — per-activity-pair mean + stddev of sojourn time. For every ordered activity pair (A, B) seen in any case, the profile
records Returns a handle plus the number of pairs observed. |
| filter_variantsA | Filter a log by trace variant. Exactly one of
|
| filter_time_rangeA | Filter a log by a time window.
|
| filter_attribute_valuesA | Filter a log by event or case attribute values.
|
| filter_case_sizeB | Keep only cases with an event count in Useful for removing outlier cases (very short or very long traces) before discovery / conformance. |
| filter_case_performanceA | Keep only cases whose total elapsed time is in Performance is measured as |
| load_event_logA | Read an event log from disk and store it under a fresh Format is inferred from the file extension when For CSV and Parquet, the three Returns a dict with |
| describe_logA | Return the compact summary for a previously loaded log. Exact same shape as the summary attached to |
| export_logA | Write a log from the registry to disk.
|
| list_workspaceA | List files currently in the workspace directory. Reports each entry's name, absolute path, size, and modification time. Subdirectories are included by name but not recursed into. |
| discover_ocdfgA | Discover an object-centric directly-follows graph (OC-DFG). Returns a handle for later rendering via |
| discover_oc_petri_netA | Discover an object-centric Petri net (OCPN).
Returns a handle to the OCPN plus per-object-type structural counts. |
| filter_ocel_time_rangeB | Keep only events whose timestamp falls in
|
| filter_ocel_attributeA | Filter an OCEL by event or object attribute values.
|
| filter_ocel_object_typesA | Keep or drop entire object types (and every event that only touched them).
|
| filter_ocel_ccA | Connected-component filtering — the OCEL-specific power feature. Dispatches on
PM4Py's CC filters are marked experimental; expect occasional edge-case failures on malformed OCELs. |
| load_ocelA | Read an OCEL 2.0 file from disk and store it under a fresh Format is inferred from the file extension:
Returns a dict with Use |
| describe_ocelA | Return the compact summary for a previously loaded OCEL. Exact same shape as the summary attached to |
| flatten_ocelA | Project an OCEL onto a single object type and return a traditional log handle. This is the Phase 2 composability bridge. The resulting Raises :class: |
| export_ocelA | Write an OCEL from the registry to disk.
|
| visualize_ocdfgA | Render an OC-DFG (from PM4Py colors the edges by object type, so the inline PNG visually separates the per-type flows. Frequency annotations are included by default. |
| visualize_oc_petri_netA | Render an object-centric Petri net (from |
| discover_handover_networkB | Discover the handover-of-work network. An edge A → B means resource A's activity was directly followed by
resource B's activity within the same case. Returns a handle under the |
| discover_working_together_networkB | Discover the working-together network. An edge A ↔ B means resources A and B participated in the same case at least once. Captures collaboration patterns independent of order. |
| discover_subcontracting_networkC | Discover the subcontracting network. An edge A → B means: A did something, then within |
| discover_activity_based_resource_similarityA | Discover the activity-based resource-similarity network. An edge A ↔ B weighted by how similar the activity profiles of A and B are. Captures "who does similar kinds of work" — complements handover by showing skill/role overlap. |
| discover_organizational_rolesB | Discover organizational roles — activity-sharing clusters of resources. pm4py returns a
Returns a handle under |
| render_reportA | Assemble a Markdown executive report from prose findings + artifact links. Parameterstitle
Report heading. Rendered as an H1.
findings
Markdown-formatted narrative. Pass the prose the LLM wrote after
calling Returnsdict
|
| simulate_logA | Simulate an event log by replaying a discovered model. Accepts Petri net (tuple) or process tree handles. BPMN and POWL are NOT
supported by The returned
|
| get_variantsB | Return the most-common trace variants and their counts. Caps output at |
| get_start_end_activitiesA | Return the frequency of start and end activities across all cases. Two dicts keyed by activity name → count. Useful for spotting unexpected entry / exit points in a process. |
| get_case_durationsA | Return summary statistics for per-case durations (seconds). Returns |
| sample_case_idsA | Return a small sample of case IDs from a log. Useful for picking a concrete Strategies:
For |
| get_cycle_timeA | Return the average cycle time (seconds between case completions). Unlike |
| visualize_petri_netA | Render a Petri net (from |
| visualize_dfgC | Render a directly-follows graph (from |
| visualize_process_treeA | Render a process tree (from |
| visualize_bpmnA | Render a BPMN diagram (from |
| visualize_powlA | Render a POWL model (from Graphviz-backed. POWL diagrams show partial-order edges between sub-workflows; the root operator is reported in the caption. |
| visualize_dotted_chartA | Render a dotted chart (Graphviz/neato, PNG-only output via our helper). Dotted charts project events onto a time-vs-value scatter using the
provided Requires the |
| visualize_performance_spectrumA | Render a performance spectrum (Graphviz/neato, PNG-only output via our helper). Plots the duration of each case along an ordered activity list, revealing
bottleneck segments visually. Requires the |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| bottleneck_analysis | Identify slow variants and bottleneck activity edges from the log's performance profile. |
| conformance_workflow | Discover a Petri net and compare token-replay vs alignments fitness. |
| executive_summary | Consolidate the session's findings into a rendered Markdown report. |
| new_log_onboarding | Produce a ≤300-word first-impression summary of an unfamiliar event log. |
| ocel_flattening_workflow | Compare each object type's perspective on an OCEL by flattening and abstracting per-type. |
| organizational_analysis | Map team structure, handoff patterns, and resource roles from a log's resource attribute. |
| variant_exploration | Survey the top-k trace variants and build a Petri net of the dominant one. |
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/azizketata/pm4py-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server