Skip to main content

flist-mcp

CI Codecov PyPI GitHub tag Python 3.10+ uv Ruff mypy: strict License: MIT

flist-mcp is a Slang-backed MCP server that helps coding agents construct SystemVerilog filelists. Given one or more top modules, it discovers the reachable compilation closure, returns package and source files in topological order, finds include roots, reports ambiguous definitions, and exposes diagnostics and focused dependency graphs.

Slang remains the source of truth for parsing, elaboration, diagnostics, and dependency ordering. The server does not parse RTL with regular expressions, invent its own topological order, or emit a build-system-specific manifest.

Features

  • Iterative resolution of duplicate module, interface, and package definitions.
  • Automatic discovery of unique repository-local include roots.
  • Explicit resolution when several headers satisfy the same include path.
  • Separate topological package_order and source_order filelists.
  • Diagnostics, missing includes, undefined design macros, and unresolved external symbols.
  • full, elaborated rtl, and compact external dependency graph views.
  • Strict machine-readable MCP input and output schemas.

Quick start

Install and start the latest PyPI release with uv:

uvx flist-mcp

Example stdio MCP configuration using the published package:

{
  "mcpServers": {
    "flist": {
      "command": "uvx",
      "args": ["flist-mcp"]
    }
  }
}

For a reproducible client configuration, pin a release explicitly:

{
  "command": "uvx",
  "args": ["--from", "flist-mcp==0.16.0", "flist-mcp"]
}

Platform requirements

flist-mcp requires CPython 3.10 or newer. CI currently validates CPython 3.10 on Ubuntu. The server itself is Python, but pyslang==11.0.0 is a native extension and determines platform availability. Upstream provides wheels for CPython 3.10 through 3.14 on:

  • Linux with glibc 2.27 or newer, on x86-64 and AArch64.
  • macOS 11 or newer, on Apple Silicon and Intel via universal2 wheels.
  • 64-bit Windows on x86-64.

Prebuilt pyslang wheels are not available for Alpine/musl Linux, 32-bit systems, Windows ARM64, or other architectures; these platforms are outside the tested flist-mcp runtime matrix.

Git is not required to analyze an existing source directory. It is needed only to clone this repository for development and by the real-world integration tests that fetch pinned RTL projects.

Agent flow

  1. Call analyze_top(repository, top_modules).
  2. If it returns needs_resolution, select candidates from required_definition_conflicts and required_include_conflicts, then call analyze_top again.
  3. When it returns ready_for_diagnostics, use its topologically sorted filelists.
  4. Call diagnose_top() for semantic diagnostics or get_dependency_graph(view=...) for a focused graph. Both reuse one cached semantic analysis.

Only one active top is stored in a server process. Changing the repository, top modules, or source globs starts a new flow.

Documentation

Development

Development requires Git and uv:

git clone https://github.com/Bigyin1/flist-mcp.git
cd flist-mcp
uv sync --python 3.10 --frozen
make check
make check-all

make check is network-free. make check-all additionally downloads pinned sparse checkouts of PULP AXI and CVA6 into the ignored .realworld-cache directory and runs the integration and performance suite.

License

Licensed under the MIT License.

Release files for flist-mcp 0.16.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for flist-mcp 0.16.0
File Size Uploaded
flist_mcp-0.16.0.tar.gz 183.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for flist-mcp 0.16.0
File Interpreter ABI Platform
flist_mcp-0.16.0-py3-none-any.whl Python 3 none any Details

Total release size: 213.6 kB

Release files / flist_mcp-0.16.0.tar.gz

Download URL flist_mcp-0.16.0.tar.gz
Size 183.7 kB
Tags Source
SHA-256 checksum
How to use checksums
9a2ac38c649db2bc9ddbcb9d63c236f4dbc379ef55b85e084c6f95115b8e9e80
BLAKE2b-256 checksum
How to use checksums
1cb16e046d2f7427b4c1404c397829b554f79c2d88d23d44b87d1d05a3ea76da
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / flist_mcp-0.16.0-py3-none-any.whl

Download URL flist_mcp-0.16.0-py3-none-any.whl
Size 29.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e8d3278edb16cbb81445bb66a279caa735cb6d239d5abef5ce3244cbcc944c1d
BLAKE2b-256 checksum
How to use checksums
72c9e9050e5c9243993f7d73b84cbd3dca6098b2b116e175d8e1ecae6956d7cf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release history Release notifications | RSS feed

0.17.0

2 release files

This release

0.16.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page