MCP Setup
Link supports local stdio transport and streamable HTTP transport.
Prerequisite
Start the daemon first:
mutx daemon
Link expects the MUTX socket at:
/tmp/mutx/link.sock
You can override the socket path with MUTX_SOCKET_PATH or
mutx link --link-socket-path ....
stdio mode
mutx link
This is the default mode and the best choice when the agent runs on the same machine.
Example client configuration:
{
"mcpServers": {
"mutx": {
"command": "mutx",
"args": ["link"]
}
}
}
Note: The standalone
mutx-linkbinary is still available and works identically. Use it if you prefer a dedicated binary or in Docker containers.
HTTP mode
mutx link serve --mode http --bind 0.0.0.0:8000
HTTP mode exposes:
- MCP endpoint:
http://HOST:8000/mcp - health check:
http://HOST:8000/health
Use this mode when:
- the agent cannot spawn local processes
- you want to front MUTX with a container
- you need a shared MCP endpoint on a trusted local network
CLI mode
Link also exposes all 17 MCP tools as CLI subcommands:
mutx link wallet list
mutx link wallet balance <wallet>
mutx link wallet send <wallet> <to> <amount>
mutx link slk info
mutx link address-book list
Use --json for machine-readable output. Use --link-socket-path to override
the default socket location.
Container example
docker run --rm \
-p 8000:8000 \
-v /tmp/mutx:/tmp/mutx \
ghcr.io/mutx-net/mutx-link:latest
If MUTX is also containerized, mount the same /tmp/mutx directory into
both containers.
Verifying the connection
With the daemon running, confirm the socket is reachable:
mutx link wallet list
If you see your wallets listed, the socket connection is healthy and any MCP
client configured with {"command": "mutx", "args": ["link"]} will work.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
Could not reach MUTX | Daemon is not running | Start with mutx daemon |
| Tool calls hang indefinitely | Waiting for terminal approval | Approve or deny in the Requests tab |
HTTP 404 on /mcp | Wrong path or port | Endpoint is /mcp, not / |
SLK expired error | SLK has expired | Request a new SLK |
MUTX_SOCKET_PATH ignored | Env not passed to subprocess | Use the --link-socket-path flag instead |
For verbose logging, set RUST_LOG=mutx_link=debug before starting Link.
Operational notes
- Link is stateless
- if the daemon is not reachable, tool calls fail immediately
- wallet approvals still happen in the terminal, even when Link is served over HTTP