Claude Desktop Cookbook
Connect Claude Desktop to the Leto SEO MCP server via mcp-remote. Estimated time: ~10 minutes.
What you'll build
By the end of this guide you will have Claude Desktop connected to the Leto SEO MCP server. Claude will be able to call all 10 orb_* tools, 2 literal resources, and 3 resource templates directly from natural-language prompts in your conversations. You will run one tool (portfolio health check) and read one templated resource (site metrics) to confirm end-to-end connectivity.
Prerequisites
- •Claude Desktop (latest version) — download from claude.ai/download
- •Node.js — required to run the
mcp-remoteproxy vianpx. Download from nodejs.org. - •A Leto SEO API key — see Authentication — Generating an API key if you haven't created one yet.
Step 1 — Locate your config file
Claude Desktop reads MCP server configuration from a JSON file. The file may not exist yet — if it doesn't, Claude Desktop will create it the first time you edit it through the settings UI.
# macOS
~/Library/Application\ Support/Claude/claude_desktop_config.json
# Windows
%APPDATA%\Claude\claude_desktop_config.jsonStep 2 — Add the Leto MCP server
Open claude_desktop_config.json in any text editor and add (or merge) the following JSON. Replace sk_live_xxxx... with your actual API key.
{
"mcpServers": {
"letoseo": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://letoseo.com/api/mcp/mcp",
"--header",
"Authorization:Bearer sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
]
}
}
}Authorization header. mcp-remote runs as a local stdio process that forwards every MCP message to the remote Streamable HTTP endpoint (https://letoseo.com/api/mcp/mcp) while injecting the Authorization: Bearer ... header on each request.Step 3 — Restart Claude Desktop
Claude Desktop reads its config file only at startup. You must perform a full quit and relaunch — closing the window is not sufficient.
- •macOS: Press Cmd-Q or choose Claude → Quit Claude from the menu bar.
- •Windows: Right-click the Claude icon in the system tray and choose Quit.
After quitting, relaunch Claude Desktop normally.
Step 4 — Verify the connection
Start a new conversation in Claude Desktop. In the bottom-right corner of the conversation input area you should see a small slider or tools icon — this is the MCP indicator. Click it to expand the list of connected servers and tools.
Under the letoseo server entry you should see all 10 tools listed:
orb_portfolio_health— Get health scores, trends, and alert counts for all sites in the portfolio.orb_site_overview— Get detailed overview for a specific site: health score, KPIs, trend chart, and top pages.orb_keyword_trends— Get top search queries with impressions, clicks, CTR, position, and period-over-period changes.orb_traffic_overview— Get traffic metrics: sessions, engagement rate, and top pages by traffic.orb_cwv_status— Get Core Web Vitals status: LCP, INP/TBT, CLS with pass/fail, and PSI category scores.orb_alert_feed— Get alerts with type, severity, metric context, and affected URLs.orb_index_coverage— Get index coverage: indexed/excluded/error counts and trend vs 7 days ago.orb_compare_sites— Compare metrics across multiple sites side by side.orb_campaign_list— Get all campaigns for a site with click and session totals.orb_campaign_detail— Get campaign details with links, KPIs, and channel breakdown.
The 2 literal resources (letoseo://portfolio/summary, letoseo://alerts/active) and the 3 resource templates (letoseo://sites/{siteId}/metrics, letoseo://sites/{siteId}/pages, letoseo://sites/{siteId}/campaigns) will be visible in the attachment menu (paperclip icon) when you start composing a message.
Step 5 — Try a tool
In a new conversation, type the following prompt:
"List my SEO portfolio's health using Leto."
Claude will recognize that the orb_portfolio_health tool is the right one to call, request your confirmation (Claude Desktop shows a tool-use approval dialog before calling external servers), and then display a formatted summary of each site's health score, traffic trend, and active alert count. If you have multiple sites in your portfolio you'll see one entry per site.
Step 6 — Read a templated resource
Resource templates let Claude substitute a variable (like a site UUID) into a letoseo:// URI and call resources/read. This is distinct from calling a tool — it returns a document-style snapshot rather than a computed result.
Try this prompt (replace the UUID with one of your actual site IDs, which you can get from the orb_portfolio_health response above):
"Read the metrics resource for site 00000000-0000-0000-0000-000000000001."
Claude will substitute the UUID into the letoseo://sites/{siteId}/metrics template, producing the concrete URI:
letoseo://sites/00000000-0000-0000-0000-000000000001/metricsThe MCP server resolves this via a resources/read call and returns the latest metric snapshots — organic sessions, KPI trends, and period — which Claude then summarizes in plain English. This demonstrates the full resource-template flow: template discovery, variable substitution, and resources/read against a concrete letoseo:// URI.
Troubleshooting
Server doesn't appear in the tools list
- •Validate your JSON — trailing commas and unquoted keys will silently break the config. Use a JSON validator before saving.
- •Confirm
mcp-remoteis reachable vianpx:
npx -y mcp-remote --version- •Check Claude Desktop's MCP logs for startup errors:
macOS:
~/Library/Logs/Claude/mcp*.logWindows:
%APPDATA%\Claude\logs\401 or 403 authentication errors
Confirm your API key is valid and active. Send the same Bearer token to an authenticated REST endpoint — the public health endpoint does not require auth, so it cannot distinguish a valid key from a missing one. Use /api/v1/portfolio instead:
curl -H "Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
https://letoseo.com/api/v1/portfolioA working key returns a normal JSON envelope with your portfolio data ( 200 OK). 401 means the key is wrong or missing; 403 with owner_pending_approval or owner_deletion_pending means the key is real but the owner status blocks API access. The MCP layer applies the same rules — see Authentication — owner gating for details.
Rate limit errors
The MCP server shares the same rate-limit window as the REST API. If you hit the limit during a conversation-heavy session, wait a minute before retrying. See Authentication — rate limits for the per-key limits and reset behaviour.