Skip to main content

Universal MCP server that exposes coding agents (Copilot, Claude Code, Codex) as subagents via a unified tool interface

Project description

agentprism

A universal MCP server that exposes coding agents — GitHub Copilot, Claude Code, Codex — as background subagents behind a single, unified tool interface.

agentprism lets one AI agent orchestrate other AI agents. Drop it into your MCP client (Claude Code, Cursor, Continue, …) and you gain seven tools — agent_spawn, agent_send, agent_wait, agent_status, agent_list, agent_kill, agent_models — that drive any supported coding agent through its native protocol. Run several in parallel, hand off tasks between them, or use a cheaper model as a worker for a more expensive planner. agentprism speaks each provider's wire protocol natively (ACP JSON-RPC for Copilot, stream-JSON for Claude Code, exec-resume for Codex) — no fragile screen-scraping.

Installation

Recommended — no install required (uvx):

# uvx runs agentprism directly from PyPI, no pip install needed
uvx agentprism

Or install permanently:

pip install agentprism
# or: uv tool install agentprism

Or from source:

git clone https://github.com/StefanMaron/agentprism
cd agentprism
pip install -e .

You also need at least one supported coding-agent CLI installed and authenticated:

Provider CLI Auth
Copilot copilot (install) copilot login
Claude Code claude (install) claude then /login
Codex codex (install) codex login

Usage with Claude Code

Add to ~/.claude/mcp.json (create if it doesn't exist):

{
  "mcpServers": {
    "agentprism": {
      "command": "uvx",
      "args": ["agentprism"],
      "type": "stdio"
    }
  }
}

If you installed agentprism permanently, use "command": "agentprism" with no args.

Restart Claude Code. The eight agent_* tools will appear. Try:

Call agent_providers to see what's available, then use agent_spawn to start a Copilot session in /tmp/playground with the task "write a Python script that prints prime numbers up to 100", then agent_wait for it to finish.

Usage with other MCP clients

Any MCP client that supports stdio servers works. The config shape is the same — point command at agentprism (or uvx + args: ["agentprism"]).

Helping your agent know when to delegate

agentprism's tool descriptions include trigger conditions, but for reliable delegation add a short snippet to your project's AGENTS.md or CLAUDE.md:

## Delegation with agentprism

You have access to the agentprism MCP server. Use it to delegate coding tasks
to external agents (Copilot, Claude Code, Codex) instead of doing the work yourself.

Trigger conditions — reach for agentprism when:
- The user says "let Copilot handle", "delegate to Copilot", "offload to an agent", or similar
- A task is large/mechanical and offloading would preserve your context window
- You want to run multiple tasks in parallel

Quick patterns:
- One-shot (no corrections): `agent_run(task, cwd)`
- Parallel workers: multiple `agent_spawn` calls, then `agent_wait` each
- With corrections: `agent_spawn``agent_wait``agent_send``agent_wait``agent_kill`

Default provider is Copilot (1x cost). Use `agent_providers` to check what's available.

Tool reference

Tool Args Returns
agent_providers which providers are installed + authenticated
agent_models provider? model ids + cost multipliers per provider
agent_run task, cwd, provider?, model?, timeout? output — one-shot, blocks, auto-cleans up
agent_spawn task, cwd, provider?, model?, mode? session_id — non-blocking, persistent
agent_send session_id, message agent reply (blocks until response)
agent_status session_id working | idle | done | error
agent_wait session_id, timeout_seconds? accumulated output (blocks until done)
agent_list all active sessions
agent_kill session_id terminates the subprocess

provider values: copilot, claude, codex — omit to use AGENTPRISM_DEFAULT_PROVIDER (default: copilot)

mode values (Copilot / Claude Code): agent (default), plan, autopilot

Push notifications

When a worker finishes, agentprism proactively notifies the orchestrating MCP client — no polling required.

If the client advertised the sampling capability (Claude Code does), agentprism sends a sampling/createMessage request: the LLM receives a structured wake-up message with the session summary and can immediately act on the results. Falls back to a notifications/message log event for clients that don't support sampling.

Provider support

Provider Status Protocol
GitHub Copilot ACP JSON-RPC over stdio
Claude Code stream-JSON bidirectional stdio
Codex codex exec / codex exec resume

Model cost multipliers

Use agent_models(provider="copilot") at runtime to get the current list. Examples:

Model (Copilot) Multiplier Notes
auto / claude-sonnet-4.6 1x default
claude-haiku-4.5 0.33x cheapest Claude
gpt-5-mini 0x free
gpt-4.1 0x free
claude-opus-4.7 7.5x deep reasoning only
gpt-5.5 7.5x GPT flagship

Architecture

┌──────────────────┐                     ┌──────────────────────────────┐
│  MCP client      │  agent_spawn(...)   │      agentprism server         │
│  (Claude Code,   │ ──────────────────► │                              │
│   Cursor, ...)   │  ◄──── result ────  │  ┌────────────────────────┐  │
└──────────────────┘                     │  │   ToolDispatcher       │  │
                                         │  └───────────┬────────────┘  │
                                         │              │               │
                                         │  ┌───────────▼────────────┐  │
                                         │  │   SessionRegistry      │  │
                                         │  │   session_id ► Adapter │  │
                                         │  └───────────┬────────────┘  │
                                         │              │               │
                                         │  ┌───────────▼────────────┐  │
                                         │  │   CopilotAdapter (ACP) │  │
                                         │  │   ClaudeCodeAdapter    │  │
                                         │  │   CodexAdapter         │  │
                                         │  └───────────┬────────────┘  │
                                         └──────────────┼───────────────┘
                                                        │ native protocol
                                                        ▼
                                          ┌─────────────────────────────┐
                                          │  coding agent subprocess    │
                                          └─────────────────────────────┘

Each adapter owns one subprocess per session. A reader coroutine demuxes stdout: responses resolve pending futures, while streaming updates accumulate in an output buffer that agent_wait and agent_send drain.

Configuration

Environment variables:

Variable Default Purpose
AGENTPRISM_LOG_LEVEL INFO Python logging level (logs go to stderr)
AGENTPRISM_COPILOT_BIN copilot Path to the copilot binary
AGENTPRISM_CLAUDE_BIN claude Path to the claude binary
AGENTPRISM_CODEX_BIN codex Path to the codex binary

Development

git clone https://github.com/StefanMaron/agentprism
cd agentprism
pip install -e ".[dev]"
ruff check .
pytest

License

MIT

Project details


Download files

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

Source Distribution

agentprism-0.1.6.tar.gz (30.9 kB view details)

Uploaded Source

Built Distribution

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

agentprism-0.1.6-py3-none-any.whl (37.4 kB view details)

Uploaded Python 3

File details

Details for the file agentprism-0.1.6.tar.gz.

File metadata

  • Download URL: agentprism-0.1.6.tar.gz
  • Upload date:
  • Size: 30.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for agentprism-0.1.6.tar.gz
Algorithm Hash digest
SHA256 52d9fa06c10240e13b9441bdbdf359949be4a904b11b6d888144b28206b0eb23
MD5 ed945124f4ce66e99eb3d41adfaad9ba
BLAKE2b-256 af6b389e60fcf2b85e467ebc21e32d599d75fd9f32b1517bfd5ca8c1e708c5c4

See more details on using hashes here.

Provenance

The following attestation bundles were made for agentprism-0.1.6.tar.gz:

Publisher: publish.yml on StefanMaron/agentprism

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file agentprism-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: agentprism-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 37.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for agentprism-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 7e7080deca51e87060ec1eaf39ba465e28bc70723d668e78665b5ba40d09929a
MD5 2c8f87952cc0e117234e06cb234b4e97
BLAKE2b-256 62f4e9f2f0568bc6056283d82f7d99f2506857a97403c4c2bb9db929532b56e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for agentprism-0.1.6-py3-none-any.whl:

Publisher: publish.yml on StefanMaron/agentprism

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page