mcp server
DelendAI
Extensible MCP server core and CLI plugin tooling.
Set up
Runs on your computer. Pick your agent and operating system.
This project does not publish an install method we can turn into a config. Follow the README instead.
README
synced Oct 27, 2026DelendAI
A project-agnostic core for building MCP servers, and the plugin loader that feeds them.
AI delenda est — AI dismantled into named tools, a hermetic runtime, public errors and private data.
What this is
An MCP server you point at a project, and a loader that gives it exactly the capabilities that project needs — no more, so the model's context is not spent on tools nobody will call.
- Agnostic. Nothing here knows your stack. Capabilities arrive as plugins; the core only knows how to load, isolate and describe them.
- Cheap by default. Presets and lazy loading decide what reaches the model. A tool that is not published costs nothing to ignore.
- Hermetic. Plugins read through a contained reader, write atomically, and declare the effects they are allowed to have. What leaves the machine is a decision, never an accident.
It is dogfooded: this repository is developed by agents using the server it builds.
Quickstart
@delendai/cli has not been released to npm yet, so you run it from a
checkout:
# 1. Link the CLI once: writes a `delendai` launcher into your global bin
git clone https://github.com/CartagoGit/delendai && cd delendai
bun install && bun run cli:link
# 2. Drive it from the terminal, no client involved
delendai overview
// 3. Or add the server to your MCP client (.vscode/mcp.json)
{
"servers": {
"delendai": {
"command": "bun",
"args": ["/absolute/path/to/delendai/packages/cli/src/index.ts", "__serve",
"--workspace", "${workspaceFolder}", "--preset", "standard"]
}
}
}
Claude Code reads ~/.claude.json and Codex reads ~/.codex/config.toml; the
launch arguments are identical in all of them — only the wrapping changes.
Every client's exact snippet →
Choosing what gets loaded
--preset picks a curated set; delendai.config.json overrides it per project.
| Preset | For |
|---|---|
minimal | The built-ins and little else. |
lean · standard | Everyday work, growing surface. |
swarm | Several agents on one repository: proposals, locks, coordination. |
full · dogfood | Everything, including host-only plugins. |
web-app · backend-api · cli-tool | Stack packs — a tuned set per project shape. |
Presets, plugin options and precedence →
Documentation
The pages worth opening first are below. The full set — every guide, what it covers, and the reading order for whichever road you are on — lives in the documentation index.
Start here
| Using DelendAI | Install, register, CLI arguments, built-in tools, configuration. |
| Writing a plugin | The plugin contract, tools, permissions, scaffolding. |
| Architecture | Layers, contracts, request flow, the invariants — with diagrams. |
Going deeper
| Vision and operating model | North star, the growth rule, the two speeds, the dogfooding loop. |
| Configuration Center | Every setting the runtime reads, and where it comes from. |
| CI gates | What each gate asserts and why it exists. |
| Publishing | How a release is cut. It is asked for, never automatic. |
| Brand | delendai for tools, DelendAI for prose — and the AI delenda est origin. |
Contributing
| CONTRIBUTING | How to propose and land a change. |
| AGENTS | The rules agents follow in this repository. |
| SECURITY | How to report a vulnerability. |
| PRIVACY | What is collected, what never leaves, and the attribution policy. |
Layout
The monorepo keeps the reusable runtime in packages/core, ships first-party
capabilities as plugins under plugins/*, and uses apps, extensions, tools and
docs as the delivery and verification surfaces around that core.
The table below is generated from the live first-party registry, the workspace
package.jsonfiles, and the migrated manifests where they exist; do not edit it by hand.
| Path | Package | What |
|---|---|---|
plugins/adaptive-optimizer | @delendai/adaptive-optimizer | Adaptive optimizer: cheaply rank model, plugin-set and prompt candidates with explicit budget and consent guards. |
plugins/agent-orchestrator | @delendai/agent-orchestrator | Workflow policy plugin: single / linear / swarm / auto modes with token budgets, iteration caps, and mid-task subagent rotation. |
plugins/api | @delendai/api | REST/GraphQL API surface for delendai plugins. |
plugins/audit | @delendai/audit | Multi-model audit planning + consolidation; f00139 adds self_audit dogfood loop. |
plugins/audit-orchestrator | @delendai/audit-orchestrator | Orchestrates implementation work generated by project-agnostic audit plan proposals. |
plugins/auto-agent-selector | @delendai/auto-agent-selector | Zero-config multi-agent routing (cost↔quality dial, auto_recommend, escalation). |
plugins/auto-plugin-selector | @delendai/auto-plugin-selector | Recommends the best plugin set for this project from its signals (manifest, files, git, task). |
plugins/browser | @delendai/browser | Headless browser automation tools. |
plugins/cache | @delendai/cache | Cache-eviction rules and lifecycle for plugin scratch dirs. |
plugins/changelog | @delendai/changelog | Conventional-commits changelog + release plan generator. |
plugins/commit-policy | @delendai/commit-policy | Commit-authority plugin: configurable identity, cadence and audit-trail policy wrapping the git plugin primitives. Off by default — opt in via plugins.commit-policy.options. |
plugins/completion | @delendai/completion | Task-completion notifier: records an agent declaring its original task done + reviewed and pushes a notification. |
plugins/container | @delendai/container | Container inspection + lint (docker ps/images, k8s, Dockerfile rules). |
plugins/context-for-change | @delendai/context-for-change | Compact task-oriented change context orchestration across diff, symbols, tests, docs and conventions. |
plugins/conventions | @delendai/conventions | Repo file-convention enforcement (interface, constant, service, tool …). |
plugins/database | @delendai/database | Database schema/introspection tools (read-only, offline). |
plugins/deps | @delendai/deps | Dependency inventory + offline health (deps_list, deps_check, deps_audit, deps_licenses, deps_tree). |
plugins/diagram | @delendai/diagram | Diagram generator (mermaid, dot) from code structure. |
plugins/docs | @delendai/docs | Doc generation, search, and rendered catalog. |
plugins/env | @delendai/env | Environment config validation (.env check + schema + env_explains). |
plugins/error-reporting | @delendai/error-reporting | Automatic delendai error reporting, on by default and announced at every start: opens de-duplicated GitHub issues for delendai-internal failures only; one config line turns it off. |
plugins/execution-env | @delendai/execution-env | Execution environments: one contract and registry for running commands locally, in Docker, Docker Compose, over SSH or inside an existing container. |
plugins/external-mcps | @delendai/external-mcps | Compose third-party MCP servers through the catalog + human ack. |
plugins/forge | @delendai/forge | Forge (GitHub/GitLab) wrappers — PRs, CI, issues. |
plugins/framework-knowledge | @delendai/framework-knowledge | Resolves what the project’s installed framework version allows, recommends and forbids, before an agent writes code. |
plugins/git | @delendai/git | Git wrappers (PR list/view, diff, changelog, extended). |
plugins/github | @delendai/github | GitHub read-only provider context, HTTP client and remote resource tools. |
plugins/gitlab | @delendai/gitlab | GitLab read-only provider context, HTTP client and resource tools. |
plugins/i18n | @delendai/i18n | i18n key/interpolation validation across locale JSON files. |
plugins/impact-analysis | @delendai/impact-analysis | Bounded impact analysis and test selection across changed symbols, dependents and related specs. |
plugins/issues | @delendai/issues | Issue tracker (GitHub) integration — list/fetch/analyze/ingest/resolve. |
plugins/issues-triage | @delendai/issues-triage | INTERNAL-ONLY issue triage bot for the delendai repository: reads GitHub issues, classifies them mechanically, drafts fix proposals and replies automatically with a machine-disclosure notice. Never published to npm. |
plugins/link-check | @delendai/link-check | Markdown link checker. |
plugins/logs | @delendai/logs | Structured logs reader (tail, query, redact). |
plugins/memory | @delendai/memory | Persistent memory store (BM25 + recall, save, search). |
plugins/notification | @delendai/notification | Notification + lock-await primitives. |
plugins/observability | @delendai/observability | Observability surface (metrics, errors, telemetry). |
plugins/orchestrator-runner | @delendai/orchestrator-runner | Orchestrator-runner runtime utilities. |
plugins/perf | @delendai/perf | Performance bench/bundle/profile tools. |
plugins/project-health | @delendai/project-health | Compact project-health aggregator: cheap summary first, lazy domain details on demand. |
plugins/project-kpis | @delendai/project-kpis | Versioned project KPI snapshots and observability views across health, usage, economics and delivery. |
plugins/prompt-eval | @delendai/prompt-eval | Prompt-eval harness (golden prompts, scoring). |
plugins/prompts-pack | @delendai/prompts-pack | Project-aware MCP prompts (explain-this-code, write-tests-for, review-this-diff, etc.). |
plugins/proposals | @delendai/proposals | Proposals workflow + multi-agent (swarm) orchestration. |
plugins/quality | @delendai/quality | Quality gates: coverage, complexity, lint, type-check orchestration. |
plugins/quality-policy | @delendai/quality-policy | Unified quality-policy surface: cheap tests, conventions, lint, types and coverage guidance without running heavy quality commands. |
plugins/refactor | @delendai/refactor | Refactor primitives (symbols, definition, references, rename, codemod). |
plugins/remote-provider-core | @delendai/remote-provider-core | Shared remote-provider foundation: validated config, injectable HTTP, normalized errors. |
plugins/roadmap | @delendai/roadmap | Versioned roadmap: what each target version promises, what is delivered, whether it can be promoted, and the bump its promises imply. |
plugins/rules | @delendai/rules | Lint/type rules engine (frameworks, dogmas, presets). |
plugins/search | @delendai/search | Code search (semantic + symbol + references). |
plugins/security | @delendai/security | Security audit (CVEs, SAST, secrets, env). |
plugins/self-learning | @delendai/self-learning | Per-project learning store: accumulates observations the runtime already writes and answers what this project has taught us. |
plugins/skills-pack | @delendai/skills-pack | Curated skill pack (debugging, perf, pr-review, security, incident, migration). |
plugins/status-marker | @delendai/status-marker | Status marker + closure canonical line. |
plugins/style-convention | @delendai/style-convention | The style surface: who may define a selector, what a change to it reaches, and whether a hard-coded value already has a design token. |
plugins/tech-debt | @delendai/tech-debt | Tech-debt scanner (TODO/FIXME/HACK inventory). |
plugins/test-convention | @delendai/test-convention | Test-file convention enforcement (spec path, mock style, forbidden patterns). |
plugins/test-policy | @delendai/test-policy | Test policy mode (TDD, tests-after, free, none). |
plugins/usage-tracking | @delendai/usage-tracking | Per-token/per-call usage tracking (spend, budget). |
plugins/web-fetch | @delendai/web-fetch | Web fetch (allow-listed URLs only). |
Typed tool outputs
Every tool that declares a Zod outputSchema ships a generated TypeScript type
for its structuredContent, so MCP clients consume responses type-safely:
import type { GitToolOutputs } from '@delendai/git/public';
const status: GitToolOutputs['git_status'] = result.structuredContent;
Each package exposes a <Pkg>ToolOutputs map (MCP tool name → output type) from
its public surface. The types are generated from the live schemas — never edited
by hand — and a drift guard in the test suite fails if they go stale:
bun run types:generate # regenerate src/generated/tool-outputs.ts per package
Develop
bun install
bun run validate # typecheck + every gate + the full suite
bun run test # the suite alone
bun run cli -- overview --json
The checked-in .vscode/mcp.json is this repository's canonical launch
shape, and the quickest parity check is to ask the server what it loaded:
bun run cli -- overview --json # pluginDiagnostic.loaded == requested - missing
The full development loop, gates and conventions →
BSD-3-Clause © Cartago