mcpField
O
Obscura MCP

Obscura MCP

ローカル
github.com/Metadramaブラウザ自動化224 週間前に更新

Obscura MCP について

Obscura MCPは、Obscura RustヘッドレスブラウザーをMCPクライアントに接続し、スクレイピングやブラウザー自動化を行うアーカイブ済みアダプターです。上流のObscuraはv0.1.4からネイティブMCPに対応し、このnpmパッケージは非推奨です。

主な機能

  1. 01テキスト、Markdown、HTML、リンクでページを取得
  2. 02ページ上でJavaScriptを実行
  3. 03要素のクリックとテキスト入力
  4. 04複数ステップのブラウザーセッション
  5. 05複数URLの並列スクレイピング

活用シーン

  1. 01エージェント向けのページ内容抽出
  2. 02複数ステップのログイン操作を自動化
  3. 03複数URLのページを調査
  4. 04ウェブページ一覧からデータを収集

MCP 対応

stdioまたはstreamable HTTPを通じて、Obscuraのブラウジングとスクレイピング機能をMCPツールとして公開していました。プロジェクトはアーカイブ済みで、Obscura上流はv0.1.4からネイティブMCPに対応しています。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"metadrama-obscura": {
"command": "npx",
"args": [
"-y",
"obscura-mcp"
]
}
}
}
起動コマンドnpx -y obscura-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmobscura-mcp0.1.1

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

obscura-mcp — アーカイブ済み

⚠️ アーカイブ済み。 上流では v0.1.4 以降、ネイティブの MCP(obscura mcp)が提供されています。npm パッケージは非推奨です。

npm version License: MIT

スクレイピングや AI エージェントによる自動化に使える軽量な Rust 製ヘッドレスブラウザー、Obscura の MCP サーバーアダプターです。

Obscura のネイティブ CDP 機能を、使いやすい MCP インターフェースを通じて公開します。Chrome への依存や、重量級のブラウザー自動化ツールは不要です。

インストール

npm install -g obscura-mcp

npm パッケージ自体は小さな Node.js ラッパー(約 20 KB)です。ブラウザーバイナリ(約 80 MB)は初回使用時に自動ダウンロードされるため、別途インストールする必要はありません。

バイナリは ~/.obscura/bin/ にキャッシュされ、npm をアップグレードしても保持されます。

プレリリースビルドは dev タグで公開されています。

npm install -g obscura-mcp@dev

カスタムのバイナリパスを指定するには、次のようにします。

export OBSCURA_PATH=/path/to/obscura

クイックスタート

# Install
npm install -g obscura-mcp

# Verify
obscura-mcp --version

# Start MCP server (stdio — primary transport)
obscura-mcp --transport stdio

# Or with HTTP transport
obscura-mcp --transport streamable-http

ほとんどの MCP クライアント(Claude Desktop、Cline、Continue)は stdio で接続します。カスタム統合向けに streamable-http トランスポートもサポートされています。

ツール

ブラウジング、操作、セッションの永続化、一括スクレイピングを、4 つのツールで行えます。

browse_page — 1 回の呼び出しでページを読み取る

1 回の呼び出しで、任意のページのコンテンツを取得します。出力形式と、必要に応じて JavaScript の評価を組み合わせられます。

パラメーター型デフォルト説明
urlstring—アクセスする URL
format"text" | "markdown" | "html" | "links" | "cookies" | "axtree" | "layout""text"出力形式
evalstring—評価する JavaScript 式(出力に追加されます)
cookiesarray—注入する Cookie [{name, value, domain?, path?, ...}]
user_agentstring—ブラウザーのユーザーエージェント文字列を上書きします
headersobject—追加の HTTP ヘッダー {key: value, ...}
stealthbooleantrue互換性のために受け付けます。ステルス機能は Obscura サーバーで制御されます

使用例:

browse_page(url: "https://example.com")
browse_page(url: "https://example.com", format: "markdown")
browse_page(url: "https://example.com", format: "axtree")
browse_page(url: "https://example.com", format: "layout")
browse_page(url: "https://example.com", user_agent: "TestBot/1.0")
format取得できる内容
"text"プレーンテキスト。HTML タグ、スクリプト、スタイルを除去します
"markdown"整形された Markdown。Obscura ネイティブの LP.getMarkdown CDP を使用します
"html"HTML マークアップ
"links"すべての href 値(1 行に 1 つ)
"cookies"名前、値、ドメイン、パス、有効期限を含む Cookie
"axtree"アクセシビリティツリー。すべての要素のロール、名前、値を含みます
"layout"ビューポートの指標。寸法、スクロールオフセット、デバイススケールを含みます

eval を指定すると、JavaScript の実行結果が、--- eval --- の区切りの下に出力形式の内容とともに追加されます。


browse_interact — 1 回の呼び出しでページを操作する

ページ上の要素をクリックするか、テキストを入力します(複数ステップの操作(ログイン → 待機 → 抽出)には、代わりに browse_session を使用してください)。

パラメーター型デフォルト説明
urlstring—アクセスする URL
action"click" | "type"—実行する操作
selectorstring—対象要素の CSS セレクター
textstring—入力するテキスト(action が "type" の場合は必須)
cookiesarray—注入する Cookie [{name, value, ...}]
stealthbooleantrue互換性のために受け付けます。ステルス機能は Obscura サーバーで制御されます

使用例:

browse_interact(url: "https://example.com", action: "click", selector: "a")
browse_interact(url: "https://duckduckgo.com", action: "type", selector: "input[name=q]", text: "search query")

どちらの操作も新しいページを作成し、操作を実行してからページを閉じます。ページコンテキストは保持されません。フォームに入力してから送信ボタンをクリックするなど、連続した操作には browse_session を使用してください。


browse_session — 複数ステップの永続セッション

永続的なブラウザーセッションを作成し、複数回の呼び出しにわたって操作してから閉じます。セッションは5分間操作がないと自動的に閉じます。複数のセッションを同時に実行できます。

パラメーター型必須となる条件説明
action"create" | "close" | "list" | "goto" | "wait" | "extract" | "click" | "type"すべて実行する操作
session_idstringcreate、list 以外のすべてcreate で取得したセッション ID
urlstringcreate、goto移動先の URL
selectorstringwait、click、typeCSS セレクター
expressionstringwait(セレクターがない場合)、extractJavaScript 式
textstringtype入力するテキスト
timeoutnumberwait(任意)最大待機時間(ミリ秒)。デフォルトは30000、最大は120000
user_agentstringcreate、gotoナビゲーション時に使用するユーザーエージェント文字列を上書きします
headersobjectcreate、goto追加の HTTP ヘッダー {key: value, ...}
clear_cookiesbooleancreateセッション作成時にブラウザーの Cookie をすべて削除します

セッションのライフサイクル:

action動作戻り値
create新しいブラウザータブを開きます。必要に応じて Cookie を削除します。セッション ID
closeタブとすべてのリソースを解放します。何度実行しても安全です。確認メッセージ
listすべてのアクティブなセッションとタイムスタンプを表示します。セッション一覧
goto新しい URL に移動します。ページは開いたままです。確認メッセージ
waitCSS セレクターが存在するか、JS 式が true を返すまでポーリングします。確認メッセージ
extractJavaScript を評価し、結果を返します。評価結果
clickCSS セレクターで指定した要素をクリックします。座標
type入力フィールドにテキストを入力します。確認メッセージ

ログインフローの例:

browse_session(action: "create", url: "https://example.com/login")
  → "Created session: session_1"

browse_session(action: "type", session_id: "session_1", selector: "#username", text: "user")
browse_session(action: "type", session_id: "session_1", selector: "#password", text: "pass")
browse_session(action: "click", session_id: "session_1", selector: "#login-btn")

browse_session(action: "wait", session_id: "session_1", selector: ".dashboard", timeout: 10000)
browse_session(action: "extract", session_id: "session_1", expression: "document.title")

browse_session(action: "close", session_id: "session_1")

複数記事の閲覧例:

browse_session(action: "create")
browse_session(action: "goto", session_id: "session_1", url: "https://en.wikipedia.org/wiki/JavaScript")
browse_session(action: "extract", session_id: "session_1", expression: "document.title")
browse_session(action: "goto", session_id: "session_1", url: "https://en.wikipedia.org/wiki/Python")
browse_session(action: "extract", session_id: "session_1", expression: "document.title")
browse_session(action: "close", session_id: "session_1")

browse_scrape — 並列一括スクレイピング

分離されたワーカープロセスを使用して、複数の URL を同時にスクレイピングします。各 URL には専用のヘッドレスブラウザーワーカーが割り当てられます。Obscura のネイティブな scrape コマンドを obscura-worker と組み合わせて構築されています。

パラメーター型デフォルト最大説明
urlsstring[]—1000並列スクレイピングする URL
evalstring——各ページで評価する JavaScript 式
concurrencynumber10100並列ワーカープロセス数
timeoutnumber60300ワーカーごとのタイムアウト(秒)

例:

browse_scrape(urls: ["https://news.ycombinator.com", "https://example.com"], eval: "document.title", concurrency: 25)

出力形式(JSON):

{
  "total_urls": 2,
  "concurrency": 25,
  "total_time_ms": 1250,
  "avg_time_ms": 625.0,
  "results": [
    {
      "url": "https://news.ycombinator.com",
      "title": "Hacker News",
      "eval": "Hacker News",
      "time_ms": 612,
      "worker": 0
    },
    {
      "url": "https://example.com",
      "eval": "Example Domain",
      "time_ms": 638,
      "worker": 1
    }
  ]
}

エラー(タイムアウト、ネットワーク障害など)が発生した場合、URL ごとの結果には "eval" の代わりに "error" フィールドが含まれます。

{
  "url": "https://slow-site.com",
  "error": "timeout",
  "time_ms": 60000
}

このツールは、ヘッドレス Chrome に対する Obscura の中核的な優位性である、ステルス機能を内蔵した軽量な並列スクレイピングを直接活用します。ワーカーあたり約30 MBのメモリ使用量のため、100個のワーカーを同時に実行しても、Chrome のインスタンスを1つ実行するよりメモリ使用量が少なくなります。

設定

Claude Desktop / Cline / Continue / 任意の MCP クライアント
{
  "mcpServers": {
    "obscura-mcp": {
      "command": "obscura-mcp",
      "args": ["--transport", "stdio"]
    }
  }
}
VS Code(Cline 拡張機能)
{
  "servers": {
    "obscura-mcp": {
      "command": "obscura-mcp",
      "args": ["--transport", "stdio"]
    }
  }
}

npm をグローバルにインストールすると、obscura-mcp が PATH 上で利用できるようになり、絶対パスは不要です。

環境変数
変数デフォルト説明
OBSCURA_PATH—カスタム Obscura バイナリへのパス
OBSCURA_STEALTH—ステルスモード(検出回避)を有効にします
OBSCURA_PROXY—すべてのトラフィックに使用するプロキシ URL
OBSCURA_USER_AGENT—デフォルトのユーザーエージェントを上書きします
MCP_HTTP_HOST127.0.0.1HTTP トランスポートのホスト
MCP_HTTP_PORT3000HTTP トランスポートのポート
MCP_TRANSPORTstdioトランスポートモード:stdio または streamable-http
OBSCURA_STARTUP_TIMEOUT_MS15000Obscura CDP の起動を待つ時間(ミリ秒)
OBSCURA_NAVIGATION_WAIT_MS3000ページ遷移後に待機する時間(ミリ秒)
CDP_REQUEST_TIMEOUT_MS10000CDP の応答を待つ時間(ミリ秒)

開発

TypeScript で構築し、dist/ にコンパイルして、Vitest でテストしています。

git clone https://github.com/Metadrama/obscura-mcp
cd obscura-mcp
npm install
npm run build
npm test

36 件すべての統合テストは、実際の Obscura バイナリ(初回実行時に自動ダウンロード)に対して実行されます。テストでは StdioClientTransport を使用し、すべてのツール、形式、アクションを網羅しています。

Obscura を選ぶ理由

  • Chrome 不要 — 純粋な Rust 製で、200 MB のブラウザーバンドルは不要です
  • CDP ネイティブ — Chrome DevTools Protocol を直接公開します
  • 検出回避 — スクレイピング対策サイト向けのステルス機能を内蔵しています
  • 小さなフットプリント — 約 15 MB のバイナリで、数ミリ秒で起動します

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。