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. |
Capabilities
Features and capabilities supported by this server
| 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