Guide

Connect Moonleap to Claude Code, Cursor or Codex

One command per client, one browser authorization, no API key to paste. What the agent sees, the protocol it follows, how to check the loop closed.

SK Semih Kavaklıoğlu·8 Sept 2026·3 min read Share

Moonleap is built to be read by a coding agent, not by a person in a dashboard. The connection is a Model Context Protocol server at https://moonleap.io/mcp. Every client below talks to the same endpoint; the only difference is where the URL goes.

How do I connect in one command?

Answer. Add the HTTP server to your client, then approve the browser window that opens. There is no API key to copy.

Claude Code:

claude mcp add --transport http moonleap https://moonleap.io/mcp

Codex CLI:

codex mcp add moonleap --url https://moonleap.io/mcp
codex mcp login moonleap

Gemini CLI:

gemini mcp add --transport http moonleap https://moonleap.io/mcp

VS Code:

code --add-mcp '{"name":"moonleap","type":"http","url":"https://moonleap.io/mcp"}'

Cursor reads .cursor/mcp.json in the project (or ~/.cursor/mcp.json for every project); Windsurf reads ~/.codeium/windsurf/mcp_config.json with the key serverUrl instead of url:

{ "mcpServers": { "moonleap": { "url": "https://moonleap.io/mcp" } } }

Claude Desktop and claude.ai take the same URL under Settings, Connectors, "Add custom connector". Anything that cannot do OAuth (a CI job, a script) uses an API key from Settings as a Authorization: Bearer header instead.

The first tool call opens a browser tab on moonleap.io. You sign in (Google, GitHub or an e-mail link), approve the client, and the tab closes. The client keeps a token; Moonleap keeps a record of which client is connected, visible in Settings, revocable there.

What does the agent see once connected?

Answer. Fifteen tools, and one of them is meant to be called first: get_overview returns the whole state of a project in a single response.

The overview carries the open findings with their evidence and a fix recipe, the ones you snoozed with their return dates, content ideas with briefs, live Search Console and GA4 movement when Google is connected, the AI-search mention rate, security state, the watch alerts and last week's measurements against the week before, and a ranked list of what to do first. The narrower tools (get_findings, get_insights, get_watch) exist for more rows, not for a different picture.

Read
get_overview
the whole project, ranked
get_findings
open and snoozed findings
get_insights
Search Console, GA4, content ideas
get_watch
daily checks, weekly report
Act
run_analysis
a full re-analysis (3 a day)
report_finding
done, disputed, skipped or snoozed, with a note
report_content_idea
the same for a content idea
run_security_checkup
the repo-side checkup instructions

What is the working protocol?

Answer. Verify before you fix, show a plan before you touch a file, report every item you were given, and let Moonleap re-measure.

Each finding comes with the URLs and values it was computed from. The agent is asked to check them against the repository first (a finding about a missing hreflang tag is verified in the layout component, not taken on faith), then present a plan, then change only what you approve. After the work it calls report_finding for every item: done with a note saying exactly what changed, disputed with the reason the finding is wrong, skipped or snoozed with a date.

That last step matters more than it looks. A finding marked done gets a three-day grace period for the deploy, then the Monday check re-tests it. If it is still detected, it reopens with a regressed event and the note you wrote attached, so nobody argues about what was tried.

How do I check that the loop is closed?

Answer. Two places: the finding history in the app, and the Monday report.

In the project, each finding shows its events (fetched by the agent, done, disputed, regressed) with dates and notes. On Monday the weekly report lists what the agent shipped, what regressed, and what moved in the measurements. If a finding sits at "fetched" with no report for a week, the agent read it and never came back; ask it to close its items.

FAQ

Does Moonleap need access to my repository?

No. Moonleap reads the public site the way a browser does. The repository work happens on your machine, by your agent, under your approval.

Can I connect one account to several projects?

Yes. One connection serves every project on the account; the agent picks a project by id, and list_projects returns them.

What if my client is not listed?

Any MCP client that supports streamable HTTP with OAuth works with the same URL. For anything else, create an API key in Settings and send it as a bearer token.

Sources

  1. Moonleap MCP endpoint https://moonleap.io/mcp (streamable HTTP, OAuth 2.1 with dynamic client registration)
  2. Model Context Protocol specification https://modelcontextprotocol.io/specification
  3. Claude Code MCP documentation https://docs.anthropic.com/en/docs/claude-code/mcp

Share the number

1

command to connect; the authorization happens in the browser, no key is copied

moonleap.io · 8 Sept 2026Post

Related