amcp: Lego-style coding agent CLI. Core: rg grep/find and read; editing & web search via MCP.
Project description
AMCP
tags:
- building-mcp-track-creative
- mcp-in-action-track-consumer
- mcp-in-action-track-creative
AMCP
A Lego-style coding agent CLI with built-in tools (grep, read files, bash execution) and MCP server integration for extended capabilities (web search, etc.).
X: https://x.com/zhangjintao9020/status/1995170132973466018?s=20 Demo: https://drive.google.com/file/d/1FGoY4I_JFQ1FSz19XlVJZ6Z4lWUucD7a/view?usp=sharing
Features
- Built-in Tools: read_file, grep, bash, think, todo, apply_patch, write_file
- MCP Integration: Connect to any MCP server for extended capabilities
- Conversation History: Persistent sessions across runs
- Flexible Configuration: YAML-based agent specifications
- Tool Calling: Automatic tool selection and execution
- ACP Support: Full Agent Client Protocol support for IDE integration (Zed, etc.)
- AGENTS.md Support: Auto-load project-specific rules from
AGENTS.mdfiles - Smart Context Compaction: Intelligent context management with dynamic thresholds
- Multi-Agent System: Primary/Subagent architecture with built-in agent types (coder, explorer, planner)
- Event Bus: Publish/subscribe system for agent communication and extensibility
- Hooks System: Extensible hooks for tool validation, logging, and custom behaviors
Installation
Quick Run with uvx (no install needed)
# Run directly without installation (like npx)
uvx amcp-agent
From PyPI
# Install from PyPI
pip install amcp-agent
# Or with uv
uv pip install amcp-agent
# With Anthropic Claude support
pip install amcp-agent[anthropic]
From Source (development)
# Clone the repository
git clone https://github.com/tao12345666333/amcp.git
cd amcp
# using uv (recommended)
uv venv && source .venv/bin/activate
uv pip install -e .
# or with pip
python -m venv .venv && source .venv/bin/activate
pip install -e .
Usage
# Initialize config
amcp init
# Agent with tool calling (default command)
amcp # interactive mode with conversation history
amcp --once "create a hello.py file with a hello function" # single message
amcp --list # list available agent specifications
amcp --agent path/to/agent.yaml # use custom agent spec
amcp --session my-session # use specific session ID
amcp --clear # clear conversation history
# MCP server management
amcp mcp tools --server exa
amcp mcp call --server exa --tool web_search_exa --args '{"query":"rust async"}'
# Run as ACP agent (for IDE integration)
amcp-acp
ACP (Agent Client Protocol) Support
AMCP fully supports the Agent Client Protocol for integration with IDEs like Zed.
Features
- Session Management: Create, load, and list sessions
- Session Modes: Switch between
ask,architect, andcodemodesask: Request permission before making changesarchitect: Design and plan without implementationcode: Full tool access for implementation
- Slash Commands:
/clear,/plan,/search,/help - Agent Plans: Visual execution plans for complex tasks
- Permission Requests: User approval for sensitive operations
- Client Capabilities: Use client's filesystem and terminal when available
Running as ACP Agent
# Start the ACP agent server (stdio transport)
amcp-acp
Zed Integration
Add to your Zed settings (~/.config/zed/settings.json):
{
"agent": {
"profiles": {
"amcp": {
"name": "AMCP",
"provider": {
"type": "acp",
"command": "amcp-acp"
}
}
},
"default_profile": "amcp"
}
}
Built-in Tools
- read_file: Read text files with two modes:
- Slice mode (default): Read specific line ranges
- Indentation mode: Intelligently read code blocks around an anchor line, automatically capturing surrounding context (functions, classes)
- grep: Search for patterns in files using ripgrep
- bash: Execute bash commands for file operations and system tasks
- think: Internal reasoning and planning
- todo: Manage a todo list to track tasks during complex operations
- apply_patch: Apply diff-based patches to files (recommended for edits, see docs/apply-patch.md)
- write_file: Write content to files (for creating new small files)
- task: Spawn sub-agents for parallel task execution
Config
The CLI loads MCP servers from ~/.config/amcp/config.toml.
Generate a starter config:
amcp init
Example (OpenAI-compatible API):
[servers.exa]
url = "https://mcp.exa.ai/mcp"
[servers.custom]
command = "npx"
args = ["-y", "@some/mcp-server"]
env.API_KEY = "your-key"
[chat]
api_type = "openai" # "openai" (default) or "anthropic"
base_url = "https://api.openai.com/v1"
model = "gpt-4o"
api_key = "your-api-key"
mcp_tools_enabled = true
write_tool_enabled = true # Enable/disable built-in write_file tool
Example (OpenAI Responses API):
[chat]
api_type = "openai_responses"
model = "gpt-4o"
api_key = "your-api-key"
Example (Anthropic Claude):
[chat]
api_type = "anthropic"
model = "claude-sonnet-4-20250514"
api_key = "your-anthropic-api-key" # or set ANTHROPIC_API_KEY env var
To use Anthropic, install with: pip install amcp-agent[anthropic]
Hooks System
AMCP provides a flexible hooks system to extend and customize agent behavior. Hooks can:
- Validate and modify tool inputs before execution
- Process tool outputs after execution
- Block dangerous operations
- Log and audit agent activities
Quick Example
Create .amcp/hooks.toml in your project:
[hooks.PreToolUse]
[[hooks.PreToolUse.handlers]]
matcher = "write_file|apply_patch"
type = "python"
script = "./scripts/validate-writes.py"
timeout = 30
[[hooks.PostToolUse.handlers]]
matcher = "*"
type = "command"
command = "echo 'Tool executed' >> /tmp/tool_log.txt"
See docs/hooks.md for full documentation.
Development
Setup Development Environment
# Clone the repository
git clone <repo-url>
cd AMCP
# Install with development dependencies
pip install -e ".[dev]"
# Install pre-commit hooks
pre-commit install
Running Tests
# Run all tests
make test
# Run with coverage
make test-cov
# Run specific test
pytest tests/test_tools.py -v
Code Quality
# Lint code
make lint
# Format code
make format
# Type check
make type-check
See CONTRIBUTING.md for detailed development guidelines.
Notes
rg(ripgrep) must be installed and on PATH for the grep tool.- MCP servers must be installed separately and runnable (stdio transport).
License
Apache-2.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file amcp_agent-0.6.0.tar.gz.
File metadata
- Download URL: amcp_agent-0.6.0.tar.gz
- Upload date:
- Size: 100.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5c09eccf57decf9ea163613f5c40cb6801fea867c6cff8efff2df97b6b7a8d06
|
|
| MD5 |
afab8b78ef841528de59ab3bde919bd3
|
|
| BLAKE2b-256 |
eab4862ea6187fcae8825ea0d033516d6591189b46b6b2b0c100a65f7158eccc
|
Provenance
The following attestation bundles were made for amcp_agent-0.6.0.tar.gz:
Publisher:
release.yml on tao12345666333/amcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
amcp_agent-0.6.0.tar.gz -
Subject digest:
5c09eccf57decf9ea163613f5c40cb6801fea867c6cff8efff2df97b6b7a8d06 - Sigstore transparency entry: 787998625
- Sigstore integration time:
-
Permalink:
tao12345666333/amcp@ccd335da5995b01e4264b81d55ce3da5a8fcb6f2 -
Branch / Tag:
refs/tags/v0.6.0 - Owner: https://github.com/tao12345666333
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@ccd335da5995b01e4264b81d55ce3da5a8fcb6f2 -
Trigger Event:
push
-
Statement type:
File details
Details for the file amcp_agent-0.6.0-py3-none-any.whl.
File metadata
- Download URL: amcp_agent-0.6.0-py3-none-any.whl
- Upload date:
- Size: 113.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c3ebab964c4856f4999d1beaa71ae248bd0604a13690c5e4a39c82504912c42c
|
|
| MD5 |
53ab72518c153120660e460b15baafd9
|
|
| BLAKE2b-256 |
828c6347322e13185eef5ee50c1a572f56db3830d9fdec0cbbcabc820c93894b
|
Provenance
The following attestation bundles were made for amcp_agent-0.6.0-py3-none-any.whl:
Publisher:
release.yml on tao12345666333/amcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
amcp_agent-0.6.0-py3-none-any.whl -
Subject digest:
c3ebab964c4856f4999d1beaa71ae248bd0604a13690c5e4a39c82504912c42c - Sigstore transparency entry: 787998635
- Sigstore integration time:
-
Permalink:
tao12345666333/amcp@ccd335da5995b01e4264b81d55ce3da5a8fcb6f2 -
Branch / Tag:
refs/tags/v0.6.0 - Owner: https://github.com/tao12345666333
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@ccd335da5995b01e4264b81d55ce3da5a8fcb6f2 -
Trigger Event:
push
-
Statement type: