About Lookout
Lookout’s MCP server lets teams query Vercel Web Analytics and Speed Insights across projects and boards. It provides comparisons, traffic and performance details, and selected note and export actions through the Lookout API.
Key features
- 01View board and site analytics
- 02Compare traffic across sites
- 03Inspect campaigns and traffic flows
- 04Review Core Web Vitals and fixes
- 05List alerts and add annotations
- 06Export boards as PDF or CSV
Use cases
- 01Find which landing pages lost traffic
- 02Compare pricing-page performance
- 03Review mobile Core Web Vitals
- 04Track campaign sources and conversions
MCP support
Exposes Lookout analytics and selected write operations as MCP tools, along with board resources and analysis prompts. Connects to the Lookout REST API through hosted Streamable HTTP or local stdio.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://mcp.lookoutstats.comclaude mcp add --transport http lookoutstats-lookout https://mcp.lookoutstats.com{"mcpServers":{"lookoutstats-lookout":{"type":"http","url":"https://mcp.lookoutstats.com"}}}Open in Cursor{"servers":{"lookoutstats-lookout":{"type":"http","url":"https://mcp.lookoutstats.com"}}}Open in VS Code{"mcpServers":{"lookoutstats-lookout":{"type":"http","url":"https://mcp.lookoutstats.com"}}}{"mcpServers":{"lookoutstats-lookout":{"serverUrl":"https://mcp.lookoutstats.com"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
https://mcp.lookoutstats.comAuth requiredTools
Details
From the project READMElookout-mcp
This is the MCP server for Lookout. Lookout shows Vercel Web Analytics for all your projects in one view.
Connect Claude, Cursor or a different MCP client. Then ask about your sites: visitors, sources, campaigns, Core Web Vitals and traffic between your sites. The answers come from your real numbers.
"Which landing page dropped most this week, and what deployed right before?"
The server is a thin client of the Lookout REST API. Every answer comes from api.lookoutstats.com. The server stores no data.
You can run the server in two ways:
- Hosted, over Streamable HTTP:
https://mcp.lookoutstats.com - Local, over stdio:
npx lookout-mcp
60-second setup
- In Lookout, open Settings › API & MCP and create an API key (
lk_live_…). Select Allow notes and exports only if you want the two write tools. - Add the server to your client with one of the configurations below. Paste the key into the configuration.
- Restart the client.
Claude Desktop
Open Settings → Developer → Edit config (claude_desktop_config.json), and add this entry:
{
"mcpServers": {
"lookout": {
"command": "npx",
"args": ["-y", "lookout-mcp"],
"env": { "LOOKOUT_API_KEY": "lk_live_…" }
}
}
}
claude.ai (connectors)
A claude.ai custom connector does not send a key header. Thus the hosted server cannot get your API key from a connector yet. Use Claude Desktop (above) or Claude Code until Lookout supports OAuth sign-in for connectors.
Cursor
Put this in .cursor/mcp.json in your project. To use the server in all your projects, put it in ~/.cursor/mcp.json.
{
"mcpServers": {
"lookout": {
"url": "https://mcp.lookoutstats.com",
"headers": { "Authorization": "Bearer lk_live_…" }
}
}
}
Claude Code
claude mcp add --transport http lookout https://mcp.lookoutstats.com \
--header "Authorization: Bearer lk_live_…"
Windsurf
Put this in ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"lookout": {
"serverUrl": "https://mcp.lookoutstats.com",
"headers": { "Authorization": "Bearer lk_live_…" }
}
}
}
Other clients
- stdio:
LOOKOUT_API_KEY=lk_live_… npx -y lookout-mcp - Streamable HTTP:
POST https://mcp.lookoutstats.comwith the headerAuthorization: Bearer lk_live_…. If your gateway keepsAuthorizationfor itself (Smithery does), sendX-Lookout-Api-Key: lk_live_…instead.
Tools
These rules apply to all tools:
rangeis24h,7d(the default) or30d. It can also be a custom window, for example{ "from": "2026-10-01", "to": "2026-10-14" }. A custom window is 30 UTC days or less.boardis the board's id or its exact name.- Each tool returns a one-line summary first. Compact JSON follows the summary.
| Tool | Arguments | Result |
|---|---|---|
list_boards | — | The boards in the workspace, with their ids and site counts |
get_board | board, range | All sites on a board. For each site: visitors, change against the previous period, page views, pages per visit, top source and country, conversions |
get_site | site, range, board? | One site in detail. It shows visitors per day (or per hour), top referrers, countries and pages, production deployments and Core Web Vitals. With board, it also shows the notes. |
compare_sites | sites[] (1–5), range, mode, baseline? | Sites side by side. absolute shows visitors. indexed sets the first bucket to 100. baseline shows each site as a percentage of one site. |
get_campaigns | site, range | Visitors by UTM campaign, source and medium, with goal conversions. This needs Vercel Web Analytics Plus. |
get_flow | board, range | Traffic between the sites on a board: which site sends visitors to which site |
get_speed | site, range, device | Core Web Vitals (LCP, INP, CLS, p75) for all, mobile or desktop visitors, and the slowest routes |
list_fixes | board, range, status | The board's Fix list: what to fix first, ranked by visitors affected, with why it matters and how to check the fix |
list_alerts | — | The alert rules, and the alerts of the last 30 days |
add_annotation ✎ | board, site?, date, text, scope | Adds a note to a day on the board's charts, for one site or for all sites |
export_board ✎ | board, fmt (pdf or csv), range | A download link for the board. The link is valid for 5 minutes. |
✎ A write tool. A write tool needs a key with Allow notes and exports.
Resources:
lookout://boards: the boards.lookout://boards/{id}: the sites on a board, for the last 7 days.
Prompts:
weekly_brief(board): a short brief. It names the sites with the largest changes and the causes.why_did_it_drop(site): finds when a drop started, what changed, and the likely cause.
Example questions
- "Which landing page dropped most this week, and what deployed right before?"
- "Compare the three pricing pages over the last 30 days, indexed."
- "Where do visitors to acme.com come from, and which campaign brought the most?"
- "Are our sites passing Core Web Vitals on mobile? Which route is slowest?"
- "Do my landing pages send visitors to the main site? Which ones are dead ends?"
Security
- Your key gets only your data. Each call goes to the Lookout API with your key. A key can only see its own workspace. The server keeps no data and does not log answers. The server does not store the key.
- A key is read-only by default. A key can only read data unless you create it with Allow notes and exports. A write key can add chart notes and make export links. It cannot change boards, members, alerts or settings. It cannot see your Vercel token.
- No personal data. Vercel Web Analytics does not use cookies. It reports aggregated data. Answers contain counts, domains, paths, referrers and countries. Answers do not identify people.
- Keep the key out of your repository. Put the key in a local configuration of your client. Examples are
~/.cursor/mcp.json, the Claude configuration and an environment variable. Do not put it in a file that you commit. You can revoke a key at any time in Settings › API & MCP. A revoked key stops on the next request. - Limits. Each key has 600 requests per hour. The REST API and the MCP server share this limit.
compare_sitesmakes 1 request for each site. Each other tool makes 1 request. Above the limit, you get a429response with aRetry-Afterheader. The hosted server accepts batches of 5 messages or fewer. - Data from outside. Referrers, paths, UTM values, deployment messages and note texts come from websites and their visitors. The server tells the model to use them as data, not as instructions. Keep keys read-only unless you need the write tools.
Send security problems to [email protected].
Self-hosting
npm i -g lookout-mcp
PORT=3000 lookout-mcp-http # Streamable HTTP on http://127.0.0.1:3000 (POST /, GET /health)
The server listens on 127.0.0.1 by default. In a container, set HOST=0.0.0.0.
You can also use the handler in your own server. The handler is a plain (Request) => Promise<Response> function:
import { createHttpHandler } from "lookout-mcp/http";
export const POST = createHttpHandler();
You can deploy this repository to Vercel without changes (vercel.json, api/index.js). To use a different API base URL with either entry point, set LOOKOUT_API_URL.
Links
Lookout is not affiliated with Vercel Inc.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.