Codebase intelligence MCP for AI agents — tree-sitter AST → LadybugDB property graph, import/call resolution with evidence-graded confidence, Leiden communities, hybrid BM25+TF-IDF+RRF search, impact analysis, PRD-hallucination + security gates. Rust · 24 tools (core-8 agent profile) · 503 tests.
git clone https://github.com/cdeust/automatised-pipeline{
"mcpServers": {
"automatised-pipeline": {
"command": "automatised-pipeline"
}
}
}MCP Servers overview
<!-- mcp-name: io.github.cdeust/automatised-pipeline -->
<p align="center">
<img src="assets/banner.svg" alt="automatised-pipeline — codebase intelligence as an MCP server" width="100%"/>
</p>
<p align="center">
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="MIT License"></a>
<img src="https://img.shields.io/badge/Rust-1.94+-dea584.svg" alt="Rust 1.94+">
<img src="https://img.shields.io/badge/Tools-24-orange" alt="24 MCP tools">
<img src="https://img.shields.io/badge/Tests-434_passing-brightgreen" alt="434 tests">
<img src="https://img.shields.io/badge/Languages-10-blueviolet" alt="10 languages">
<img src="https://img.shields.io/badge/Stages-0_through_9-8A2BE2" alt="Stages">
</p>
<p align="center">
<a href="#what-an-agent-can-ask-it">What An Agent Can Ask</a> · <a href="#getting-started">Getting Started</a> · <a href="#the-pipeline">Pipeline</a> · <a href="#24-mcp-tools">Tools</a> · <a href="#architecture">Architecture</a> · <a href="#the-zetetic-standard">Zetetic Standard</a>
</p>
<p align="center">
<strong>Companion projects:</strong><br>
<a href="https://github.com/cdeust/Cortex">Cortex</a> — persistent memory that consolidates and reconsolidates across sessions<br>
<a href="https://github.com/cdeust/zetetic-team-subagents">zetetic-team-subagents</a> — 97 genius reasoning agents + 18 team specialists<br>
<a href="https://github.com/cdeust/prd-spec-generator">prd-spec-generator</a> — TypeScript PRD generator that consumes our graph intelligence
</p>
---
Every AI coding assistant hits the same wall: you ask it to change `handle_tool_call`, and it either hallucinates a function that was renamed last week, edits something in the wrong community of the codebase, or silently breaks a call chain three modules away. Agents operate on strings; codebases have structure. The gap is where bugs live.
**automatised-pipeline** is a Rust MCP server that indexes any Rust, Python, TypeScript, Java, Kotlin, Swift, Objective-C, C, C++, or Go codebase into a LadybugDB property graph, resolves imports and call chains across files, detects functional communities via Leiden-class community detection, traces execution flows from entry points, builds a hybrid BM25 + sparse TF-IDF + RRF search index, and exposes all of it to AI agents through 24 MCP tools.
It is the **codebase intelligence layer** that sits between a finding ("this bug exists") and a PRD ("here is the fix, here is what it affects, here is what it must never break"). It is **read-only intelligence** — it never writes code, opens PRs, or runs CI. It tells the system what is true about the code so the next stage can reason without guessing.
**One pipeline stage = one MCP tool. 10 stages. 24 tools. 12,000+ lines of Rust. 434 tests. Zero warnings. Every constant sourced.**
---
## What an agent can ask it
```
analyze_codebase(path: "/path/to/project", output_dir: "/tmp/run")
→ index + resolve + cluster + build search index in one call
→ 430 nodes, 400 edges, 216 communities, 35 processes on our own codebase
search_codebase(graph_path, query: "process incoming tool requests")
→ hybrid ranked results: BM25 lexical + sparse TF-IDF semantic + RRF fusion
→ returns: handle_tool_call (score 0.021), dispatch_request (0.020), ...
get_context(graph_path, qualified_name: "src/main.rs::handle_tool_call")
→ 360° view: community membership, process participation,
incoming calls, outgoing calls, types used, types that use it
→ did-you-mean suggestions when the symbol isn't found exactly
get_impact(graph_path, qualified_name)
→ blast radius: every process that transits this symbol, every community it touches
→ the answer to "what breaks if I change this?"
detect_changes(graph_path, diff_text OR base_ref+head_ref)
→ git diff → affected symbols → impacted communities → touched processes
→ risk score for the change
validate_prd_against_graph(prd_path, graph_path)
→ does the PRD reference real symbols? (symbol hallucination check)
→ does "scoped to X" match the actual community count?
→ does "doesn't affect main" hold against the call graph?
check_security_gates(graph_path, changed_symbols)
→ auth-critical community touch · unsafe symbol · public API change ·
unresolved imports · test coverage gap
verify_semantic_diff(before_graph_path, after_graph_path)
→ what nodes/edges appeared, what disappeared, what dangles,
new cycles via Tarjan SCC, regression score with verdict
```
---
## Getting started
### Prerequisites
- Rust 1.94+ (`rustup install stable`)
- CMake (LadybugDB builds its C++ core from source — ~5 minutes first build, cached after)
### Clone + build
```bash
git clone https://github.com/cdeust/automatised-pipeline.git
cd automatised-pipeline
cargo build --release
# First build: ~5 minutes (compiles LadybugDB C++ core)
# Subsequent builds: <1 second incremental
```
### Register the MCP server
The repo ships a `.mcp.json` that Claude Code picks up automatically when you open the directory:
```json
{
"mcpServers": {
"ai-architect": {
"command": "cargo",
"args": ["run", "--quiet", "--release", "--manifest-path", "Cargo.toml", "--", "--profile", "core"]
}
}
}
```
Or register globally (recommended agent setup — the `core` profile):
```bash
claude mcp add ai-architect -- /absolute/path/to/target/release/automatised-pipeline --profile core
```
### Tool profiles
The server registers one of two tool sets, chosen once at startup:
| Profile | Tools | Who it's for |
|---|---|---|
| `core` | 8 — `health_check` · `analyze_codebase` · `search_codebase` · `get_context` · `get_symbol` · `get_impact` · `query_graph` · `detect_changes` | **Recommended for agents.** The read-only code-intelligence surface: analyze once, then search, inspect symbols, and measure blast radius. |
| `full` | all 24 | The ai-architect pipeline orchestrator — adds the internal finding → PRD stages (1/2/4/6/8/9) and the manual graph passes (`index_codebase`, `resolve_graph`, `cluster_graph`, `lsp_resolve`, `get_processes`, `index_history`). |
Select with the `--profile` flag or the `AP_PROFILE` environment variable (the flag wins):
```bash
automatised-pipeline --profile core # agent-facing 8
AP_PROFILE=core automatised-pipeline # same, via env
automatised-pipeline # default: full (all 24)
```
The default stays `full` until the next major version — shrinking the default tool surface is a breaking change. New agent installations should opt into `core`: `analyze_codebase` already runs index + resolve + cluster in one call, so the 16 hidden tools are pipeline plumbing an agent never needs, and hiding them keeps the tool prompt small.
### First run
```bash
# Run the binary directly to verify the handshake
./target/release/automatised-pipeline
# Or exercise it via stdio JSON-RPC:
printf '%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/list"}' \
'{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"health_check","arguments":{}}}' \
| ./target/release/automatised-pipeline
```
### Use with other MCP hosts
The server is a self-contained stdio binary — any MCP host can launch it. Install once:
```bash
cargo install ai-architect-mcp # installs the `automatised-pipeline` binary into ~/.cargo/bin
```
The CLI commands below assume `~/.cargo/bin` is on your `PATH`. GUI hosts (Cursor, Windsurf, VS Code) may not inherit your shell `PATH` — in the JSON configs, replace `automatised-pipeline` with the output of `which automatised-pipeline`. Use the `core` profile (8 read-only tools) for agent hosts.
**Gemini CLI**
```bash
gemini mcp add -e AP_PROFILE=core ai-architect automatised-pipeline
```
Or install as an extension (this repo ships a `gemini-extension.json`):
```bash
gemini extensions install https://github.com/cdeust/automatised-pipeline
```
**OpenAI Codex CLI** (also picked up by the ChatGPT desktop app and Codex IDE extension — they share `~/.codex/config.toml`)
```bash
codex mcp add ai-architect -- automatised-pipeline --profile core
```
Or in `~/.codex/config.toml`:
```toml
[mcp_servers.ai-architect]
command = "automatised-pipeline"
args = ["--profile", "core"]
```
**Cursor** — `.cursor/mcp.json` (project) or `~/.cursor/mcp.json` (global):
```json
{
"mcpServers": {
"ai-architect": {
"command": "automatised-pipeline",
"args": ["--profile", "core"]
}
}
}
```
**Windsurf** — `~/.codeium/windsurf/mcp_config.json`: same `mcpServers` block as Cursor.
**VS Code** — `.vscode/mcp.json`:
```json
{
"servers": {
"ai-architect": {
"type": "stdio",
"command": "automatised-pipeline",
"args": ["--profile", "core"]
}
}
}
```
**OpenAI Agents SDK (Python)**
```python
from agents.mcp import MCPServerStdio
async with MCPServerStdio(
name="ai-architect",
params={"command": "automatised-pipeline", "args": ["--profile", "core"]},
) as server:
agent = Agent(name="Assistant", mcp_servers=[server])
```
---
## The pipeline
Every stage is a tool. Stages build on each other but are independently callable. The pipeline is serial in logical order but MCP calls are stateless — you can re-run stages 3a-3d on a fresh codebase without re-running stages 1-2.
| # | Tool(s) | What it does |
|---|---|---|
| **0** | `health_check` | Handshake + protocol + tool count |
| **1** | `extract_finding`, `refine_finding` | Deterministic finding extraction + orchestrator-aware prompt refinement |
| **2** | `start_verification`, `append_clarification`, `finalize_verification`, `abort_verification` | Human-gated clarification loop with SHA-256 transcript digest, atomic single-file session state |
| **3a** | `index_codebase`, `query_graph`, `get_symbol` | tree-sitter AST → LadybugDB graph (16 node labels, 36+ relationship tables) |
| **3b** | `resolve_graph`, `lsp_resolve` | Import/call/impl resolution with confidence scoring + optionalWhat people ask about automatised-pipeline
What is cdeust/automatised-pipeline?
+
cdeust/automatised-pipeline is mcp servers for the Claude AI ecosystem. Codebase intelligence MCP for AI agents — tree-sitter AST → LadybugDB property graph, import/call resolution with evidence-graded confidence, Leiden communities, hybrid BM25+TF-IDF+RRF search, impact analysis, PRD-hallucination + security gates. Rust · 24 tools (core-8 agent profile) · 503 tests. It has 2 GitHub stars and was last updated today.
How do I install automatised-pipeline?
+
You can install automatised-pipeline by cloning the repository (https://github.com/cdeust/automatised-pipeline) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is cdeust/automatised-pipeline safe to use?
+
cdeust/automatised-pipeline has not been audited yet by our security agent. Review the original repository on GitHub before using it in production.
Who maintains cdeust/automatised-pipeline?
+
cdeust/automatised-pipeline is maintained by cdeust. The last recorded GitHub activity is from today, with 1 open issues.
Are there alternatives to automatised-pipeline?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy automatised-pipeline to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/cdeust-automatised-pipeline)<a href="https://claudewave.com/repo/cdeust-automatised-pipeline"><img src="https://claudewave.com/api/badge/cdeust-automatised-pipeline" alt="Featured on ClaudeWave: cdeust/automatised-pipeline" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
The fastest path to AI-powered full stack observability, even for lean teams.
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface