Landlord
An MCP server that orchestrates parallel Claude agent sessions by decomposing natural-language tasks into contract-bound tenants with structured outputs and validation, all running over stdio.
README
Landlord
Parallel Claude agents with contracts, not prompts.
Landlord turns a single natural-language task into a plan of parallel Claude Agent SDK sessions — each bound by a contract (objective, checkpoints, JSON-schema outputs). Tenants that violate their contract get evicted and retried with fresh context. Every checkpoint output is validated against a JSON Schema and a structured LLM judge (via tool-use — no substring matching). Everything runs as an MCP server over stdio, so any MCP client (Claude Code, Cursor, Cline) can drive it.
Why
- No API credits required. Drives
claude_agent_sdk.query(), which honorsCLAUDE_CODE_OAUTH_TOKEN. Your Claude Pro/Max subscription runs decompose, tenants, and the judge. - Contracts, not prompts. Structured output enforced by JSON Schema + LLM judge on every checkpoint. No "I hope the model said PASS."
- Tenants inherit your Claude Code config. Skills,
CLAUDE.md, hooks, user MCP servers — all available inside every tenant viasetting_sources=["user"]andskills="all". - 5-tool MCP surface —
start_orchestration,approve_plan,get_status,get_artifacts,cancel. That's the whole API. - ~1,200 LOC runtime, 52 tests. Readable in an afternoon.
60-second install
pip install -e .
claude setup-token # one-time: get your OAuth token
setx CLAUDE_CODE_OAUTH_TOKEN "<paste>" # Windows. Unix: export CLAUDE_CODE_OAUTH_TOKEN=...
claude mcp add -s user landlord landlord-mcp
Restart Claude Code. The five Landlord tools become discoverable; ask the model to orchestrate something.
Watch it work
Every tenant's SDK chatter streams to a tailable log:
tail -f ./landlord-output/<job_id>/job.json # orchestration state
tail -f ./landlord-output/<job_id>/<tenant_id>/session.log # tenant model activity
ls ./landlord-output/<job_id>/shared/ # dependency artifacts
Auth details
Authenticate against your Claude Pro/Max subscription (no API credits needed):
claude setup-token
Set the resulting token in your environment:
# Windows (persistent)
setx CLAUDE_CODE_OAUTH_TOKEN "<token>"
# bash/zsh
export CLAUDE_CODE_OAUTH_TOKEN=<token>
(Advanced: if you'd rather pay per-token API usage, set ANTHROPIC_API_KEY
instead — the underlying claude-agent-sdk accepts either.)
Run the MCP server
landlord-mcp
This speaks MCP over stdio. Normally you don't run it directly — you point an MCP
client at it. Easiest is the claude CLI:
claude mcp add -s user landlord <path-to-landlord-mcp-executable>
Or add this to ~/.claude.json (user scope) manually:
{
"mcpServers": {
"landlord": {
"command": "landlord-mcp"
}
}
}
Restart Claude Code; the five Landlord tools will be discoverable to the model.
Tenant inheritance
Tenants spawned by the orchestrator run as Claude Agent SDK sessions with
setting_sources=["user"] and skills="all". That means each tenant inherits:
- All user-level skills (invokable via the
Skilltool) - Your user
CLAUDE.md(instructions/preferences) - Your user-level MCP servers and hooks
- User memory
So a tenant can, for example, invoke /superpowers:writing-plans itself if
your orchestrator decomposes "build feature X" into a tenant that needs to
plan before coding. Per-contract skill allowlisting is a v2 feature; today
it's all-or-nothing.
Tool surface
| Tool | Purpose |
|---|---|
start_orchestration(prompt, output_dir?) |
Decompose the prompt into a plan. Returns job_id and the plan awaiting approval. |
approve_plan(job_id, edits?) |
Approve (or replace with edits) the plan. Launches tenants. |
get_status(job_id) |
Poll overall status plus per-tenant state. |
get_artifacts(job_id) |
Retrieve final artifacts and file listings once the job is done/cancelled. |
cancel(job_id) |
Cancel a running or pending job. |
Configuration
| Env var | Default | Purpose |
|---|---|---|
CLAUDE_CODE_OAUTH_TOKEN |
— | Required for Pro/Max users (from claude setup-token). |
ANTHROPIC_API_KEY |
— | Alternative to OAuth token; pay-per-use API billing. |
LANDLORD_LANDLORD_MODEL |
claude-opus-4-7 |
Decomposition + judge model. |
LANDLORD_TENANT_MODEL |
claude-sonnet-4-6 |
Tenant SDK session model. |
LANDLORD_OUTPUT_DIR |
./landlord-output |
Root directory for job outputs. |
LANDLORD_MAX_RETRIES |
3 |
Default max retries per tenant. |
Legacy CLI
The old litellm-based CLI is preserved as landlord:
pip install -e ".[legacy]"
landlord "your task"
See landlord/legacy/ for source.
Development
pip install -e ".[dev]"
pytest
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.