erebrus-mcp
Officialerebrus-mcp
MCP server so agents can onboard onto Erebrus: authenticate (wallet or email), create orgs, mint API keys and node registration tokens, run nodes (via install plan + registration token), provision VPN clients, and use Drop — against the public gateway API.
Transports
Transport | When to use |
stdio (default) | Most agents/IDEs — Grok, Cursor, Claude Code spawn the process |
HTTP (local) | Allowed — agent or tooling connects to a local MCP URL ( |
Both share the same tools and session auth (wallet/email). You do not need a remote hosted MCP for agents; local stdio or local HTTP is enough. Dockerfile/compose ship the binary for packaging (stdio by default; pass --http if you want a local HTTP listener).
Not exposed: admin, leaderboard/rank/perks/social, deep firewall rule editing, billing webhooks.
Quick start (stdio — default)
# from npm (once published)
npx -y @netsepio/erebrus-mcp
# from clone
npm install && npm run build && node dist/index.jsGrok
# ~/.grok/config.toml
[mcp_servers.erebrus]
command = "npx"
args = ["-y", "@netsepio/erebrus-mcp"]
env = { EREBRUS_GATEWAY_URL = "https://gateway.erebrus.io" }Or pin a local build:
[mcp_servers.erebrus]
command = "node"
args = ["/absolute/path/to/erebrus-mcp/dist/index.js"]
env = { EREBRUS_GATEWAY_URL = "https://gateway.erebrus.io" }Cursor / Claude Code
{
"mcpServers": {
"erebrus": {
"command": "npx",
"args": ["-y", "@netsepio/erebrus-mcp"],
"env": {
"EREBRUS_GATEWAY_URL": "https://gateway.erebrus.io"
}
}
}
}Agents authenticate with tools (wallet or email). No env token required for interactive use.
Local HTTP (optional)
Agents may run the MCP as a local HTTP server and connect with a URL transport:
# from clone
npm run build
node dist/index.js --http
# or: MCP_TRANSPORT=http MCP_PORT=3100 node dist/index.js
# Docker image, HTTP mode
docker run --rm -p 3100:3100 \
-e EREBRUS_GATEWAY_URL=https://gateway.erebrus.io \
ghcr.io/netsepio/erebrus-mcp:latest \
--httpEndpoint:
http://127.0.0.1:3100/mcpHealth:
http://127.0.0.1:3100/healthzOptional gate:
MCP_AUTH_TOKEN→ clients sendAuthorization: Bearer <token>
Example Grok remote-style config against localhost:
[mcp_servers.erebrus_http]
url = "http://127.0.0.1:3100/mcp"
# headers = { Authorization = "Bearer <MCP_AUTH_TOKEN>" } # if setSession auth to the Erebrus gateway is still via wallet/email tools (or optional EREBRUS_BEARER_TOKEN). MCP_AUTH_TOKEN only locks the local MCP HTTP door if you set it.
Optional env (see .env.example):
Env | Use |
| Gateway base (default |
| Optional pre-seeded user PASETO (CI/operators only) |
| Org API key — today only |
| Default |
Auth model
Agents log in via tools, not a pre-shared MCP secret:
Flow | Tools |
Wallet |
|
Email OTP |
|
Import |
|
Status |
|
Successful login stores a user PASETO in the MCP session for that process.EREBRUS_BEARER_TOKEN is an optional env fallback only.
Credential | Source | Use |
Session PASETO | auth tools | Orgs, keys, node tokens, VPN, Drop |
Env PASETO |
| Fallback if no session login |
Org API key |
|
|
Agent responsibilities outside MCP: wallet signing or reading email OTP; choosing a VPS and running the install command from node_install_plan with the registration token.
Tool map
Session / health
gateway_health, whoami, auth_*
Orgs & keys
org_create, org_list, org_get, org_entitlements, apikey_create, apikey_list, apikey_revoke
Nodes
node_registration_token_create, org_nodes_list, org_node_get, operator_nodes_list, nodes_directory, node_install_plan
VPN
vpn_client_list, vpn_client_create, vpn_client_get_config, vpn_client_delete, org_vpn_client_create, org_vpn_client_list, org_usage
Drop
drop_nodes_list, drop_upload_reserve, drop_upload_content, drop_upload_status, drop_files_list, drop_file_get, drop_file_delete, drop_usage, org_drop_files, org_drop_usage
Suggested agent flow
auth_methods→ wallet or email login toolswhoami→org_create/org_listOptional
apikey_create(store secret offline)node_registration_token_create→node_install_plan→ run installer on the agent’s chosen VPSvpn_client_create+vpn_client_get_configDrop:
drop_nodes_list→ reserve → upload content
Develop
npm install
npm run typecheck
npm run build
npm run dev # stdio
node dist/index.js --http # local HTTP on :3100Requirements: Node.js ≥ 20.
Docker image
CI publishes ghcr.io/netsepio/erebrus-mcp (GHCR). Default entrypoint is stdio; pass --http for a local HTTP listener.
docker pull ghcr.io/netsepio/erebrus-mcp:latest
# stdio (attach stdin/stdout)
docker run --rm -i \
-e EREBRUS_GATEWAY_URL=https://gateway.erebrus.io \
ghcr.io/netsepio/erebrus-mcp:latest
# local HTTP
docker run --rm -p 3100:3100 \
-e EREBRUS_GATEWAY_URL=https://gateway.erebrus.io \
ghcr.io/netsepio/erebrus-mcp:latest \
--httpSecurity
HTTP client path allowlist blocks admin/rank/social/firewall-rules/referrals.
One-time secrets (
api_key,ere_reg_*, PASETO) — store offline; avoid chat logs.Drop upload via MCP is capped at ~15MB base64 payload.
Do not commit
.envor long-lived tokens.
CI
CI — typecheck + build on push/PR to
mainDocker — build/push
ghcr.io/netsepio/erebrus-mcponmainand version tagsnpm — publish
@netsepio/erebrus-mcponv*tags whenNPM_TOKENis set
License
MIT (see LICENSE).
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/NetSepio/erebrus-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server