mcp server

Give your assistant the web — and a memory of what it looked like last week.

mesharc-mcp puts MeshArc inside Claude, Cursor or any MCP client as seventeen tools. Read a page, map a site, crawl a section, set up a watched project by describing it, and ask what changed — in plain English, with no code, and no credential for the assistant to hold.
16
tools, from one page to a watched site.
1
install, one line, your key.
0
credits to map, search, list or change settings.
7
real conversations below, results as they came back.
01setup

One install, one line with your key.

add the server
https://mcp.mesharc.dev/mcp

The hosted server. Paste it as a custom connector in Claude.ai, sign in to mesharc.dev and approve — nothing to install and no key to copy. Read only unless you allow changes.

what happens next
  1. 01You ask in the assistant, in your words: "crawl the docs and tell me which pages mention rate limits".
  2. 02It picks a tool from the seventeen, fills the arguments from what you said, and calls it through your key.
  3. 03MeshArc does the work on our workers: the fetch ladder, the sitemap, the change record — the same as a script or the app would get.
  4. 04It reads the answer and reasons over it: a table, a summary, a follow-up call. A long result is an index with excerpts, budgeted across the whole answer, so a chat turn stays a chat turn.
Make the key under Settings → API keys. A read key lets the assistant look;write lets it create and run projects. Scope it to the projects it should see.
02a conversation

Describe the project; the assistant configures it.

Claude Code, with mesharc-mcp — as it ran
you      Set up a project for hotspotseo.com that only scrapes the blog, weekly.

claude   › describe_project_config
         › map_site  url=https://hotspotseo.com/  search=blog
           538 URLs in the sitemap; the blog lives under /blogs/, not /blog/.
         › create_project  seed=https://hotspotseo.com/  schedule=weekly
                           config={"include_paths": ["/blogs/*"]}
         Done — "HotspotSEO blog" runs every Monday at 03:00 and reads only
         /blogs/… pages. Want a first run now?

you      Yes. And make it daily, skip the tag pages.

claude   › update_project  schedule=daily  config={"exclude_paths": ["/tag/*"]}
         › start_run  wait=true
         30 pages read, all under /blogs/. I'll tell you what changed after
         tomorrow's run — or ask me "what changed?" any time.

This is what “only the blog” needs: the assistant asked the server which settings exist (describe_project_config), looked at the site’s sitemap to find where the blog actually lives (/blogs/, not /blog/), and set include_paths to a glob. The first run read thirty blog pages and nothing else.

Every setting name is exact. A guessed one — includePaths — is refused with its name, so the assistant corrects itself instead of believing a project is configured when it is not. The full list is at configuration; the assistant reads the same list.

03the tools

Seventeen tools, in three kinds.

Read the web3

One page, many pages, a document — no project needed.

scrape_urlsper page

Up to 500 URLs into markdown in one call; PDFs, Word and spreadsheet files are read as text.

extract_urlper page

One URL with every format: markdown, text, clean HTML, head fields, structured fields, screenshot.

map_siteper sitemap file

Every URL a site declares in its sitemaps, with a search filter — how big a site is and what sections it has, without fetching a page.

Understand a site3

A whole site or one section of it, in a single question.

crawl_siteper page

Crawl a site once, to a limit and depth, with include and exclude globs; returns the pages when it finishes.

search_pagesfree

Search inside a crawl: every word, a "quoted phrase", or a CSS selector.

get_pagefree

One stored page on its own, each body up to 12,000 characters, with its versions across runs.

Watch for change11

The part no other scraping MCP does: a site kept over time, and what moved.

keep_crawl_as_projectfree

Turn a one-off crawl into a watched project with a schedule. Nothing is re-fetched.

create_projectfree

A project from a seed URL, with any settings — only a section, a schedule, a format.

describe_project_configfree

Every setting an assistant can set, what it means, and its default — so "only the blog" becomes the right key.

get_projectfree

A project with its settings, schedule and last run.

update_projectfree

Change the name, the schedule, or any settings; only the keys given change.

list_projectsfree

The workspace's projects with their last run's counts.

start_runper page

Crawl a project now; optionally wait for it.

list_pagesfree

A run's pages: url, status, depth, words, when changed.

get_changesfree

Pages added, modified and removed since the run before, with the change record.

recrawl_pagesper page

Fetch listed pages again now, as a run compared against the last full one.

get_jobfree

Follow a crawl, run or batch a long tool handed back: its status and counts, and the pages once it finishes. For a crawl, one page on its own with url=, or the next window with cursor=.

04what you can ask

Seven things people ask, with what came back.

Each of these was run through the packaged server against the site named. The results are the real ones.

“Get Linear's pricing page and list every tier and price.”

scrape_urls

1 credit, 4 seconds: 398 words of markdown with the four tiers in it — Free $0, Basic $10, Business $16 per user a month, Enterprise on request.

“How many pages does the FastAPI docs site have, and which are about security?”

map_site

151 URLs declared, 9 under /tutorial/security/, in 1.3 seconds — one credit, no page fetched.

“Set up a project for hotspotseo.com that only scrapes the blog, weekly.”

describe_project_configmap_sitecreate_project

The assistant found the blog lives under /blogs/ (538 sitemap URLs), not /blog/, created the project with include_paths ["/blogs/*"] on Mondays, and the first run read 30 blog pages and nothing else.

“Make it daily instead, and skip the tag and author pages.”

update_project

Schedule daily 03:00, exclude_paths ["/tag/*", "/author/*"]; the include stayed. A guessed key (includePaths) is refused with its name, not dropped.

“Re-check the home page and page 2 of quotes.toscrape.com now — what changed?”

recrawl_pagesget_changes

A two-page run in 5 seconds; one page changed, with the change record to read.

“Read this arXiv paper (a PDF) and summarise the method.”

scrape_urls

6,036 words of text from the PDF for 2 credits; the assistant summarised from it.

“Which of these pages mention GDPR but not cookies?”

search_pages

Content search over the stored crawl, no credits; hits with counts per page.

05what it will not do

Said plainly, so the assistant does not have to find out.

Pages behind a sign-inThe crawler reads what a visitor can see. A login wall comes back as blocked, at no cost.
Watching a page every minuteSchedules are hourly at the finest; recrawl_pages is the on-demand check.
A 5,000-page crawl inside one chat turncrawl_site waits for the crawl. Start a big site as a project with start_run and read it back with list_pages.
More than the plan allowsEvery call goes through the key: the same credits, limits and rate as a script, and the same 402 when they run out.
06questions

Questions.

What is MCP?

The Model Context Protocol: the standard way an AI assistant is given tools. MeshArc offers itself as seventeen tools, either hosted at mcp.mesharc.dev — you sign in once and approve, with nothing to install — or as a small program you run yourself that holds your own API key. You talk in plain English; the assistant picks the tool, calls it, and reasons over the answer.

What does it cost?

Nothing beyond the credits the work costs. A tool call is an ordinary authenticated request through your key — the same credits, limits and rate as a script, visible under Usage. Reading a page costs what the engine that read it costs; mapping, searching, listing and changing settings cost nothing.

Does the assistant see my API key?

No. Hosted, you approve the app and MeshArc issues it a key of its own, which you can see and revoke under Settings → API keys; the assistant never handles a credential. Run locally, the key lives in the server’s environment on your machine. Either way it gets only the scopes you allow — read, or read and write — and only the projects it should see.

Can it change my projects?

Yes, when the key has write scope: create_project, update_project and start_run act on the workspace. Every setting name is exact — a guessed one is refused with its name, never silently dropped — and describe_project_config tells the assistant what each means before it sets it.

Which assistants work?

Hosted: Claude.ai and ChatGPT connectors, Claude mobile, Claude Code, Cursor, and any client that takes a remote MCP URL — nothing to install. Locally over stdio: Claude Code, Claude Desktop, Cursor, Windsurf, Zed, Continue and any agent that runs an MCP server, with Python 3.10 or newer.

Add it to your assistant.

A free key, one install, and the next question you ask can be about a website.