PyLops-MCP
MCP server exposing PyLops operators and solvers in a structured way, so agents and users can query them instead of web searching or crawling files.
The catalog is built by introspecting the installed PyLops
(numpydoc) and dumped to one file per PyLops release, pylops_mcp/data/indexes/<version>.json
(make index; releases from 2.4.0 are shipped).
Tools
| Tool | Arguments | Description |
|---|---|---|
list_versions |
none | PyLops versions that have an index, and the default (the latest). |
search |
query (str), kind ("all" | "operator" | "solver" | "workflow", default "all"), pylops_version (str, optional) |
Case-insensitive substring search over names and docstring summaries. Returns up to 20 hits (name, kind, module, summary), name matches first. |
list_operators |
module (str, optional, e.g. "basicoperators"), pylops_version (str, optional) |
Sorted list of operator names, optionally filtered by module. |
list_solvers |
module (str, optional, e.g. "sparsity"), pylops_version (str, optional) |
Sorted list of solver names, optionally filtered by module. |
list_workflows |
module (str, optional), pylops_version (str, optional) |
Sorted list of workflow names (inversion/decomposition helpers such as MDD, PrestackInversion), optionally filtered by module. |
get_operator |
name (str), pylops_version (str, optional) |
Signature, parameters, notes and examples of an operator. Lookup is case-insensitive. |
get_solver |
name (str), pylops_version (str, optional) |
Signature, parameters, notes and examples of a solver. Lookup is case-insensitive. |
get_workflow |
name (str), pylops_version (str, optional) |
Signature, parameters, notes and examples of a workflow. Lookup is case-insensitive. |
Every tool except list_versions takes an optional pylops_version (e.g. "2.6",
resolved to the highest matching release; default: the latest). An unknown version
returns an error with the available_versions. All responses include the
resolved pylops_version. An unknown name returns an error
together with up to 5 close-match suggestions.
Operator descriptions are also exposed as the MCP resource
pylops://operators/{name} (latest) and pylops://{pylops_version}/operators/{name}.
Installation
For Users
No clone or index build is needed: the PyPI release ships prebuilt indexes for PyLops 2.4.0 and later (CI builds any missing release at release time).
Claude Code:
claude mcp add --scope user pylops -- uvx pylops-mcp
Claude Desktop: add to claude_desktop_config.json:
{
"mcpServers": {
"pylops": { "command": "uvx", "args": ["pylops-mcp"] }
}
}
Codex:
codex mcp add pylops -- uvx pylops-mcp
or add to ~/.codex/config.toml:
[mcp_servers.pylops]
command = "uvx"
args = ["pylops-mcp"]
OpenCode: add to opencode.json (project) or
~/.config/opencode/opencode.json (global):
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"pylops": { "type": "local", "command": ["uvx", "pylops-mcp"], "enabled": true }
}
}
PI: PI has no built-in MCP support, so first install the
pi-mcp-adapter extension:
pi install npm:pi-mcp-adapter
then add to ~/.pi/agent/mcp.json (global) or .pi/mcp.json (project):
{
"mcpServers": {
"pylops": { "command": "uvx", "args": ["pylops-mcp"] }
}
}
For Developers
This project is developed with Claude Code, so all the commands below are for
Claude Code only. For other clients, translate the uv run ... command into
that client's MCP configuration (see For Users).
Clone the repository first; the commands below assume it lives at /path/to/pylops-mcp.
1. This project only
Run from inside the repository folder. The server is registered for this
project only (--scope local, the default), and uv run uses the project's
.venv. Nothing is installed globally.
claude mcp add pylops -- uv run pylops-mcp
2. All projects, running from source
Register the server for every project and tell uv where the project lives, so
it works from any folder and always runs your current source:
claude mcp add --scope user pylops -- uv run --directory /path/to/pylops-mcp pylops-mcp
3. All projects, as a global tool
Install pylops-mcp as a standalone tool and register the plain command
(add -e to the install to pick up source changes without reinstalling):
uv tool install /path/to/pylops-mcp
claude mcp add --scope user pylops -- pylops-mcp
Rebuilding the index
Running make index upfront is optional: the repository ships prebuilt
indexes in pylops_mcp/data/indexes/, and if there are none the server falls
back to introspecting the installed PyLops live at every startup (slower).
make indexindexes the PyLops installed in the project environment.make index-all VERSIONS="2.4.0 2.5.0"builds specific releases, each in an isolated environment.make index-missingbuilds every PyPI release (>= 2.4.0) that has no index yet.
Indexes of released versions are kept as they are; rebuild one only if you change the introspection code.
Releasing
Versions come from git tags (hatch-vcs):
- dry run: Actions → Release → Run workflow →
testpypi - release: Releases → Draft a new release → create tag → Publish release (publishes to PyPI)
Metadata
Release files for pylops-mcp 0.3.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 | Provenance | |
|---|---|---|---|---|
| pylops_mcp-0.3.0.tar.gz | 247.2 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pylops_mcp-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 500.3 kB
Release files / pylops_mcp-0.3.0.tar.gz
| Download URL | pylops_mcp-0.3.0.tar.gz |
|---|---|
| Size | 247.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d5db83b227863397f165c3fe466d1523c5336ce3ed180f657f56a60f3922c4da
|
|
BLAKE2b-256 checksum How to use checksums |
3fc75fffc0ad3b4694b9c40b5c9cfe0370b74388d7989ddbec5945b5b376c56f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 25, 2026.
Transparency logRelease files / pylops_mcp-0.3.0-py3-none-any.whl
| Download URL | pylops_mcp-0.3.0-py3-none-any.whl |
|---|---|
| Size | 253.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
03c1305bbf886b10b0d6746b38162978a0b75c699e344dc1df99e9102ce3c64b
|
|
BLAKE2b-256 checksum How to use checksums |
9b0bc84ed1d3d91bf3c195c68e93a368790dc4c452da76fca7ec484eb0a5150e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 25, 2026.
Transparency logSecurity for pylops-mcp 0.3.0
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for pylops_mcp-0.3.0.tar.gz
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 Oct 25, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.