봇 차단이 적용되었거나 JavaScript 실행이 필요한 웹 페이지를 가져오거나, 공개된 템플릿을 사용하여 구조화된 JSON으로 파싱합니다.
다른 이름 unblockingapi/mcp, mcp, @unblockingapi/mcp
- 스타
- 2
- Tools
- 7
- 다운로드, 30일
- —
- 최신 버전
- 0.8.4
- 마지막 커밋
- 2026년 11월 14일
- 라이선스
- MIT
UnblockingAPI MCP란?
UnblockingAPI은(는) MCP server입니다. 봇 차단이 적용되었거나 JavaScript 실행이 필요한 웹 페이지를 가져오거나, 공개된 템플릿을 사용하여 구조화된 JSON으로 파싱합니다. 7개 도구를 제공합니다. 예: unblock_fetch, find_templates, get_build_guide.
프로젝트 README에서 생성된 요약
UnblockingAPI MCP server 정보
UnblockAPI는 AI 애플리케이션이 일반적으로 봇 차단이 적용되어 있거나 JavaScript 렌더링이 필요한 웹 콘텐츠에 접근할 수 있는 방법을 제공합니다. 이 서비스는 Claude, Cursor, VS Code와 같은 클라이언트에 회전식 주거용 프록시가 지원되는 실제 브라우저 환경을 제공하는 가교 역할을 합니다. 이를 통해 개발자는 까다로운 사이트에서 깨끗한 Markdown 또는 HTML을 가져오거나, 공개된 템플릿 라이브러리를 사용하여 웹 페이지를 구조화된 JSON 데이터로 변환할 수 있습니다.
사용자는 설치가 필요 없는 호스팅 서버에 OAuth로 로그인하여 연결하거나, npx를 사용하여 로컬에서 실행할 수 있습니다. 서버에는 페이지 콘텐츠를 가져오는 unblock_fetch, URL이나 카테고리로 기존 파서를 찾는 find_templates, API 문서를 제공하는 get_build_guide와 같은 특정 도구가 포함되어 있습니다. 대상 사이트의 요구 사항에 따라 일반 HTTP와 전체 브라우저 모드 중 하나를 자동으로 선택하여 가격 모니터링이나 부동산 매물 목록과 같은 복잡한 스크래핑 작업을 처리하도록 설계되었습니다.
활용 사례
- 1검색 엔진에서 구조화된 데이터 추출AI 에이전트가 검색 엔진에 맞는 특정 템플릿을 찾아 검색 결과를 구조화된 JSON 객체로 가져올 수 있습니다.
- 2복잡한 웹사이트의 봇 차단 우회개발자가 URL을 요청하면 시스템이 사이트의 단순 요청 차단 여부를 판단하여 자동으로 실제 브라우저를 사용합니다.
- 3기존 웹 스크래퍼 탐색키워드나 카테고리로 템플릿 카탈로그를 검색하여 특정 사이트가 이미 JSON으로 파싱 가능한지 확인할 수 있습니다.
- 4페이지 내 특정 요소 스크래핑CSS selector를 제공하여 웹 페이지의 특정 부분만 가져오도록 반환 콘텐츠를 제한할 수 있습니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
UnblockingAPI MCP 설치 방법
형식 확인: 2026년 11월 10일Cursor에 추가Goose에 추가Claude Code에 UnblockingAPI MCP 설치
$ claude mcp add --env 'UNBLOCKINGAPI_KEY=<YOUR_UNBLOCKINGAPI_KEY>' mcp -- npx -y @unblockingapi/mcpCursor에 UnblockingAPI MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@unblockingapi/mcp"
],
"env": {
"UNBLOCKINGAPI_KEY": "<YOUR_UNBLOCKINGAPI_KEY>"
}
}
}
}VS Code에 UnblockingAPI MCP 설치
.vscode/mcp.json
{
"servers": {
"mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@unblockingapi/mcp"
],
"env": {
"UNBLOCKINGAPI_KEY": "<YOUR_UNBLOCKINGAPI_KEY>"
}
}
}
}VS Code CLI에 UnblockingAPI MCP 설치
$ code --add-mcp '{"name":"mcp","type":"stdio","command":"npx","args":["-y","@unblockingapi/mcp"],"env":{"UNBLOCKINGAPI_KEY":"<YOUR_UNBLOCKINGAPI_KEY>"}}'Claude Desktop에 UnblockingAPI MCP 설치
claude_desktop_config.json
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@unblockingapi/mcp"
],
"env": {
"UNBLOCKINGAPI_KEY": "<YOUR_UNBLOCKINGAPI_KEY>"
}
}
}
}Codex에 UnblockingAPI MCP 설치
$ codex mcp add mcp --env 'UNBLOCKINGAPI_KEY=<YOUR_UNBLOCKINGAPI_KEY>' -- npx -y @unblockingapi/mcpCodex config.toml에 UnblockingAPI MCP 설치
~/.codex/config.toml
[mcp_servers.mcp] command = "npx" args = ["-y", "@unblockingapi/mcp"] [mcp_servers.mcp.env] UNBLOCKINGAPI_KEY = "<YOUR_UNBLOCKINGAPI_KEY>"
Gemini CLI에 UnblockingAPI MCP 설치
$ gemini mcp add -s user -e 'UNBLOCKINGAPI_KEY=<YOUR_UNBLOCKINGAPI_KEY>' mcp npx -- -y @unblockingapi/mcpGemini settings.json에 UnblockingAPI MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@unblockingapi/mcp"
],
"env": {
"UNBLOCKINGAPI_KEY": "<YOUR_UNBLOCKINGAPI_KEY>"
}
}
}
}UnblockingAPI MCP 도구 7
README에서 감지됨unblock_fetchfind_templatesget_build_guidegoogle_searchlist_templatesidealista_propertyahrefs_website_authority
| unblock_fetch | — | |
| find_templates | — | |
| get_build_guide | — | |
| google_search | — | |
| list_templates | — | |
| idealista_property | — | |
| ahrefs_website_authority | — |
구성
UNBLOCKINGAPI_KEY필수비밀Your UnblockingAPI key from https://unblockingapi.com (500 free credits, no card).
UNBLOCKINGAPI_TIMEOUT_MSPer-request timeout in milliseconds. Default 180000.
| 이름 | 설명 | 유형 |
|---|---|---|
| UNBLOCKINGAPI_KEY | Your UnblockingAPI key from https://unblockingapi.com (500 free credits, no card). | 필수비밀 |
| UNBLOCKINGAPI_TIMEOUT_MS | Per-request timeout in milliseconds. Default 180000. |
자동 검사
2026년 11월 12일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 이는 보안 감사가 아닙니다. 코드를 직접 읽고 서버에 필요한 최소한의 권한만 부여하십시오. 검사 방식
- 소스 저장소 연결 및 접근 가능통과
- 오픈 소스 라이선스 (OSI)통과
- 최근 1년 내 커밋 또는 릴리스통과
- 패키지 이름이 인기 패키지와 유사하지 않음통과
- 원격 엔드포인트가 HTTPS 사용통과
- 파괴적인 도구에 라벨 표시됨통과
- 모델에 대한 숨겨진 지침 없음통과
- 패키지 및 해당 종속성에 중요한 보안 권고 없음통과
README
GitHub에서 보기@unblockingapi/mcp
Official Model Context Protocol server and Claude Code plugin for UnblockingAPI. Gives AI apps (Claude, Cursor, VS Code, Lovable, Replit, …) a real browser behind rotating residential proxies: fetch bot-protected and JavaScript-heavy pages, and parse any site a published template covers into structured JSON.
Hosted at https://mcp.unblockingapi.com/mcp — add it as a connector and
sign in, no install. Or run it locally with npx -y @unblockingapi/mcp.
Tools
| Tool | What it does | Cost |
|---|---|---|
unblock_fetch |
Fetch public web pages that block simple requests, and get clean Markdown or HTML back. Picks plain HTTP or a real browser per site by itself; pass template to get structured JSON instead. Optionally narrowed with a CSS select. |
1 credit per success; re-reading the same fetch is free |
find_templates |
Find a template that parses a site into JSON — by the URL you are about to fetch, by keyword, or by category — with its output shape. | free |
get_build_guide |
Guides for building apps on the REST API with plain HTTP: API reference, getting complete pages, templates, and recipes (rank tracker, listings aggregator, price monitor). | free |
Failed requests are free. The server's instructions, tool descriptions and the notes in each response steer the agent: let the API choose plain fetch or browser, check for a template before parsing a known site, scroll or wait when content is missing, and read the build guide before writing code that calls the API.
Templates
A template turns a page into named fields instead of markup. The catalogue is open-ended — search engines, marketplaces, property portals, company registries — and anyone can publish one from the editor. There is no special handling for any particular site: every template, official or community, is reached the same way.
find_templates(url: "https://www.google.com/search?q=…") → kjellberg/google-search
unblock_fetch(url: "…", template: "kjellberg/google-search") → { query, results, related_searches }
find_templates asks the API, which matches the URL against every published
template's host, path and required query parameters the same way the template
library does (* is one path segment, ** any deeper path, hosts exact unless
the pattern says *. or .*), so a match is found however large the
catalogue grows. More results than fit come back with a page to ask for next.
If a parser fails because the site changed, you get raw HTML back with
parse_error: true rather than an error.
API endpoints behind the tools
| Tool | Calls | Key |
|---|---|---|
unblock_fetch |
POST https://api.unblockingapi.com/unblock (JSON body; template selects a template) |
X-Api-Key |
find_templates |
GET https://api.unblockingapi.com/templates.json?url=…&q=…&category=…&limit=…&page=… (the public catalogue, searched server-side; answers cached for 5 minutes), plus GET https://app.unblockingapi.com/public/v1/templates/<handle>/<slug> for the output shape when three or fewer match |
none |
get_build_guide |
nothing: the guides ship in the package (guides/) |
none |
Templates are not endpoints of their own: there is no /api/google-search or
/api/<template>, only /unblock with template set.
Removed tools
Older versions, and listings copied from them, mention tools that no longer exist:
| Old tool | Removed in | Use instead |
|---|---|---|
google_search |
0.4.0 | find_templates(url: "https://www.google.com/search?q=…"), then unblock_fetch(url, template: "kjellberg/google-search") |
list_templates |
0.4.0 | find_templates (now also takes url) |
idealista_property |
0.3.0 | find_templates(url) for the Idealista page, then unblock_fetch with the template it returns |
ahrefs_website_authority |
before 0.2.0 (never on npm) | find_templates(url: "https://ahrefs.com/website-authority-checker/?input=example.com") |
Setup
You need an UnblockingAPI account — sign up at https://unblockingapi.com (500 free credits, no card). Then pick one:
- Hosted server — paste one URL into your app and sign in. Nothing to install, no key to copy. Recommended for most apps.
- Claude Code plugin — the hosted server plus a skill and a setup command, signed in with your account.
- Run it locally — the same server over stdio with
npx, for those who prefer to run it themselves.
Hosted server
https://mcp.unblockingapi.com/mcp
Streamable HTTP. Apps that support MCP sign-in (OAuth) only need the URL: they
open an UnblockingAPI page where you sign in and click Allow. The app never
sees your key, and you can disconnect it any time under Settings → Connected
apps at app.unblockingapi.com. Apps without sign-in send your key as
Authorization: Bearer <key> (or X-Api-Key: <key>).
| App | How | Guide |
|---|---|---|
| Claude.ai, Claude Desktop | Customize → Connectors → + Add → Add custom connector, paste the URL, Connect | unblockingapi.com/tools/claude |
| Cursor | One-click link, or "url" in ~/.cursor/mcp.json, then Login under Settings → MCP |
docs/cursor-setup.md · site |
| VS Code (Copilot) | code --add-mcp '{"name":"unblockingapi","type":"http","url":"https://mcp.unblockingapi.com/mcp"}', sign in on first use |
site |
| Windsurf | "serverUrl" in the MCP config (Cascade → MCPs → Open MCP config file) |
site |
| Lovable | Connectors → + → MCP server, OAuth | site |
| Replit | Integrations → MCP Servers → + Add MCP server, Test & save | site |
| Bolt | Connectors → Manage connectors → Custom MCP server, transport HTTP, MCP OAuth | site |
| Zed | "url" (+ "headers") under context_servers |
site |
| Cline | Remote Servers tab, "type": "streamableHttp" + key header |
site |
| Gemini CLI / Antigravity | gemini mcp add --transport http … / "serverUrl" + key header |
site |
| Claude API | mcp_servers entry, your key as authorization_token |
site |
| n8n | MCP Client Tool, HTTP Streamable, Bearer Auth | site |
With a key instead of signing in:
# Claude Code
claude mcp add --transport http unblockingapi https://mcp.unblockingapi.com/mcp \
--header "Authorization: Bearer your_api_key_here"
{
"mcpServers": {
"unblockingapi": {
"url": "https://mcp.unblockingapi.com/mcp",
"headers": { "Authorization": "Bearer your_api_key_here" }
}
}
}
(Some apps name the URL key serverUrl or httpUrl; VS Code uses servers
with "type": "http".) Agent frameworks: see
Vercel AI SDK and LangChain.
Claude Code plugin
The plugin connects Claude Code to the hosted server, signed in with your account, and adds a skill for the fetch and template workflow. In Claude Code:
/plugin marketplace add unblockingapi/mcp
/plugin install unblockingapi@unblockingapi-plugins
Then run /mcp, pick unblockingapi and choose Authenticate to sign in.
New to this? Run /unblockingapi:setup and Claude walks you through it, then
checks that it works. Full walkthrough: docs/claude-setup.md.
Run it locally (non-Claude MCP clients)
The same server over stdio for Cursor, VS Code, Claude Desktop's local config,
and other MCP hosts. Needs Node.js 18+ and your key in UNBLOCKINGAPI_KEY.
Claude Code should use the plugin (hosted OAuth) instead
of this env-var path.
# VS Code
code --add-mcp '{"name":"unblockingapi","command":"npx","args":["-y","@unblockingapi/mcp"],"env":{"UNBLOCKINGAPI_KEY":"your_api_key_here"}}'
Cursor (~/.cursor/mcp.json), Claude Desktop (claude_desktop_config.json;
restart after editing) and most other apps take this block:
{
"mcpServers": {
"unblockingapi": {
"command": "npx",
"args": ["-y", "@unblockingapi/mcp"],
"env": { "UNBLOCKINGAPI_KEY": "your_api_key_here" }
}
}
}
Agentic clients that edit their own config will also set it up if you ask:
"Install the @unblockingapi/mcp MCP server. My API key is sk_xxx. It runs over
stdio via npx -y @unblockingapi/mcp and needs the env var UNBLOCKINGAPI_KEY."
Environment variables (local server)
| Var | Required | Default | Purpose |
|---|---|---|---|
UNBLOCKINGAPI_KEY |
yes | — | Your API key. |
UNBLOCKINGAPI_BASE_URL |
no | https://api.unblockingapi.com |
Override the API base URL. |
UNBLOCKINGAPI_TIMEOUT_MS |
no | 180000 |
Per-request timeout. A plain fetch that falls back to a browser can take ~170 s. |
Usage
Once connected, ask your agent things like:
- "Read https://example.com/pricing and summarise the plans."
→
unblock_fetch(url)— the API renders it in a browser if the site needs one - "Get the Google results for 'wikipedia' as JSON."
→
find_templates(url)→unblock_fetch(url, template: "kjellberg/google-search") - "Is there a template for this site?" →
find_templates(url) - "What can this parse into JSON?" →
find_templates(category: "real-estate")
unblock_fetch parameters
| Param | Type | Notes |
|---|---|---|
url |
string, required | http(s) only; media/binary files are rejected. |
render |
boolean | Omit to let the API decide (plain first, browser when blocked or a JS shell; learned per site). true always renders, false never. |
location |
string | 2-letter country code for the proxy (us, gb, de, …). An unsupported one is refused with the list. |
wait_for |
string | Implies a browser. stable (default), domcontentloaded, networkidle, or a CSS selector to wait for. |
wait_state |
enum | With a selector wait_for: visible (default), nonempty, hidden, stable. |
scroll_steps |
0–10 | Implies a browser. Scroll this many times before the readiness check (lazy content). |
wait_min_ms |
0–10000 | Implies a browser. Minimum delay after navigation. |
settle_ms |
0–25000 | Implies a browser. Ceiling on the settle wait (default 5000) — capture happens as soon as the DOM is quiet for 500 ms. |
wait_rules |
array | Implies a browser. [{if: "#consent", then: "#results"}] — first visible if wins and its then replaces wait_for. |
detect_ms |
0–25000 | Implies a browser. How long to probe wait_rules (default 800). |
max_age |
0–300 | Accept a cached copy this many seconds old. Hits return in ms and carry cached: true. |
template |
string | Parse with a published template (handle/name, or handle/name@3 to pin a version) and return JSON. Forces that template's fetch settings. Find one with find_templates. |
format |
markdown | html |
How the page comes back (default markdown: a fraction of the size). Template results are always JSON. |
select |
string | CSS selector: return only the matching elements, in format. |
fresh |
boolean | Fetch again even if this exact fetch was made in the last 10 minutes. By default that copy is reused — so re-reading it with another select or format costs nothing. |
max_chars |
integer | Cap on returned body (default 120000), after format/select. Longer bodies are cut with a note. |
Responses start with a JSON metadata block (job_id, status, http_response_code,
response_time_ms, render, render_reason, readiness, template_version, location, cached, parse_error, truncated, …),
then notes on what to try next (scroll for more, a narrower select, …), then ---
and the Markdown, HTML or JSON body. API errors (bad key, out of credits,
unknown template, invalid params, concurrency limit) come back as clear tool errors.
Full API reference: https://unblockingapi.com/docs.
Development
npm install
npm run dev # tsx watch
npm run typecheck # tsc --noEmit
npm run build # compile to dist/
npm run smoke # drive the built server over stdio (add UNBLOCKINGAPI_KEY for live fetches)
npm run smoke:http # the same over HTTP against dist/http.js (or MCP_URL=https://mcp.unblockingapi.com/mcp)
npm run start:http # the hosted server on :8080 (PORT)
Repository layout: src/ (server.ts tools, index.ts stdio entry,
http.ts hosted entry, client.ts API client), Dockerfile (the hosted
image, deployed to mcp.unblockingapi.com by .github/workflows/deploy.yml), .claude-plugin/ (Claude Code
marketplace manifest), plugins/claude/ (the Claude Code plugin: hosted server,
skill, setup command), .cursor-plugin/ and plugins/cursor/ (the Cursor
plugin), docs/ (setup guides).
License
MIT
UnblockingAPI MCP 질문
UnblockingAPI MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add --env 'UNBLOCKINGAPI_KEY=<YOUR_UNBLOCKINGAPI_KEY>' mcp -- npx -y @unblockingapi/mcp를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
UnblockingAPI MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
UnblockingAPI MCP는 어떤 도구를 제공하나요?
7개 도구를 제공합니다. 예: unblock_fetch, find_templates, get_build_guide, google_search, list_templates.
웹사이트에서 구조화된 JSON을 어떻게 가져오나요?
template 파라미터와 함께 unblock_fetch 도구를 사용하면 페이지를 마크업 대신 지정된 필드 이름으로 변환할 수 있습니다.
특정 웹사이트에 맞는 템플릿은 어떻게 찾나요?
find_templates 도구를 사용하면 URL, 키워드 또는 카테고리별로 검색하여 적합한 파서를 찾을 수 있습니다.
템플릿이 사이트 파싱에 실패하면 어떻게 되나요?
사이트 구조 변경으로 인해 파서가 실패할 경우, 서버는 에러를 반환하는 대신 parse_error: true 플래그와 함께 원본 HTML을 반환합니다.
호스팅 버전을 사용하려면 별도로 설치해야 하나요?
아니요, 커넥터로 추가한 뒤 OAuth로 로그인하면 설치 없이 바로 사용할 수 있습니다.