agentx-mcp
Wrap any MCP server so every tool call is screened and recorded before it runs, and set the posture to enforce when you want the dangerous ones stopped.
agentx-mcp sits in front of any MCP server's stdio and screens every tools/call before it runs. Out of the box it watches: a dangerous call (a destructive database write, an SSRF, a secret read) is recorded and let through, so wrapping a server that works cannot break it, and agentx-mcp --audit shows what would have been stopped. Set the posture to enforce and the same call is blocked and handed back to your agent as coaching it can act on, so the agent revises and the run finishes instead of executing the damage. No API key, no gateway, nothing leaves your machine.
Use it
No install needed with uvx:
// mcp.json / claude_desktop_config.json / .cursor/mcp.json
{
"command": "uvx",
"args": ["agentx-mcp", "npx", "-y", "your-mcp-server", "..."]
}
Or install it persistently:
pipx install agentx-mcp # or: pip install agentx-mcp
agentx-mcp npx -y your-mcp-server ...
Then keep using your MCP client normally. Every tool call is screened and recorded.
Watching is silent on purpose: your agent's results are untouched and nothing appears in your chat. See what it caught:
uvx agentx-mcp --audit
That lists what your agent did, what AgentX would have stopped, and what is new since you last looked. It also shows the whole menu: every tool the server offers, how many your agent called, and the ones it never called, since nobody chooses what a third-party server exposes. Add --calls for one line per call. uvx agentx-mcp --review then approves or rejects what it found, one key each.
To block rather than watch, add one more line to that server's entry:
"env": { "AGENTX_POSTURE": "enforce" }
A blocked call comes back as coaching your agent recovers from.
To keep the records per project rather than per user, and to have the proxy match the rules you adopted in that project's .agentx/rules.json, name the project in the same env block. The proxy prints where its stores are and how it decided at every start:
"env": { "AGENTX_PROJECT_DIR": "${CLAUDE_PROJECT_DIR}" } // Claude Code; Cursor and VS Code: "${workspaceFolder}"
That is the keyless floor. For the judge that catches what keywords miss, automatic retries, and human escalation on the largest calls, see Recover at https://agentx-core.com/?utm_source=agentx-mcp&utm_medium=repo.
What it is
A thin launcher for the proxy that ships in agentx-security-sdk. Installing agentx-mcp gives you the agentx-mcp command with no --from needed. MIT licensed.
Docs: https://agentx-core.com/docs?utm_source=agentx-mcp&utm_medium=repo
Metadata
Release files for agentx-mcp 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| agentx_mcp-0.2.2.tar.gz | 5.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| agentx_mcp-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 10.8 kB
Release files / agentx_mcp-0.2.2.tar.gz
| Download URL | agentx_mcp-0.2.2.tar.gz |
|---|---|
| Size | 5.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fc1894b1a732da0d7bca640a83c641ef97ccda0dc8a0519f2aeb3415587f8312
|
|
BLAKE2b-256 checksum How to use checksums |
63cff7912da547902f5bb83f038d1469d628cf69b9646c8a3edabff3415bfc65
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.1
|
Release files / agentx_mcp-0.2.2-py3-none-any.whl
| Download URL | agentx_mcp-0.2.2-py3-none-any.whl |
|---|---|
| Size | 5.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
952536ac4d61499ee8f509ffaedb71e4b00e04bd9e74dc2c61680d206feffc12
|
|
BLAKE2b-256 checksum How to use checksums |
b6b605fdf84734ba5363bd3abb533d16d1c49a3d3803f48eb073683da97710a7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.1
|