MCP server — live on npm

Locators for your coding agent,
graded before they ship.

Your agent opens a live page and gets ranked, graded locators in the test framework your repo already uses.

Free · One npx command · Node 18+ and Google Chrome
Illustrative session · not captured output
cor_open https://example.com/login
↳ 12 controls listed
cor_inspect “Sign in” button
AgetByRole('button', { name: 'Sign in' })score 96 · runner-up: getByTestId('sign-in') 91
✓ entry ready to place in your test file
Install

Add it to your client once. Your agent runs it on demand.

Nothing is installed globally. Your agent runs the server with npx.

Claude Code
$ claude mcp add cor -- npx -y @corlabsdev/mcp

To share it with your team, put this in .mcp.json at the project root:

.mcp.json
{ "mcpServers": { "cor": { "command": "npx", "args": ["-y", "@corlabsdev/mcp"] } } }

Other clients

GitHub Copilot (VS Code) · .vscode/mcp.json
{ "servers": { "cor": { "type": "stdio", "command": "npx", "args": ["-y", "@corlabsdev/mcp"] } } }
Codex (CLI and IDE extension)
$ codex mcp add cor -- npx -y @corlabsdev/mcp
Cursor · .cursor/mcp.json, and Claude Desktop · claude_desktop_config.json
{ "mcpServers": { "cor": { "command": "npx", "args": ["-y", "@corlabsdev/mcp"] } } }

Any other MCP client: register a stdio server whose command is npx with arguments -y @corlabsdev/mcp.

Tools

Eight tools, one loop: open, inspect, place, check.

cor_open Open a page; lists its controls with refs
cor_snapshot Text, controls and entries within one region of a large page
cor_inspect Ranked, graded locators for the elements you name, as entries to place in your code
cor_click, cor_fill, cor_press Act on the page and report what changed
cor_check Fail any locator in your files that did not come from COR
cor_grade Score a locator you wrote yourself
cor_heal Propose a repair for a locator that stopped matching
cor_close Close the browser
Requirements

Node 18+ and a Chrome-family browser.

Google Chrome works. Microsoft Edge or Playwright’s Chromium also work. If no browser is found, the server says so. Install Chrome, or run npx playwright-core install chromium.

Options · append to args, or after -- in claude mcp add
--headless Run the browser without a window (default: visible)
--idle-minutes <n> Close the browser after n idle minutes
--no-records Write no entry records into your project
FAQ

Questions

Does it send data off my machine?

Yes, anonymous usage metrics, on by default in the published package. Two events: mcp_installed once per install (package version, Node version, platform), and mcp_tool_called per tool call (tool name, duration, outcome, package version). Each install has a random ID stored in ~/.cor/install-id. Page URLs, element text, locators, file paths, input values, cookies, error messages and email addresses are never sent. Turn it off with COR_TELEMETRY=off, or set COR_OFFLINE=true to stop all outbound data.

Where are the locators stored?

In your project, under .cor/records/. Placed entries are meant to be committed. Entries shown but not yet placed are git-ignored, so they never reach a commit.

Can it run without a visible browser?

Yes. Pass --headless after the package name. The default opens a visible window.

Which test frameworks does it write for?

The package is built for Playwright, Cypress, Selenium and WebdriverIO. It writes locators in the framework your repo already uses.