Skip to content

docs(mcp): refresh Celo MCP Server page for remote HTTP transport and current tool set - #2288

Open
GigaHierz wants to merge 3 commits into
mainfrom
GigaHierz/refresh-celo-mcp-page
Open

docs(mcp): refresh Celo MCP Server page for remote HTTP transport and current tool set#2288
GigaHierz wants to merge 3 commits into
mainfrom
GigaHierz/refresh-celo-mcp-page

Conversation

@GigaHierz

Copy link
Copy Markdown
Contributor

What & why

The Celo MCP Server page had drifted from the upstream celo-org/celo-mcp repo. Two upstream changes in particular were not reflected in the docs:

  • Remote MCP support — the server now runs as a remote endpoint over Streamable HTTP (single URL, no local Python install). The page documented only the local stdio setup.
  • mcp 2.x migration — the entry point changed and the tool set was reworked.

This is a separate change from #2287 (which adds the third-party Celina pages and only cross-links this page).

Changes

  • Remote transport: new "Connect Remotely (Streamable HTTP)" section — HTTP run commands, URL-based client config, and the env-var configuration table (MCP_TRANSPORT, HOST/PORT, MCP_ALLOWED_HOSTS, MCP_CORS_ORIGINS, rate limiting, MCP_AUTH_TOKEN) plus the /health note.
  • Available Tools reconciled to the server's actual 15 tools:
    • Removed tools no longer registered upstream: get_account, get_token_info, get_nft_info, get_nft_balance, call_contract_function, estimate_contract_gas, estimate_transaction.
    • Added missing tools: get_stable_token_balance, get_staking_balances, get_activatable_stakes, get_total_staking_info, get_validator_groups, get_validator_group_details.
  • Key Features & intro corrected to the current read-only capabilities (removed NFT / smart-contract / transaction-simulation claims that no longer apply).
  • Run command updated to celo-mcp-server; Code Quality section updated to ruff (was isort/flake8).
  • MCP index page: refreshed the Celo MCP Server summary bullet (balances, staking/validators, local-or-remote).

Verification

  • Tool names, transport flags, and env-var table verified against the current celo-org/celo-mcp main (src/celo_mcp/server.py, pyproject.toml, README.md).
  • mint broken-links passes on this branch head.

🤖 Generated with Claude Code

… current tool set

Reconcile the Celo MCP Server page with the upstream celo-org/celo-mcp
repository, which has drifted from the docs:

- Document the remote Streamable HTTP transport (added upstream), including
  the HTTP run commands, URL-based client config, and env-var configuration
  table (MCP_TRANSPORT, HOST/PORT, MCP_ALLOWED_HOSTS, auth token, etc.).
- Replace the Available Tools list with the server's actual 15 tools:
  drop tools no longer registered (get_account, get_token_info, both NFT
  tools, both contract tools, estimate_transaction) and add the missing
  balances/staking/validator tools (get_stable_token_balance,
  get_staking_balances, get_activatable_stakes, get_total_staking_info,
  get_validator_groups, get_validator_group_details).
- Correct Key Features and the intro to match read-only capabilities
  (remove NFT/smart-contract/simulation claims that no longer apply).
- Update the run command to the current entry point (celo-mcp-server) and
  the Code Quality section to ruff (replacing isort/flake8).
- Refresh the summary bullet on the MCP index page.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
GigaHierz and others added 2 commits August 27, 2026 20:13
Match the four local examples so readers see one server key throughout.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@palango

palango commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

The reconciliation itself checks out: I verified the 15-tool list against upstream server.py, the env-var names and defaults against http_app.py, and the deleted heading anchors have no inbound links. But there's a blocker: the page now documents code that isn't released.

The PR body says the commands were verified against main, and that's the problem. PyPI's latest celo-mcp is 0.3.3 (uploaded 2026-08-17). Its wheel declares a single entry point, celo-mcp = celo_mcp.server:main_sync. No celo-mcp-server, no http_app.py, no --transport flag, no starlette/uvicorn dependencies. And pyproject.toml on main still says 0.3.3, so no release with the new code appears queued. Anyone who follows the page's own install step (pipx install celo-mcp, or the uvx client configs) gets command-not-found from every run command on the page (lines 123, 125, 211, 214), and the PR removed the python -m celo_mcp.server invocation that does work with the released package. The whole "Connect Remotely" section and the new index bullet describe capability nobody can install today. I'd either hold this until upstream cuts a release, or keep the released stdio command and mark the new content as requiring a checkout (e.g. uvx --from git+https://github.com/celo-org/celo-mcp celo-mcp-server).

Worth fixing in the same pass:

  • CELO_RPC_URL / CELO_TESTNET_RPC_URL (line 47): nothing reads these. Settings use the CELO_MCP_ env prefix, and even that binding is dead, because CeloClient.__init__ hardcodes https://forno.celo.org (the testnet branch hardcodes Alfajores, whose host no longer resolves). Exporting the documented variables silently leaves you on mainnet forno. Either drop the section or say the endpoint is currently not configurable.
  • The remote client config (lines 130-136) fails silently in Claude Code, which treats a bare url without "type": "http" as stdio and skips it, and VS Code wants a servers key, not mcpServers. use-docs-with-ai.mdx:63-76 warns about exactly this, so the two pages now disagree. Per-client <Tabs> (AGENTS.md:102) would fix it.
  • The card on use-docs-with-ai.mdx:214 still advertises NFTs and doesn't mention staking. That's the third copy of the capability list; this PR updated the other two.
  • get_validator_groups (line 179) is paginated (default page_size 10, max 50), not "all validator groups". Since the page documents pagination for get_governance_proposals two bullets up, the omission reads as "not paginated", and an LLM using this page as tool documentation will report the first 10 groups as the full set.
  • get_celo_balances and get_stable_token_balance (lines 163-164) read as duplicates. The actual difference: the first covers CELO plus cUSD/cEUR/cREAL, the second multicalls the wider token registry (USDT, USDC, USDGLO, cKES and more). The deleted USDm/EURm/BRLm note was also the only place the page explained the symbols these tools return.
  • Three gaps in the HTTP section: the env table is missing MCP_TRUST_PROXY (without it, rate limiting behind Cloud Run or any load balancer keys on the proxy IP and all clients share one 60/min bucket); MCP_AUTH_TOKEN has no client-side example showing the bearer header, so the only lockdown knob has no client half; and the quickstart binds 127.0.0.1 with localhost-only allowed hosts, so a remote client fails first with connection refused and then with HTTP 421, and nothing on the page maps those symptoms to HOST / MCP_ALLOWED_HOSTS.

Smaller:

  • The four new headings are Title Case; AGENTS.md:71 asks for sentence case on new or rewritten headings. Fixing it later re-slugifies the anchors a second time.
  • The remote section sits under "MCP Client Integration" but is mostly server operation, and the run command now appears three times (123, 125, 214). Give it one home: its own H2 next to "Running the Server", or folded into it. Also "The stdio setup above is unchanged; this is an additional transport" is changelog voice; docs readers don't have a prior version to compare against.
  • The page has no ## Related / ## Resources and zero internal links (AGENTS.md:149). A Resources link to celo-org/celo-mcp would also give the hand-copied tool list an authoritative anchor against future drift.
  • Heads-up: docs(build-with-ai): add Celina SDK, MCP, hosted MCP, and API pages #2287 edits the same list block in mcp/index.mdx, so whichever merges second will conflict.
  • Pre-existing, but since you're on this page: the VS Code section (line 59) points macOS/Linux users at ~/.vscode/mcp.json, which VS Code doesn't read, and uses mcpServers where VS Code wants servers.

@GigaHierz

Copy link
Copy Markdown
Contributor Author

Reproduced the release blocker independently before touching anything — you are right, and the page cannot ship as written.

$ curl -s https://pypi.org/pypi/celo-mcp/json | jq -r .info.version
0.3.3                                  # uploaded 2026-08-17

$ pip download celo-mcp==0.3.3 --no-deps && unzip -p celo_mcp-0.3.3-py3-none-any.whl \
    "*.dist-info/entry_points.txt"
[console_scripts]
celo-mcp = celo_mcp.server:main_sync   # the only entry point

$ unzip -l celo_mcp-0.3.3-py3-none-any.whl | grep -c http_app
0

requires_dist for 0.3.3 lists no starlette and no uvicorn, so even a source install of the released version cannot serve HTTP. Every celo-mcp-server invocation on the page is command-not-found for anyone following the page's own install step, and the PR removed the python -m celo_mcp.server form that does work.

I have not rewritten the page, because the fix depends on a call that is not mine to make:

  1. Hold until upstream cuts a release, or
  2. Ship now with the released stdio command as the documented path and the remote/HTTP section explicitly marked as requiring a checkout (uvx --from git+https://github.com/celo-org/celo-mcp celo-mcp-server).

I would rather not guess between "documentation for unreleased software, labelled" and "wait" on a page whose job is install instructions. @GigaHierz — which one?

The rest of your list is unambiguous and I will apply it in whichever direction is chosen. Flagging two that change what gets written rather than just how:

  • CELO_RPC_URL / CELO_TESTNET_RPC_URL: confirmed nothing reads them, and the testnet branch hardcodes an Alfajores host that no longer resolves. That is a live wrong-config trap, so the section should say the endpoint is not configurable rather than be quietly deleted.
  • get_validator_groups pagination: agreed this is the worst of the tool-list errors, precisely because an LLM reading the page as tool documentation will report the first 10 groups as the complete set.

Also noting your conflict warning: #2287 touches the same list block in mcp/index.mdx.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants