tampermonkey-mcp について
tampermonkey-mcpは、Tampermonkey Editorsブラウザー拡張機能を介してユーザースクリプトを読み書きするMCPサーバーです。AIアシスタントによるスクリプト管理向けに、一覧、読み取り、更新、作成、削除のツールを提供します。
主な機能
- 01ユーザースクリプトとメタデータの一覧表示
- 02指定したスクリプトの読み取り
- 03スクリプト内容の更新
- 04ユーザースクリプトの作成と削除
- 05接続コードによるブラウザー拡張機能との接続
活用シーン
- 01インストール済みスクリプトの内容確認
- 02既存スクリプトの変更
- 03ユーザースクリプトの作成や削除
MCP 対応
MCPサーバーは、Tampermonkeyユーザースクリプトを管理するツールをAIアシスタントに提供します。接続コードを取得し、Tampermonkey Editors拡張機能に入力して接続します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
6掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
使用方法
まず、次のブラウザー拡張機能をインストールします。
- Tampermonkey
- Firefox または Chrome 用の Tampermonkey Editors
次に、tampermonkey-mcp をグローバルにインストールします。
npm install -g tampermonkey-mcp@latest
最後に、AI アシスタントが tampermonkey ツールを使用できるように設定します。
{
"mcpServers": {
"tampermonkey": {
"command": "npx",
"args": [
"-y",
"tampermonkey-mcp@latest"
]
}
}
}
アシスタントは tampermonkey_get_connection_code を呼び出し、Tampermonkey Editors 拡張機能に入力できる接続コードを返します。
Claude Code の設定例
npm install -g @anthropic-ai/claude-code
// either use your local checkout
npm run watch
claude mcp add --transport http --scope project tampermonkey http://localhost:4001/mcp
// or the npm package
npm install -g tampermonkey-mcp@latest
claude mcp add --transport stdio --scope project tampermonkey -- npx -y tampermonkey-mcp
// more browser control needed?
// Open chrome://inspect/#remote-debugging
// [x] Allow remote debugging for this browser instance
// or
chromium --user-data-dir=/tmp/chrome-devtools-mcp-test-profile --remote-debugging-port=9222
npm install -g chrome-devtools-mcp@latest
// install Tampermonkey and Tampermonkey Editors
claude mcp add --transport stdio --scope project chrome-devtools-mcp -- npx -y chrome-devtools-mcp@latest --slim --no-usage-statistics --auto-connect --browser-url http://127.0.0.1:9222
ビルド
npm install
npm run all
Tampermonkey MCP Server のアーキテクチャ
概要
このプロジェクトは、Tampermonkey Editors ブラウザー拡張機能を介して、AI アシスタントが Tampermonkey ユーザースクリプトを読み取り、変更できるようにする MCP(Model Context Protocol)サーバーを実装します。
アーキテクチャコンポーネント
┌─────────────────────────────────────────────────────────────────────────────┐
│ AI Assistant │
└─────────────────────────────────────────────────────────────────────────────┘
│
│ MCP Protocol (stdio transport)
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ tampermonkey_mcp (MCP Server) │
│ │
│ ┌───────────────────────────────────────────────────────────────────────┐ │
│ │ server.ts │ Main entry point │ │
│ │ │ - HTTP or stdio transport │ │
│ │ │ - MCP middleware │ │
│ └───────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────────────────────────────────────────────────┐ │
│ │ tampermonkey.ts │ MCP Tool Definitions │ │
│ │ │ - tampermonkey_get_connection_code │ │
│ │ │ - tampermonkey_list │ │
│ │ │ - tampermonkey_get │ │
│ │ │ - tampermonkey_patch │ │
│ └───────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────────────────────────────────────────────────┐ │
│ │ tampermonkey-ws-client.ts │ WebSocket Server │ │
│ │ │ - Connection code generation │ │
│ │ │ - Authentication handshake │ │
│ │ │ - Message relay to extension │ │
│ └───────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
│
│ WebSocket (local, port derived from code)
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ Tampermonkey Editors Extension │
│ │
│ ┌───────────────────────────────────────────────────────────────────────┐ │
│ │ Service Worker │ Receives connection code, │ │
│ │ │ establishes WebSocket connection │ │
│ └───────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ │ Chrome Extension Messaging │
│ ▼ │
│ ┌───────────────────────────────────────────────────────────────────────┐ │
│ │ Content Script │ Bridges extension ↔ Tampermonkey │ │
│ └───────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────────────────────────────────────────────────┐ │
│ │ Tampermonkey │ Userscript storage & execution │ │
│ └───────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
接続フロー
- MCP Server の起動 - ランダムに選択された利用可能なポートで WebSocket サーバーを作成します
- 接続コードの生成 - 形式:
<base32(port - 1024)><auth_token><echo_token> - ユーザーが
tampermonkey_get_connection_codeを呼び出す - 接続コードを取得します - ユーザーが Tampermonkey Editors にコードを入力する - 拡張機能がコードを解析してポートと認証情報を取得します
- 拡張機能が MCP サーバーに接続する - 認証付きの WebSocket ハンドシェイクを行います
- MCP ツールが使用可能になる - list、get、patch を呼び出せるようになります
認証プロトコル
Extension MCP Server
│ │
│───── auth (token) ──────────────────>│
│ │
│<──── auth (echo_token) ──────────────│
│ │
│───── auth (echo_token) ─────────────>│
│ │
│<──── authOK ─────────────────────────│
│ │
│<───── pings (every 15s) ─────────────│ (keep-alive)
│───── pongs ─────────────────────────>│
│ │
│<───── commands (list/get/patch) ─────│
│───── responses ─────────────────────>│
MCP ツール
tampermonkey_get_connection_code
- 目的:WebSocket 接続コードを取得して接続を初期化します。
- 必須:WebSocket サーバーを起動するため、最初に呼び出す必要があります。
- 出力:Tampermonkey Editors に入力する接続コード。
tampermonkey_list
- 目的:利用可能なすべてのユーザースクリプトを一覧表示します。
- 入力:名前のパターンによる任意のフィルター、または URL パターンの指定。
- 出力:ユーザースクリプトのメタデータ(名前、名前空間、パス、requires)の配列。
tampermonkey_get
- 目的:指定したユーザースクリプトの内容を取得します。
- 入力:
path(list から取得)、任意のifNotModifiedSinceタイムスタンプ。 - 出力:スクリプトの内容、lastModified タイムスタンプ、またはエラー。
tampermonkey_patch
- 目的:ユーザースクリプトの内容を更新します。
- 入力:
path、value(新しい内容)、楽観的ロック用の任意のlastModified。 - 出力:成功の確認、またはエラー。
tampermonkey_put
- 目的:指定した名前と名前空間で新しいユーザースクリプトを作成します。
- 入力:
value(新しいスクリプト)、任意のlastModified。 - 出力:成功の確認、作成したスクリプトのパス、またはエラー。
- 必要条件:Tampermonkey Editors 1.0.6+ および Tampermonkey 5.6+
tampermonkey_delete
- 目的:既存のユーザースクリプトを削除します。
- 入力:
path(list から取得)。 - 出力:成功の確認、またはエラー。
- 必要条件:Tampermonkey Editors 1.0.6+ および Tampermonkey 5.6+
基本的なテスト
MCP Server の機能
curl -X POST http://localhost:4001/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"clientInfo": {
"name": "curl-client",
"version": "1.0.0"
},
"capabilities": {}
}
}'
stdio のテスト
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","clientInfo":{"name":"test-client","version":"1.0.0"},"capabilities":{}}}' | npx -y tampermonkey-mcp
echo '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' | npx -y tampermonkey-mcp
echo '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"tampermonkey_list","arguments":{"pattern":""}}}' | npx -y tampermonkey-mcp
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。