MeshArc
웹사이트를 크롤링하고 스크래핑하여 깔끔한 마크다운으로 변환하고, 크롤링 간 변경 사항을 추적합니다.
호스팅형 MCP 서버
npx add-mcp 'https://mcp.mesharc.dev/mcp'Claude Code, Codex, Cursor 등에 설치됩니다
문서
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 15 tools. Search the web, 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.
Get a key — free Set it up Python package mesharc[mcp] · the API it speaks to
15
tools, from one page to a watched site.
1
install, one line, your key.
0
credits to list, search a project or change settings.
7
real conversations below, results as they came back.
01setup
One install, one line with your key.
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
- 01 You ask in the assistant, in your words: "crawl the docs and tell me which pages mention rate limits".
- 02 It picks a tool from the 15, fills the arguments from what you said, and calls it through your key.
- 03 MeshArc does the work on our workers: the fetch ladder, the sitemap, the change record — the same as a script or the app would get.
- 04 It 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 at what is stored;write lets it fetch (scrape, map, crawl) and 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 › get_project
› 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 (get_project with no project), 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
15 tools, in 3 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. With full=true, one URL with every format — browser steps first, 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.
search_webper results page
Search the web for pages whose URLs you do not know: ranked results from Google, or Bing when Google refuses, optionally kept to named sites, and each page as markdown in the same call when asked.
Understand a site1
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.
Watch for change11
The part no other scraping MCP does: a site kept over time, and what moved.
create_projectfree
A project from a seed URL, with any settings — only a section, a schedule, a format — or from a one-off crawl's crawl_id, with nothing re-fetched.
get_projectfree
A project with its settings, schedule and last run, and its webhook with the last deliveries and whether they arrived. With no project id: every setting an assistant can set, what it means, and its default — so "only the blog" becomes the right key.
update_projectfree
Change the name, the schedule, or any settings, the webhook among them; only the keys given change. test_webhook=true sends the webhook a test.
delete_projectfree
Delete a project and its history, once its name is repeated back. Needs an admin API key, so it works with the local server, not a connected app.
list_projectsfree
The workspace's projects with their last run's counts, and the credits the workspace has left.
start_runper page
Crawl a project now, or only the pages listed, compared against the last full run; optionally wait for it.
list_runsfree
A project's runs, newest first: which is still going, and the run id the other tools take.
list_pagesfree
A run's pages: url, status, depth, words, when changed. With q=, search them: every word, a "quoted phrase", or a CSS selector. With url=, one page on its own, each body up to 12,000 characters, with its versions across runs.
get_changesfree
Pages added, modified and removed since the run before, or since any run named with against=, with the change record.
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=.
cancel_jobfree
Stop a crawl, run or batch that is still going. Pages already read stay readable.
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.”
get_projectmap_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?”
start_runget_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?”
list_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; start_run with the pages listed 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 15 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 a site one credit per sitemap file, and a web search its results page; searching a project's pages, 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 get_project, called with no project, 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.