1. Conduid
  2. Developer Tools
  3. Py3plex
MCP server · Developer Tools

Py3plex

Py3plex - A multilayer complex network visualization and analysis library in python3

80Excellent

Scored 3 hours ago · breakdown

About Py3plex

Py3plex is an MCP server published by SkBlaz in the Developer Tools category: py3plex - A multilayer complex network visualization and analysis library in python3. It has been installed 0 times through Conduid.

The repository has 180 stars and 38 forks, with the last commit 6 months ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues (0) before depending on it in production.

Install

Install
npx py3plex

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Ask AI

Ask AI about Py3plex

Powered by Claude · Grounded in docs

I know everything about Py3plex. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

  • ·README presentNot checked yet.
  • ·License declaredNot checked yet.
  • ·Tests presentNot checked yet.
  • ·Dependencies pinnedNot checked yet.
  • ·No dynamic code executionNot checked yet.
  • !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.

Releases

v2.0.2v2.0.2 · 15 Jul 2026What's Changed Fix layer_regularized embedding bug by @popchanovska in https://github.com/SkBlaz/py3plex/pull/1406 feat: Phase 1 Lean 4 formal verification — filterFusion theorem + CI by @SkBlaz with @Copilot in…
v2.0.12.0.1 · 5 Jul 2026What's Changed Compact README ecosystem-positioning table for faster scanning by @SkBlaz with @Copilot in https://github.com/SkBlaz/py3plex/pull/1370 Remove confirmed dead symbols in optimizer rewrite and plan node layers by @SkBlaz with…
v2.0.02.0.0 · 19 May 2026What's Changed Improve coverage for embedding evaluation helpers and fallback branches by @Copilot in https://github.com/SkBlaz/py3plex/pull/1353 Fix DSL UQ ergonomics and harden quickstart CI apt install step by @Copilot in…
v1.1.71.1.7 · 20 Apr 2026What's Changed [WIP] Fix error during CI version push to PyPI by @Copilot in https://github.com/SkBlaz/py3plex/pull/1295 Polish manuscript structure and methodology framing across Chapters 1–18 and Appendices A–E by @Copilot in…
v1.1.51v1.1.51 · 23 Mar 2026What's Changed Bumping library version for project by @Copilot in https://github.com/SkBlaz/py3plex/pull/1293 Full Changelog**: https://github.com/SkBlaz/py3plex/compare/v1.1.5...v1.1.51

README

Tests Examples Tutorial Code Quality Benchmarks Documentation Formal Verification Fuzzing PyPI version PyPI - Downloads CLI Tool Docker Lines of Code Test Count

Multilayer networks are complex networks with additional information assigned to nodes or edges (or both). This library includes some of the state-of-the-art algorithms for decomposition, visualization and analysis of such networks.

Key Features:

  • SQL-like DSL for intuitive network queries with smart defaults
  • Multilayer network visualization and analysis
  • Community detection and centrality measures
  • Network decomposition and embeddings
from py3plex.core import datasets
from py3plex.dsl import Q

# Load a built-in multilayer biological network (~500 nodes, 4 layers)
network = datasets.fetch_multilayer("human_ppi_gene_disease_drug")

# Find key regulator candidates with integrated community detection and uncertainty quantification
master_regulators = (
    Q.communities(                           # Automated community detection
        mode="pareto",                       # Multi-objective Pareto selection
        uq=True,                             # Uncertainty quantification enabled
        uq_n_samples=30,                     # Robustness via 30 perturbed runs
        uq_method="seed",                    # Vary random seeds for stability
        seed=42,                             # Reproducibility
        write_attrs={                        # Attribute names for community info
            "community_id": "community_id",
            "community_stability": "community_stability",
        },
    )
    .nodes()                                 # Switch to node-level analysis
    .node_type("gene")                       # Filter by node type
    .where(degree__gt=3)                     # Remove peripheral nodes
    .uq(method="perturbation", n_samples=100, ci=0.95, seed=42)  # Quantify confidence
    .compute("betweenness_centrality", "pagerank", "degree_centrality")
    .per_layer()                             # Group by layer
        .top_k(30, "betweenness_centrality__mean")  # Top 30 per layer by mean
    .end_grouping()
    .coverage(mode="at_least", k=2)          # Keep nodes that are hubs in ≥2 layers
    .mutate(                                 # Create derived influence score
        score=lambda row: (
            0.5 * row.get("betweenness_centrality__mean", 0.0) +
            0.3 * row.get("pagerank__mean", 0.0) +
            0.2 * row.get("degree_centrality__mean", 0.0)
        )
    )
    .order_by("score", desc=True)
    .limit(20)                               # Final top 20 candidates
    .explain(neighbors_top=5)                # Enrich: community ID, top 5 partners, layers
    .execute(network)
)

df = master_regulators.to_pandas(expand_uncertainty=True, expand_explanations=True)
print(df[["id", "layer", "community_id",
          "betweenness_centrality__mean", "betweenness_centrality_ci95_low",
          "betweenness_centrality_ci95_high", "score", "top_neighbors"]].head(10))

Safe chaining order (DSL v2)

Use a strict two-phase flow:

  1. Build query on Q... (.where(), .compute(), .order_by(), .per_layer(), .coverage(), ...)
  2. Execute once with .execute(network)
  3. Handle results on QueryResult (.to_pandas(), .group_summary(), .to_json(), ...)

Example output:

    id  layer  community_id  betweenness_centrality__mean  betweenness_centrality_ci95_low  betweenness_centrality_ci95_high     score  top_neighbors
0  252      0            42                      0.025961                         0.021820                          0.030102  0.015577  [{'id': '91', 'weight': 2.3}, {'id': '419', 'weight': 1.9}]
1   91      0            42                      0.024918                         0.020902                          0.028934  0.014951  [{'id': '252', 'weight': 2.3}, {'id': '103', 'weight': 2.1}]
2  419      0            42                      0.024184                         0.020298                          0.028070  0.014510  [{'id': '252', 'weight': 1.9}, {'id': '91', 'weight': 1.7}]
3  103      0            42                      0.023450                         0.019596                          0.027304  0.014069  [{'id': '91', 'weight': 2.1}, {'id': '252', 'weight': 1.8}]
4  375      0            42                      0.022716                         0.018894                          0.026538  0.013628  [{'id': '91', 'weight': 1.8}, {'id': '252', 'weight': 1.6}]

Key features demonstrated:

  • Streamlined API: Community detection integrated directly into the DSL query chain
  • AutoCommunity: Multi-objective Pareto-optimal selection across algorithms (Louvain, Leiden, etc.)
  • Uncertainty Quantification: Confidence intervals for both community detection and centrality measures
  • Cross-layer analysis: .coverage(mode="at_least", k=2) keeps only nodes that are hubs in ≥2 layers
  • Interpretability: .explain() enriches results with community IDs, top interaction partners, and layer presence
  • Composite scoring: Weighted combination of multiple centrality measures for robust ranking

Py3plex Visualization Showcase

Getting Started

Installation

We recommend using uv for fast, reliable Python environment management:

# Install uv (if not already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh

# Create and activate virtual environment
uv venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install py3plex
uv pip install py3plex

# Or install from source with development dependencies
uv pip install -e ".[dev]"

Alternatively, use pip:

pip install py3plex

Optional Features

Install additional features as needed:

# MCP server for AI agent integration (requires Python 3.10+)
pip install py3plex[mcp]

# Community detection algorithms
pip install py3plex[algos]

# Advanced visualization
pip install py3plex[viz]

# All optional features
pip install py3plex[mcp,algos,viz]

# Common optional feature bundle (algorithms + visualization + workflows + arrow + mcp)
pip install py3plex[optional]

Contributing (First PR Quick Path)

If this is your first contribution, use this sequence:

# 1) Create local dev environment and install package
make setup
make dev-install

# 2) Run formatting and checks before opening a PR
make format
make lint
make test

Helpful commands:

make help   # List all project commands
make ci     # Run lint + tests in CI-style order

Safety notes for contributors:

  • Keep changes focused and add tests next to the feature you modify.
  • Do not add new markdown files unless explicitly requested (enforced by tests/test_link_checker.py to prevent documentation drift).
  • Prefer running targeted tests first, then broader checks before opening a PR.

MCP Integration (AI Agents)

py3plex provides a Model Context Protocol (MCP) server for integration with AI coding assistants:

Requirements: Python 3.10 or higher (due to MCP SDK dependency)

# Install with MCP support (Python 3.10+ required)
pip install py3plex[mcp]

# Start MCP server
py3plex-mcp

Configure Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "py3plex": {
      "command": "py3plex-mcp"
    }
  }
}

The MCP server exposes:

  • 7 tools: Load networks, run queries (with DSL v2 support), detect communities, export results, and more
  • 3 resources: Complete documentation, DSL v2 reference, and tool schemas
  • DSL v2 support: Modern builder API with type hints (Q.nodes().where(degree__gt=5).compute('pagerank'))
  • Security-first: Safe file access, automatic output directory, structured errors

See AGENTS.md for complete MCP documentation including DSL v2 examples.

Resources

License

Py3plex is released under the MIT License.

Note on licensing: Prior to version 1.0, the project was distributed under the BSD-3-Clause license. Starting with version 1.0, the license was changed to MIT to better align with the broader Python scientific ecosystem and simplify contribution and reuse. Both licenses are permissive and OSI-approved.

Citations

@Article{Skrlj2019,
author={Skrlj, Blaz
and Kralj, Jan
and Lavrac, Nada},
title={Py3plex toolkit for visualization and analysis of multilayer networks},
journal={Applied Network Science},
year={2019},
volume={4},
number={1},
pages={94},
abstract={Complex networks are used as means for representing multimodal, real-life systems. With increasing amounts of data that lead to large multilayer networks consisting of different node and edge types, that can also be subject to temporal change, there is an increasing need for versatile visualization and analysis software. This work presents a lightweight Python library, Py3plex, which focuses on the visualization and analysis of multilayer networks. The library implements a set of simple graphical primitives supporting intra- as well as inter-layer visualization. It also supports many common operations on multilayer networks, such as aggregation, slicing, indexing, traversal, and more. The paper also focuses on how node embeddings can be used to speed up contemporary (multilayer) layout computation. The library's functionality is showcased on both real and synthetic networks.},
issn={2364-8228},
doi={10.1007/s41109-019-0203-7},
url={https://doi.org/10.1007/s41109-019-0203-7}
}

and

@InProceedings{10.1007/978-3-030-05411-3_60,
author="{\v{S}}krlj, Bla{\v{z}}
and Kralj, Jan
and Lavra{\v{c}}, Nada",
editor="Aiello, Luca Maria
and Cherifi, Chantal
and Cherifi, Hocine
and Lambiotte, Renaud
and Li{\'o}, Pietro
and Rocha, Luis M.",
title="Py3plex: A Library for Scalable Multilayer Network Analysis and Visualization",
booktitle="Complex Networks and Their Applications VII",
year="2019",
publisher="Springer International Publishing",
address="Cham",
pages="757--768",
abstract="Real-life systems are commonly represented as networks of interacting entities. While homogeneous networks consist of nodes of a single node type, multilayer networks are characterized by multiple types of nodes or edges, all present in the same system. Analysis and visualization of such networks represent a challenge for real-life complex network applications. The presented Py3plex Python-based library facilitates the exploration and visualization of multilayer networks. The library includes a diagonal projection-based network visualization, developed specifically for large networks with multiple node (and edge) types. The library also includes state-of-the-art methods for network decomposition and statistical analysis. The Py3plex functionality is showcased on real-world multilayer networks from the domains of biology and on synthetic networks.",
isbn="978-3-030-05411-3"
}

README mirrored from the source repository 3 hours ago. The original is authoritative.

Questions

About Py3plex

How do I install Py3plex?

Run npx py3plex, then add the server to your MCP client's configuration. Conduid has recorded 0 installs, so the command is known to work with current clients.

Is Py3plex safe to use with an AI agent?

Its trust score is 80 out of 100 (excellent). It passes 0 of 1 static security checks; the failures are listed above. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Py3plex still maintained?

Yes — the latest release is v2.0.2 (15 Jul 2026), and the last commit was 6 months ago. The repository has 180 stars and 0 open issues.