Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
Fetch bot-protected and JavaScript-heavy pages for AI agents, or parse them to JSON with templates.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
UNBLOCKINGAPI_KEY, UNBLOCKINGAPI_TIMEOUT_MS, Authorization「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
このアドレスはリクエストの header にキーが必要ですが、コネクタを追加するメニューでは設定できません。代わりにClaude Code、Cursor、VS Codeを使ってください。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"unblockingapi": {
"command": "npx",
"args": [
"-y",
"@unblockingapi/mcp"
],
"env": {
"UNBLOCKINGAPI_KEY": "your-value",
"UNBLOCKINGAPI_TIMEOUT_MS": "your-value"
}
}
}
}ターミナルでこれを実行します
claude mcp add --transport http unblockingapi https://mcp.unblockingapi.com/mcp --header 'Authorization: your-value'claude mcp add unblockingapi --env UNBLOCKINGAPI_KEY=your-value --env UNBLOCKINGAPI_TIMEOUT_MS=your-value -- npx -y @unblockingapi/mcp動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"unblockingapi": {
"url": "https://mcp.unblockingapi.com/mcp",
"headers": {
"Authorization": "your-value"
}
}
}
}プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"unblockingapi": {
"command": "npx",
"args": [
"-y",
"@unblockingapi/mcp"
],
"env": {
"UNBLOCKINGAPI_KEY": "your-value",
"UNBLOCKINGAPI_TIMEOUT_MS": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"unblockingapi": {
"type": "http",
"url": "https://mcp.unblockingapi.com/mcp",
"headers": {
"Authorization": "your-value"
}
}
}
}プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"unblockingapi": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@unblockingapi/mcp"
],
"env": {
"UNBLOCKINGAPI_KEY": "your-value",
"UNBLOCKINGAPI_TIMEOUT_MS": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
このアドレスはリクエストの header にキーが必要ですが、コネクタを追加するメニューでは設定できません。代わりにClaude Code、Cursor、VS Codeを使ってください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
UNBLOCKINGAPI_TIMEOUT_MS envAuthorization 秘密 HTTP headerこの設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
このサーバーのツール一覧はまだ読み取っていません。エンドポイントは順番にチェックしています。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント unblockingapi で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
まだチェックしていません。エンドポイントは順番にチェックしています
まだチェックしていません。エンドポイントは順番にチェックしています
まだチェックしていません。エンドポイントをチェックするときにツール一覧を読み取ります
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
入力が必要なもの:UNBLOCKINGAPI_KEY, Authorization
どちらでも使えます。パソコンにインストールしても、クラウド版につないでもかまいません。
GitHubリポジトリの最終更新は–、最新バージョン(0.8.2)がレジストリに届いたのは15 日前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。URLでつながるので、リモートMCPサーバーに対応したアプリ(開発者モードのChatGPTなど)でも使えます。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, FlyDocs
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Spec-driven development workflow: your agent works issues, sessions and the status lifecycle.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
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.
| 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.
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.
| 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/ / 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/ , only /unblock with template set.
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") |
You need an UnblockingAPI account — sign up at https://unblockingapi.com (500 free credits, no card). Then pick one:
npx, for those who prefer to run it themselves.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 (or X-Api-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.
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.
The same server over stdio. Needs Node.js 18+ and your key in UNBLOCKINGAPI_KEY.
# Claude Code
claude mcp add unblockingapi -e UNBLOCKINGAPI_KEY=your_api_key_here -- npx -y @unblockingapi/mcp
code --add-mcp '{"name":"unblockingapi","command":"npx","args":["-y","@unblockingapi/mcp"],"env":{"UNBLOCKINGAPI_KEY":"your_api_key_here"}}'
Claude Desktop (claude_desktop_config.json; restart after editing), Cursor (~/.cursor/mcp.json) 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."
| 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. |
Once connected, ask your agent things like:
unblock_fetch(url) — the API renders it in a browser if the site needs onefind_templates(url) → unblock_fetch(url, template: "kjellberg/google-search")find_templates(url)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
冒頭だけを表示しています。続きはリポジトリで読めます