Lookout

io.github.lookoutstatsPublished by GitHub account lookoutstatsv0.2.0Updated Nov 2, 2026

Ask about Vercel Web Analytics and Speed Insights across all your projects and boards.

VerifiedStreamable HTTPWeb executableDeveloper ToolsSecurity & MonitoringData & Analytics

Overview

AI-generated overview

Lookout MCP gives an assistant read access to Vercel Web Analytics and Speed Insights across a workspace's sites and boards, plus two optional write tools.

What you can do
  • List boards and read every site on a board with visitors, change vs the previous period, page views, top source and country, and conversions
  • Inspect one site in depth: visitors per day or hour, top referrers, countries and pages, production deployments, Core Web Vitals and board notes
  • Compare up to five sites side by side in absolute, indexed or baseline mode
  • Break down visitors by UTM campaign, source and medium, and trace traffic between sites on a board
  • Read Core Web Vitals (LCP, INP, CLS) per device with the slowest routes, the board's ranked Fix list, and alert rules with recent firings
  • Add a dated note to a board's charts and create short-lived PDF or CSV export links (write tools)
When to use it
Useful when you want to ask questions about your own Vercel site traffic and performance in plain language: which landing page dropped, which campaign brought visitors, whether mobile pages pass Core Web Vitals, or which fixes matter most. It suits teams already using Lookout to aggregate Vercel Web Analytics across projects.
Requirements
A Lookout account and an API key (lk_live_…) created under Settings › API & MCP, supplied as the LOOKOUT_API_KEY environment variable for the local stdio package or as an Authorization bearer header for the hosted endpoint. Node.js is needed for the npx/stdio route; network access to the Lookout API is required. The write tools need a key created with the notes-and-exports permission.
Before you install
The API key is a secret: keep it in local client configuration, not in a committed file, and revoke it if exposed. A key is read-only unless created with the notes-and-exports permission, which enables adding chart notes and generating export links. Answers include referrers, paths, UTM values, deployment messages and note texts that come from outside and should be treated as data, not instructions. Each key is limited to 600 requests per hour, shared with the REST API.

Installation

