Skip to main content
Glama

sitelens-mcp

Local companion MCP for the SiteLens Chrome extension.

Flow (no manual export):

  1. Cursor starts this MCP over stdio (see config below).

  2. MCP also listens on 127.0.0.1:19527 (bridge).

  3. In Chrome, run SiteLens analysis → click Send to MCP on the floating panel.

  4. The extension POSTs the current AnalysisReport to the bridge.

  5. Agent tools (sitelens_get_latest_report, …) read the in-memory cache.

Everything stays on your machine. No cloud upload.

Install

git clone https://github.com/SiteLens-team/sitelens-mcp.git
cd sitelens-mcp
pnpm install
pnpm build

Requires Node.js ≥ 18.

Related MCP server: AgenticSEO MCP Server

Cursor mcp.json

Point at the built entry (use your absolute path):

{
  "mcpServers": {
    "sitelens": {
      "command": "node",
      "args": [
        "/absolute/path/to/sitelens-mcp/dist/index.js"
      ]
    }
  }
}

Optional port override:

{
  "mcpServers": {
    "sitelens": {
      "command": "node",
      "args": [
        "/absolute/path/to/sitelens-mcp/dist/index.js"
      ],
      "env": {
        "SITELENS_MCP_PORT": "19527"
      }
    }
  }
}

Pairing

Step

Who

What

1

Cursor

Starts sitelens-mcp → stdio + http://127.0.0.1:19527

2

You

Analyze a page with the SiteLens extension

3

You

Click Send to MCP on the panel toolbar

4

Extension

POST /report with { report, source: "sitelens-extension" }

5

Agent

Calls sitelens_get_latest_report / sitelens_export_checklist

Health probe:

curl -s http://127.0.0.1:19527/health

Tools

Tool

Purpose

sitelens_ping

Bridge up?, port, cached report count

sitelens_get_latest_report

Full latest AnalysisReport (optional url filter)

sitelens_list_reports

Summaries only (last ~20)

sitelens_export_checklist

Severity-ordered fix checklist (no AI)

Environment

Variable

Default

Meaning

SITELENS_MCP_PORT

19527

Localhost bridge port

The Chrome extension defaults to the same port. Optional override in extension storage key mcpPort.

Privacy

  • Bridge binds only 127.0.0.1.

  • Logs never include full report bodies (url + timestamp only).

  • Reports live in MCP process memory (ring buffer of 20); they vanish when the MCP process exits.

License

MIT

Available Tools

4 tools
sitelens_export_checklistA

Build a severity-ordered actionable checklist from the latest (or url-matched) report: SEO warn/fail, image suggestions, a11y, security. No AI.

NameRequiredDescriptionDefault
urlNoOptional URL substring to pick a report

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral burden. It discloses that the checklist is severity-ordered, includes specific categories, and is produced with 'No AI', which adds useful behavioral context beyond the schema. But it does not clarify whether the operation is read-only, whether 'export' writes a file, what permissions are needed, or what the response format is.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with zero waste: the action, output, source selection, categories, and the 'No AI' note are all packed efficiently. Nothing is repeated or padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity tool with one optional parameter and no output schema, the description gives enough context to call it: it explains the source report selection and the contents of the generated checklist. It is slightly incomplete because it does not specify the return format (e.g., text, markdown, file) or clarify the 'export' behavior, but the core calling information is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single optional url parameter. The description adds only 'latest (or url-matched)' nuance, which the schema already covers as 'Optional URL substring to pick a report'; the schema does the heavy lifting, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and output ('Build a severity-ordered actionable checklist') with source options ('latest (or url-matched) report') and the checklist categories (SEO warn/fail, image suggestions, a11y, security). It clearly distinguishes itself from a raw report fetch, though it does not explicitly name sibling tools like sitelens_get_latest_report.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies the tool is used when an agent wants a checklist derived from the latest or a url-matched report rather than the raw report itself. However, it gives no explicit when-to-use versus alternatives, no when-not conditions, and does not name sitelens_get_latest_report or sitelens_list_reports as the alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sitelens_get_latest_reportA

Return the latest AnalysisReport JSON pushed by the SiteLens extension. Optional url substring filter.

NameRequiredDescriptionDefault
urlNoOptional URL substring to match (case-insensitive)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses the data source ('pushed by the SiteLens extension'), which signals the report may not exist, but it is silent on what happens on an empty store, how 'latest' is determined, and whether the filter searches only history.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero filler, and the core action is front-loaded ahead of the optional filter detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, yet the description does not characterize what an AnalysisReport contains or what is returned when nothing matches. For a simple single-parameter read tool this is close, but the undefined return shape leaves a real gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single `url` parameter is fully documented, including case-insensitivity. The description's 'Optional url substring filter' merely restates the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb (Return) and resource (the latest AnalysisReport JSON), and 'latest' implicitly separates it from sitelens_list_reports. It never names that sibling explicitly, so the differentiation is inferred rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: fetch the most recent report, optionally narrowed by a URL substring. There is no explicit statement of when to prefer this over sitelens_list_reports or what to do when no report has been pushed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sitelens_list_reportsA

List cached SiteLens reports as summaries only (url, analyzedAt, score, module issue counts). Newest first.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does reasonably well: it discloses the data source (cache, hence possibly stale), the reduced return shape, and the sort order. It omits what happens when the cache is empty or whether results are truncated, so it falls short of fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler, and the return shape is front-loaded in parentheses where an agent will read it first. Every clause (cached, summaries only, field list, newest first) carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-param, read-only listing tool with no output schema, the description supplies the critical missing piece: the exact fields returned and their ordering. Only the empty-result and staleness edge cases are unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies. The parenthetical field list describes the output shape, not inputs, and adds no parameter meaning because none exists.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ("List cached SiteLens reports") and constrains the payload ("summaries only") with the exact fields returned. It clearly contrasts with fetching a full report, but never names the sibling sitelens_get_latest_report, leaving that differentiation implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Cached" implies this reads existing local data rather than triggering a new analysis, which is an indirect usage signal, and "summaries only" implies there is a heavier retrieval elsewhere. However, no explicit when-to-use statement or named alternative (e.g., sitelens_get_latest_report) is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sitelens_pingA

Health check: whether the local SiteLens bridge is up, which port it uses, and how many reports are cached.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses the return contents (up/down state, port, cached report count) and implies no mutation, but says nothing about auth/prerequisites, latency, or whether the bridge can be started by this call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact sentence that front-loads 'Health check' and enumerates the three returned facts with no waste. The colon construction is slightly terse but readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-param diagnostic with no annotations and no output schema, the description supplies the key return semantics (status, port, cache count), which is the main information gap. Only prerequisite/how-to-react guidance is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so the schema is trivially complete and the description need only be consistent, which it is. No parameter-level detail is required or missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (health check) and a specific resource (the local SiteLens bridge), and by describing connectivity status it is implicitly distinguishable from the report-oriented siblings. It stops just short of explicitly contrasting itself with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The word 'health check' implies it is called before or when troubleshooting other calls, but no explicit when/when-not guidance or named alternatives are given. Usage must be inferred from the sibling tool names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv1.0.0
    • First observedsitelens_export_checklist
    • First observedsitelens_get_latest_report
    • First observedsitelens_list_reports
    • First observedsitelens_ping

TDQS

A3.8/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a distinct action: health check (ping), retrieve the newest full report, enumerate cached report summaries, and derive a checklist. The only near-overlap (get_latest_report vs list_reports) is clearly separated by 'full AnalysisReport JSON' versus 'summaries only, newest first.' An agent can select correctly from names alone.

Naming Consistency4/5

All four tools share the sitelens_ prefix and a verb_noun pattern (get_latest_report, list_reports, export_checklist), which is predictable. The lone deviation is sitelens_ping, a bare verb with no noun, but that is idiomatic for a health check.

Tool Count4/5

Four tools is on the lean side but each covers a genuinely separate need (health, fetch, enumerate, transform). Nothing appears redundant, though the surface is thin enough that a couple of convenience tools could reasonably have been added.

Completeness4/5

The domain is a read-only bridge over cached reports, and the surface covers discovery (list), retrieval (get latest, with url filtering), health, and one derived output (checklist). Minor gap: there is no way to fetch an older or specific report by id/url beyond 'latest matching,' and no cache-clearing operation.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers