eon-mcp-local
Local stdio MCP server for the Eon platform.
Lets MCP clients (Claude Code, Cursor, Codex, Devin, scripts in CI) call Eon REST APIs over a non-interactive client_credentials OAuth flow. Unlike the remote https://mcp.eon.io server (which uses an interactive browser-based OAuth flow), this CLI is suitable for machines and pipelines.
Install
First install uv via your preferred method — Homebrew, pipx, your OS package manager, or Astral's install script (see Astral's docs for checksum-verified options).
Then pick one:
# zero-install (uvx fetches on first run, caches for next time) — recommended
uvx eon-mcp-local serve
# persistent install
uv tool install eon-mcp-local
# or pipx if you prefer
pipx install eon-mcp-local
Configure
Create API credentials in the Eon console (Settings → API Credentials), then set:
export EON_CLIENT_ID=...
export EON_CLIENT_SECRET=...
export EON_ACCOUNT_DOMAIN=acme # the 'acme' in 'acme.console.eon.io'
Wire into Claude Code
claude mcp add eon -- uvx eon-mcp-local serve
Equivalent for Cursor / Codex / Devin: add a stdio MCP server with command uvx eon-mcp-local serve and the env vars above.
Using from an agent framework
See examples/adk_example.py for a runnable Google ADK agent that
spawns eon-mcp-local as a stdio subprocess and exposes its tools to Gemini. The same pattern
(spawn a subprocess, speak MCP over stdin/stdout) works with any MCP-aware framework.
Environment variables
| Variable | Required | Description |
|---|---|---|
EON_CLIENT_ID |
yes | OAuth client_id from POST /api/customer/v1/api-credentials |
EON_CLIENT_SECRET |
yes | OAuth client_secret from the same endpoint |
EON_ACCOUNT_DOMAIN |
yes | Your tenant subdomain (the acme in acme.console.eon.io) |
EON_LOG_LEVEL |
no | DEBUG / INFO / WARNING / ERROR (default INFO) |
EON_JSON_LOGGING |
no | true to emit JSON logs to stderr |
Troubleshooting
error: missing required environment variables— set the three required env vars before invokingserve.- HTTP 401 on every call — verify the
client_id/client_secretare active in the Eon console and were issued for the same tenant asEON_ACCOUNT_DOMAIN. - DNS error / connection refused —
EON_ACCOUNT_DOMAINmust be the bare subdomain, not a full URL. - Garbled output — logs go to stderr by design; if you see them mixed with stdout, your MCP client is merging streams. Filter or capture stderr separately.
Reporting security issues
Please report suspected security issues privately to security@eon.io rather than in a public channel.
License
Apache License 2.0 — see LICENSE.
Metadata
Release files for eon-mcp-local 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| eon_mcp_local-0.1.0.tar.gz | 99.0 kB | Without provenance | Details for eon_mcp_local-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| eon_mcp_local-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for eon_mcp_local-0.1.0-py3-none-any.whl |
Total release size: 201.1 kB
Release files / eon_mcp_local-0.1.0.tar.gz
| Download URL | eon_mcp_local-0.1.0.tar.gz |
|---|---|
| Size | 99.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
95b7976841780f5a3f99e2b5b139028fab01fafd9e3d6b1d9f23abe44947034b
|
|
BLAKE2b-256 checksum How to use checksums |
6038ef72150cb9229907597771dd4cfe617578a2328ec73dc46b59a854012053
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / eon_mcp_local-0.1.0-py3-none-any.whl
| Download URL | eon_mcp_local-0.1.0-py3-none-any.whl |
|---|---|
| Size | 102.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9d53d1de710bd63b827cbc763773ab584c6f10b3c99a2592b5b7499c0e3e5c5d
|
|
BLAKE2b-256 checksum How to use checksums |
379312e03bcfa19c6630ab80d2ba4b1d0c0271252d9633f272ad35d1d587d49a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for eon-mcp-local 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.