In SourceWeft

  1. Open Lookout in the dashboard and add it to a workspace.
  2. Connect Authorization token credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.lookoutstats%2Flookout-mcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "lookout": {
      "type": "http",
      "url": "https://mcp.lookoutstats.com/",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

README

lookout-mcp

[npm] [CI] [License: MIT] [MCP] [Listed on mcpservers.org]

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

  1. 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.
  2. Add the server to your client with one of the configurations below. Paste the key into the configuration.
  3. Restart the client.

Claude Desktop

Open Settings → Developer → Edit config (claude_desktop_config.json), and add this entry:

json
{  "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.

json
{  "mcpServers": {    "lookout": {      "url": "https://mcp.lookoutstats.com",      "headers": { "Authorization": "Bearer lk_live_…" }    }  }}

Claude Code

bash
claude mcp add --transport http lookout https://mcp.lookoutstats.com \  --header "Authorization: Bearer lk_live_…"

Windsurf

Put this in ~/.codeium/windsurf/mcp_config.json:

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.com with the header Authorization: Bearer lk_live_…. If your gateway keeps Authorization for itself (Smithery does), send X-Lookout-Api-Key: lk_live_… instead.

Tools

These rules apply to all tools:

  • range is 24h, 7d (the default) or 30d. 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.
  • board is the board's id or its exact name.
  • Each tool returns a one-line summary first. Compact JSON follows the summary.
ToolArgumentsResult
list_boards—The boards in the workspace, with their ids and site counts
get_boardboard, rangeAll sites on a board. For each site: visitors, change against the previous period, page views, pages per visit, top source and country, conversions
get_sitesite, 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_sitessites[] (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_campaignssite, rangeVisitors by UTM campaign, source and medium, with goal conversions. This needs Vercel Web Analytics Plus.
get_flowboard, rangeTraffic between the sites on a board: which site sends visitors to which site
get_speedsite, range, deviceCore Web Vitals (LCP, INP, CLS, p75) for all, mobile or desktop visitors, and the slowest routes
list_fixesboard, range, statusThe 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, scopeAdds a note to a day on the board's charts, for one site or for all sites
export_board ✎board, fmt (pdf or csv), rangeA 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

  1. "Which landing page dropped most this week, and what deployed right before?"
  2. "Compare the three pricing pages over the last 30 days, indexed."
  3. "Where do visitors to acme.com come from, and which campaign brought the most?"
  4. "Are our sites passing Core Web Vitals on mobile? Which route is slowest?"
  5. "Do my landing pages send visitors to the main site? Which ones are dead ends?"

Skills

The lookout-skills repository adds two agent skills on top of this server:

  • lookout-fix finds the site of the current repository on your boards. It takes the top open item of the Fix list and makes the change in your code.
  • lookout-report writes a weekly or monthly report from all your boards.

In Claude Code, one plugin installs the skills and this server:

text
/plugin marketplace add lookoutstats/lookout-skills/plugin install lookoutstats@lookout

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_sites makes 1 request for each site. Each other tool makes 1 request. Above the limit, you get a 429 response with a Retry-After header. 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

bash
npm i -g lookout-mcpPORT=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:

ts
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.

Source: README.md at commit 7f3b8b0

Tools

11

list_boards

List boards

The workspace's boards (each a dashboard of sites), with their ids and site counts.

Takes no parameters.

get_board

Get a board

Every site on a board for a range, busiest first: visitors and their change vs the previous period, page views, pages per visit, top source and country, and goal conversions.

Parametersboardrequiredrange

get_site

Get a site

One site in depth for a range: visitors per day (or hour for 24h) with the previous period, top referrers, countries and pages, its production deployments, its Core Web Vitals (Speed Insights p75), and, with board, the board's notes dated in the range. One API request.

Parameterssiterequiredboardrange

compare_sites

Compare sites

Up to 5 sites side by side over a range. mode: absolute (visitors per bucket), indexed (each site's first non-zero bucket = 100) or baseline (each site's visitors as % of the baseline site's). One API request per site.

Parametersmoderangesitesrequiredbaseline

get_campaigns

Get campaigns

A site's visitors by UTM campaign, source and medium for a range, with the goal's conversions. Needs Vercel Web Analytics Plus or Enterprise; otherwise status is plan_required.

Parameterssiterequiredrange

get_flow

Get traffic between sites

Traffic between a board's sites for a range: each site's visitors, and hops (from, to, visitors) — visits to a site whose referrer is another site of the same board. External traffic is not included.

Parametersboardrequiredrange

get_speed

Get Core Web Vitals

A site's Core Web Vitals from real visitors (Vercel Speed Insights, p75, production) for one device — LCP, INP, CLS and a passing / needs_work / poor / off status — with its slowest routes by LCP.

Parameterssiterequiredrangedevice

list_fixes

List what to fix

A board's Fix list for a range, ranked by visitors affected: slow Core Web Vitals, sites that send nobody onward, sites most visitors leave after one page, low conversion, falling traffic, untagged social campaigns, and setup gaps (no goal, no Speed Insights, no Web Analytics). Each item has its kind, site, title, detail, why it matters and how to verify a fix. status: open (default), snoozed or resolved.

Parametersboardrequiredrangestatus

list_alerts

List alerts

The workspace's alert rules (board, metric, drop or rise, threshold %) and what fired in the last 30 days.

Takes no parameters.

add_annotation

Add a note

Pins a note to a day on a board's charts, e.g. "Launched pricing v2": for one site (scope "site", the default when site is given) or every site on the board (scope "board"). Needs a key with write access ("Allow notes and exports"). Text is kept to 80 characters.

Parametersdaterequiredsitetextrequiredboardrequiredscope

export_board

Export a board

Makes a download link for a board as a PDF (the board as a page) or CSV (one row per site). The link works for 5 minutes. Needs a key with write access ("Allow notes and exports").

Parametersfmtboardrequiredrange

Version history

2
  1. v0.2.0LatestOct 26, 2026
  2. v0.1.1Oct 25, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listed15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts