Mime (mcp Integrated Modern Executor) について
MIMEは、MCPをネイティブにサポートするGo製のブラウザー自動化サーバーです。ウェブページの閲覧や操作を行うAIエージェント向けに、単一バイナリでブラウザー制御、ページ抽出、スクリーンショット、複数ページのクロールを提供します。
主な機能
- 01Go製ブラウザー自動化
- 02ランタイム依存のない単一バイナリ
- 03ページ遷移、クリック、入力、スクロール
- 04テキスト、HTML、メタデータ、リンクの抽出
- 05スクリーンショット、クロール、サイトマップ作成
- 06ステルスモードと操作トレース
活用シーン
- 01ページを開いて記事の見出しを抽出
- 02フォームを確認して情報を入力
- 03ページ確認用のスクリーンショットを撮影
- 04サイトをクロールしてMarkdownを保存
MCP 対応
MIMEはMCPサーバーとして動作し、ページ遷移、操作、抽出、スクリーンショット、クロール、マッピングのツールをMCPクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MIME
MIME(MCP-Integrated Modern Executor)は、ネイティブの**Model Context Protocol(MCP)**サポートを備えた、Go で構築された高性能なブラウザー自動化ツールです。
🏆 パフォーマンス
| 指標 | MIME | Puppeteer | Playwright | Puppeteer 比 | Playwright 比 |
|---|---|---|---|---|---|
| 起動 | 650 ms | 855 ms | 720 ms | 24% 高速 | 10% 高速 |
| ナビゲーション | 187 ms | 808 ms | 450 ms | 77% 高速 | 58% 高速 |
| スクリーンショット | 95 ms | 163 ms | 122 ms | 42% 高速 | 22% 高速 |
| 抽出 | 2 ms | 17 ms | 12 ms | 88% 高速 | 83% 高速 |
| 合計 | 934 ms | 1843 ms | 1304 ms | 49% 高速 | 28% 高速 |
✨ 特長
- 🚀 高性能 - Go と Rod(Chrome DevTools Protocol)で構築
- 🤖 MCP ネイティブ - Claude などの AI エージェントがブラウザーを直接操作できます
- 📦 単一バイナリ - ランタイム依存関係なし(Node/Python は不要)
- 🛡️ ステルスモード - 検出防止とフィンガープリントのマスキング機能を内蔵
- 🕵️ トレースモード - デバッグ用に、スクリーンショット付きですべての操作を記録
- ⚡ 自動待機 - インテリジェントな安定性チェック(アニメーションや有効状態を待機)
🆚 Playwright との比較
| 機能 | MIME | Playwright |
|---|---|---|
| アーキテクチャ | シングル静的バイナリ(Go) | Node.js ランタイム + NPM モジュール |
| 用途 | AI エージェントと LLM | E2E テストと QA |
| インストール | go install(設定不要) | npm install + npx playwright install |
| パフォーマンス | 高い(Go + Raw CDP) | 中程度(JS ブリッジのオーバーヘッド) |
| ステルス | ネイティブ(統合済み) | プラグインが必要(stealth-evasions) |
| セキュリティ | サンドボックス対応、file:// をブロック | デフォルトでローカルへの完全なアクセス |
| エコシステム | MCP 優先(Claude/Cursor) | 開発者優先(VS Code / CI) |
🚀 インストール
注記: これはプライベートリポジトリです。インストールするには、リポジトリへのアクセス権が必要です。
オプション 1:ソースからビルド(推奨)
git clone [email protected]:akashrtd/mime.git
cd mime
make install
オプション 2:Go でインストール
# Requires GOPRIVATE to be set for private repo access
export GOPRIVATE=github.com/akashrtd/*
go install github.com/akashrtd/mime/cmd/mime@latest
make build を使って、システム全体にインストールせずに ./bin/mime にバイナリを作成することもできます。
🤖 MCP サーバー(AI 統合)
MIME は MCP サーバーとして使用でき、AI アシスタントがブラウザーを操作できます。
Claude Desktop の設定
~/Library/Application Support/Claude/claude_desktop_config.json に追加します。
{
"mcpServers": {
"mime": {
"command": "/path/to/mime",
"args": ["serve"]
}
}
}
利用可能な MCP ツール
| ツール | 説明 |
|---|---|
navigate | URL に移動します |
click | CSS セレクターで要素をクリックします |
type | 要素にテキストを入力します |
extract | 要素からテキストを抽出します |
screenshot | スクリーンショットを撮影します(PNG/JPEG)。オプション:format、quality |
execute | ページ上で JavaScript を実行します |
html | ページの HTML コンテンツを取得します |
wait_for | 要素(テキスト/CSS)を待機します |
scroll | 要素または位置までスクロールします |
hover | 要素にカーソルを合わせます |
markdown | ページのコンテンツを Markdown として取得します |
metadata | ページのメタデータを抽出します |
links | すべてのリンクを抽出します |
get_cookies | すべての Cookie を取得します |
clear_cookies | すべての Cookie を消去します |
observe | AI エージェント向けにページを分析します |
act | 自然言語による操作を実行します |
crawl | 複数ページをクロールします |
map | サイト構造をマッピングします |
Claude 向けプロンプトの例
- "https://news.ycombinator.com に移動して、トップ記事のタイトルを抽出してください"
- "example.com にアクセスし、スクリーンショットを撮影して、表示内容を説明してください"
- "ログインボタンをクリックして、フォームにメールアドレスを入力してください"
- "ページを確認して、利用可能なフォームを教えてください"
- "https://example.com をクロールして、Markdown をファイルに保存してください"
📖 Go ライブラリの使い方
package main
import (
"context"
"fmt"
"log"
"github.com/akashrtd/mime/pkg/mime"
)
func main() {
m, err := mime.New(context.Background())
if err != nil {
log.Fatal(err)
}
defer m.Close()
m.Navigate("https://example.com")
title, _ := m.Extract("h1")
fmt.Println(title)
}
🛠️ CLI コマンド
# Start MCP server
mime serve
# Start with visible browser (debug mode)
mime serve --visible
# Start with stealth mode enabled
mime serve --stealth
# Show version
mime version
📦 TypeScript SDK
Node.js プロジェクトに TypeScript SDK をインストールします:
npm install @mime-browser/sdk
import { MIME } from "@mime-browser/sdk";
const browser = await MIME.connect();
await browser.navigate("https://example.com");
const title = await browser.extract("h1");
await browser.close();
詳しいドキュメントについては、sdk/typescript/README.md を参照してください。
📊 ベンチマーク
詳細なパフォーマンス比較については、benchmark/RESULTS.md を参照してください。
# Run benchmarks
go run benchmark/mime/benchmark.go
📂 プロジェクト構成
mime/
├── cmd/mime/ # CLI entry point
├── pkg/mime/ # Core library code
├── sdk/ # Client SDKs
├── examples/ # Usage examples
├── Makefile # Build commands
└── go.mod
🛠️ 開発
開発タスクを標準化するために Makefile を使用しています。
# Show available commands
make help
# Build binary
make build
# Run tests
make test
🗺️ ロードマップ
- コアとなるブラウザー自動化
- シンプルな Go API
- CLI ツール
- MCP サーバーの統合
- TypeScript SDK
- CI/CD と自動リリース
- セッションの永続化
- Markdown とメタデータ
- AI エージェント向けツール(Observe、Act)
- 複数ページ対応(Crawl、Map)
- 接続プーリング(ライブラリ)-
pkg/mime/pool.goに実装済み - 再試行ロジック -
pkg/mime/retry.goに実装済み - ステルスモード(検出防止)
📄 ライセンス
MIT ライセンス - LICENSE を参照してください
🙏 謝辞
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。