Skip to main content

agentless-mcp

agentless-mcp is model-free structural machinery for coding agents: an on-demand tree-sitter repo map at any zoom level (directory tree, skeleton, line slice), symbol and reference lookup for bug localization, and deterministic patch parsing, syntax-checking and candidate validation. It never calls a language model — the calling agent supplies all the reasoning, and this tool supplies the parsing, ranking, containment and verification it would otherwise improvise. It ships as a CLI any agent can invoke over Bash and as a thin stdio MCP server over the same core.

Install

Today, from git:

uv tool install git+https://github.com/dmarlow-personal/agentless-mcp
agentless-mcp warmup

Add the mcp extra for the stdio server (uv tool install "agentless-mcp[mcp] @ git+..."). A PyPI release will follow; until then the git URL is the install route.

Status

Phases 1 through 6 are in. The CLI and the stdio MCP server are both live over one set of application services: repository map, directory tree, skeleton, slice, symbol lookup, symbol expansion, fan-in, location resolution, and the resolved-graph views — explain (one symbol's tiered fan-in and fan-out), path (shortest resolved path between two symbols) and cycles (module-level import cycles). The write side — SEARCH/REPLACE patch parsing, syntax checking, worktree-isolated apply, candidate validation and the equivalence-clustered vote — is CLI-only and never exposed over MCP.

Reference resolution is deterministic and model-free: a name is bound to its candidate definitions through the file's own imports and its own definitions, and every edge carries the discrete evidence tier behind it (same-file, resolved-via-import, unique, name-only-ambiguous). The graph is assembled in memory on every call from the current tree — nothing about it is stored, and there is no watcher.

Parsing happens on demand by default; agentless-mcp index builds a per-repository SQLite cache under $XDG_CACHE_HOME/agentless-mcp/ (never inside the analyzed repository) holding symbols, imports and references for files whose sha256 has not moved. Every answer's receipt names the cache generation and whether it is still the repository's own, and --no-cache / no_cache: true forces on-demand parsing.

A repository may declare its own defaults in an optional .agentless-mcp.json at its root (map budget, max files, granularity, docstrings, stoplist additions, and a test_cmd that only the CLI's validate will use, only when the invocation named none of its own, and only after printing it). The file is repository content: every value is schema-checked and bounded, no key is path-typed, and unknown keys are warnings in the response envelope rather than errors.

Start with docs/agent-guide.md: it is the usage guide written for the agent that will call this.

Development

uv sync --extra mcp
uv run agentless-mcp warmup
uv run pre-commit run --all-files
uv run pytest

uv run pre-commit run --all-files is the gate — it is a strict superset of running ruff by hand (it adds ruff-format, mypy strict, codespell, import-linter and deptry).

Windows support

Linux and macOS are the supported platforms: they are what the test suite runs on, and every guarantee below is asserted there. Windows is documented best effort — the POSIX-only calls have Windows paths, there is no Windows CI, and nothing here has been executed on Windows.

Covered:

  • The whole read surface. Map, tree, skeleton, slice, symbol lookup, fan-in and location resolution are pure parsing and path arithmetic, and paths go through pathlib with repository-relative results normalized to forward slashes.
  • The tag cache, including its single-writer discipline. The index lock is fcntl.flock on POSIX and msvcrt.locking on Windows, selected in util/filelock.py; both are non-blocking, so a second concurrent index run is refused rather than queued on either platform.
  • Patch parsing, syntax checking and the equivalence key.

Not covered, and the difference is real:

  • The timeout guarantee is weaker. On POSIX a timed-out test command has its whole process group killed (SIGTERM, then SIGKILL), so anything it spawned dies with it. On Windows the child is created with CREATE_NEW_PROCESS_GROUP and then terminate()/kill() is sent to the leader only: grandchildren can survive a timeout. If your test command starts a server, expect to clean it up yourself.
  • No Windows CI. The platform dispatch is unit-tested on Linux; the Windows system calls themselves are not exercised anywhere.
  • Anything depending on git worktree behaves as the local git does; it has not been exercised on Windows filesystems.

Security

The tool's posture toward an analyzed repository is read-only and path-confined: the MCP surface exposes read tools only, patch application and test execution are CLI-side and default to an isolated git worktree, and no cache or scratch state is written inside the repository under analysis.

One supply-chain caveat is worth stating up front. Grammars come from tree-sitter-language-pack, which downloads a prebuilt platform bundle on first use. Those bundles are SHA-256 verified against a release manifest, and a mismatch is a hard failure — but the manifest itself (parsers.json) is HTTPS-trusted rather than cryptographically signed. We accept that risk under exact release-version pinning: tree-sitter and tree-sitter-language-pack are pinned as a unit and move only through a reviewed bump. Fetching is confined to an explicit warmup step, and both the manifest URL and the cache directory are overridable for mirrored or air-gapped installs. See docs/supply-chain-audit.md for the full audit.

License

MIT — see LICENSE.

Parts of this package are derived from Agentless (MIT, Copyright (c) 2024 OpenAutoCoder): the line-slice primitives, the location grammar, the SEARCH/REPLACE edit format and its parser, and the candidate filter ladder and vote key. NOTICE names each file and reproduces the upstream license.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agentless_mcp-0.1.0.tar.gz (197.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agentless_mcp-0.1.0-py3-none-any.whl (226.0 kB view details)

Uploaded Python 3

File details

Details for the file agentless_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: agentless_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 197.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"43","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for agentless_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 12f67da9dfdbfc32afdca60d24f33e5d1f1373057f8be7d0ea22f875ba5c5fea
MD5 4945a07cd0c5460e20bec2a4f2f77d14
BLAKE2b-256 70974800764ad6522276d904942c714f01bc61a50bd530236e4f3589c1bb43f5

See more details on using hashes here.

File details

Details for the file agentless_mcp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: agentless_mcp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 226.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"43","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for agentless_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4505fabd2885e84655f766c7ac7d2ed7a6210304a2583e19bb3c8c7cf9766a6f
MD5 23caa5a9f875ec7099c09c11e9d1baee
BLAKE2b-256 edddcd494e62a86cc6fab6a9b3462cd8500b5ddf5ab870fd6232f902ca11fb11

See more details on using hashes here.

Release history Release notifications | RSS feed

0.7.0

2 files

0.6.7

2 files

0.6.6

2 files

0.6.5

2 files

0.6.4

2 files

0.6.3

2 files

0.6.2

2 files

0.6.1

2 files

0.6.0

2 files

0.5.1

2 files

0.5.0

2 files

0.3.1

2 files

0.3.0

2 files

0.2.0

2 files

This release

0.1.0 This release

2 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