AXM MCP Server — Runtime execution for the axm-protocols ecosystem
Project description
axm-mcp — MCP server for the axm-protocols ecosystem
Features
- 🔌 Auto-discovery — Finds all
axm.toolsentry points from installed packages - 🛠️ MCP bridge — Exposes discovered tools as Model Context Protocol callables
- 🔎 Compact facade — Four meta-tools (
axm_search/axm_describe/axm_call/axm_capabilities) index the full catalog and keep thetools/listpayload small (toggle viaAXM_MCP_FACADE) - ✅ Verify — One-shot project quality check: audit + init check + AST enrichment
- 🌐 Web fetch — Anti-bot web page fetching via Scrapling (basic / dynamic / stealth)
- 📋 List tools — Built-in
list_toolsmeta-tool to enumerate all available tools and their descriptions
Installation
Connect the server to your MCP client (Claude Code, IDE…) in one command — no
manual install, uvx fetches the latest version on demand:
claude mcp add --scope user axm-mcp -- uvx --python 3.12 --from "axm-mcp[all]@latest" axm-mcp
--scope user installs it globally (available in every session). Drop it to enable AXM per-project instead — the server then loads only in the directory where you run the command.
Prefer editing .mcp.json by hand? Add:
{
"mcpServers": {
"axm-mcp": {
"command": "uvx",
"args": ["--python", "3.12", "--from", "axm-mcp[all]@latest", "axm-mcp"]
}
}
}
The [all] extra is what pulls in the actual tools (audit, ast_*,
git_commit, …); the bare axm-mcp package is only the server shell. See the
Quick Start for
the full walkthrough and why each flag matters.
Server Modes
axm-mcp supports two transport modes. stdio (above) is the simple default — one server process per conversation, works everywhere. HTTP is an advanced option for running a single shared persistent server.
| Mode | Command | Client config | Use case |
|---|---|---|---|
| stdio (default) | axm-mcp |
uvx --from "axm-mcp[all]@latest" axm-mcp |
Simple, one process per conversation |
| HTTP (advanced) | axm-mcp serve |
{"type": "url", "url": "http://localhost:9427/mcp"} |
Single shared server, persistent cache |
For the HTTP setup, see Migrate to HTTP Transport.
CLI Commands
| Command | Description |
|---|---|
axm-mcp |
Start in stdio mode (default) |
axm-mcp serve [--host HOST] [--port PORT] |
Start Streamable HTTP server (default port 9427) |
axm-mcp status [--host HOST] [--port PORT] |
Check whether the HTTP server is running |
axm-mcp stop |
Send SIGTERM to the running HTTP server. Verifies the PID file's process is really axm-mcp (via ps cmdline) before signalling; if the PID was reused by another process, it refuses to kill it and cleans up the stale PID file |
axm-mcp install [--port PORT] [--binary PATH] |
Install axm-mcp as a launchd service (macOS) |
axm-mcp uninstall |
Remove the launchd service |
The HTTP transport exposes a /health endpoint returning {"status": "ok", "tools_count": N}.
Port can also be set via the AXM_MCP_PORT environment variable.
Service Management (macOS)
axm-mcp can run as a persistent background service managed by launchd:
# Install and start the service
axm-mcp install
# Remove the service
axm-mcp uninstall
install locates the axm-mcp binary, generates a launchd plist, and loads it via launchctl.
uninstall unloads the service and removes the plist file.
MCP Tools
By default (AXM_MCP_FACADE=1) the server keeps the tools/list payload small
by exposing a compact facade — four meta-tools that index the full catalog —
plus a hot path of frequently-used tools that opt in via expose_directly, and
the always-on built-ins (verify, web_fetch, list_tools). Every other
discovered tool stays reachable through axm_call. Set AXM_MCP_FACADE=0 to fall
back to the legacy behaviour (register every discovered tool directly).
| Facade meta-tool | Description |
|---|---|
axm_search |
Search the tool catalog by keyword/tag → name + summary + domain + tags |
axm_describe |
Full invocation contract (typed params + docstring) for one tool |
axm_call |
Execute any tool by name and return its text output |
axm_capabilities |
List tools grouped by domain |
| Built-in / discovered tool | Package | Description |
|---|---|---|
list_tools |
built-in | List all available tools (always enumerates the full surface) |
verify |
built-in | One-shot audit + init check + AST enrichment |
web_fetch |
built-in | Fetch web pages with anti-bot bypass (basic / dynamic / stealth) |
audit |
axm-audit |
Code quality audit (lint, types, complexity, security) |
init_check |
axm-init |
49 governance checks against AXM gold standard |
init_scaffold |
axm-init |
Scaffold a new Python project |
bib_search |
axm-bib |
Search academic papers by title |
bib_resolve |
axm-bib |
Resolve a DOI/arXiv ref → BibTeX |
bib_pdf |
axm-bib |
Download paper PDF |
bib_extract |
axm-bib |
Extract text from PDF |
Development
This package is part of the axm-forge workspace.
git clone https://github.com/axm-protocols/axm-forge.git
cd axm-forge
uv sync --all-groups
uv run --package axm-mcp --directory packages/axm-mcp pytest -x -q
License
Apache-2.0 — © 2026 Gabriel Jarry
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 axm_mcp-0.5.1.tar.gz.
File metadata
- Download URL: axm_mcp-0.5.1.tar.gz
- Upload date:
- Size: 87.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
acf1c2c771ff0cb330a13b96b031142c1fef7874e76f2348f2a9b916c31f0099
|
|
| MD5 |
224ea9201ec18e5e2104404f8caca6d3
|
|
| BLAKE2b-256 |
556928f40cc4f90a49bc6fe0fee3018c217e58fb58160190d6f66ddb763d360c
|
Provenance
The following attestation bundles were made for axm_mcp-0.5.1.tar.gz:
Publisher:
publish.yml on axm-protocols/axm-forge
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
axm_mcp-0.5.1.tar.gz -
Subject digest:
acf1c2c771ff0cb330a13b96b031142c1fef7874e76f2348f2a9b916c31f0099 - Sigstore transparency entry: 1916350237
- Sigstore integration time:
-
Permalink:
axm-protocols/axm-forge@811cd8e6dce9caca1f7cac101e4719e4c5d3fa07 -
Branch / Tag:
refs/tags/mcp/v0.5.1 - Owner: https://github.com/axm-protocols
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@811cd8e6dce9caca1f7cac101e4719e4c5d3fa07 -
Trigger Event:
push
-
Statement type:
File details
Details for the file axm_mcp-0.5.1-py3-none-any.whl.
File metadata
- Download URL: axm_mcp-0.5.1-py3-none-any.whl
- Upload date:
- Size: 44.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c261d552baa64aabe496f56a214c51986d774879e3abc0e6599809bba3fccd37
|
|
| MD5 |
5549089630e5f375c0830a57b4c4c971
|
|
| BLAKE2b-256 |
a1b8472230aad884ea27dfa41ed7ca5bd8509975fa90df54a895c7d71200f9e8
|
Provenance
The following attestation bundles were made for axm_mcp-0.5.1-py3-none-any.whl:
Publisher:
publish.yml on axm-protocols/axm-forge
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
axm_mcp-0.5.1-py3-none-any.whl -
Subject digest:
c261d552baa64aabe496f56a214c51986d774879e3abc0e6599809bba3fccd37 - Sigstore transparency entry: 1916350308
- Sigstore integration time:
-
Permalink:
axm-protocols/axm-forge@811cd8e6dce9caca1f7cac101e4719e4c5d3fa07 -
Branch / Tag:
refs/tags/mcp/v0.5.1 - Owner: https://github.com/axm-protocols
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@811cd8e6dce9caca1f7cac101e4719e4c5d3fa07 -
Trigger Event:
push
-
Statement type: