flist-mcp
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_orderandsource_orderfilelists. - Diagnostics, missing includes, undefined design macros, and unresolved external symbols.
full, elaboratedrtl, and compactexternaldependency 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
- Call
analyze_top(repository, top_modules). - If it returns
needs_resolution, select candidates fromrequired_definition_conflictsandrequired_include_conflicts, then callanalyze_topagain. - When it returns
ready_for_diagnostics, use its topologically sorted filelists. - Call
diagnose_top()for semantic diagnostics orget_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
- Getting started and MCP configuration
- Agent workflow and result semantics
- Dependency graph views
- Development and architecture
- Versioning and release artifacts
- Current CVA6 examples
- Contributing
- Security policy
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)
| File | Size | Uploaded | |
|---|---|---|---|
| flist_mcp-0.16.0.tar.gz | 183.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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