codify-mcp について
codify-mcpは、再利用可能なブラウザー自動化をツールとして公開するMCPサーバーです。AIアシスタントの利用者や自動化の構築者向けで、JSON引数で定義したツールをApify Agent経由で実行します。
主な機能
- 01カスタムツールのMCP公開
- 02Playwrightブラウザースクリプトの実行
- 03Apify actorの実行
- 04JSON Schemaによる入力定義
- 05起動時に複数ツールを指定
活用シーン
- 01商品ページ情報の自動抽出
- 02ブラウザー操作のアシスタントツール化
- 03複数の自動化タスクの運用
MCP 対応
自動化の定義をMCPクライアント向けのツールとして登録します。実装にはPlaywrightスクリプトまたはApify actorを使用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Codify MCP
Apify Agentを使用したカスタム自動化ツール向けのMCP サーバー
Project Codifyの一部です
Project Codify
ブラウザー内(またはローカル)で実行される、エンドツーエンドの完全なブラウザー自動化パイプラインです。ブラウザー操作を、堅牢(決定論的)で再利用可能なスクリプトとして記録し、再生します。 迅速なプロトタイピングや手軽な自動化スクリプトから、大規模な高度なデプロイまで対応します。
-
Login - 再利用可能な認証セッション - 再利用可能な安全なログイン(TBD)❎
-
Agent - スクリプトをブラウザー操作に変換 - コードまたはテキストのスクリプト(今後対応)✅
-
Coder - ブラウザー操作をスクリプトに変換(TBD - 現在は統合済み)✅
-
Robot - 拡張性を実現する自動化エンジン(TBD - 現在は統合済み)✅
-
MCP - 自動化を、AI 経由で再利用できるツールに変換 ✅
今後も続々と追加予定です……ぜひお試しいただくか、プロジェクトの最新情報を受け取るリストにご登録ください!🔔
概要
AI アシスタント(例:Claude、Cursor、VS Code)がApify Agent経由でブラウザー自動化タスクを実行できるModel Context Protocol(MCP)サーバーです。ツールは、1行につき1つの、シンプルなJSON引数として渡されます。手動でのセットアップやファイル作成は不要です。
使用方法
npxを使って直接実行します。
npx codify-mcp {{JSON_MCP_TOOL_1}} {{JSON_MCP_TOOL_2}} {{JSON_MCP_TOOL_3}}...
またはローカルにインストールします。
npm install -g codify-mcp
クイックスタート
1. Apifyトークン
任意です。後でトークンをMCP サーバーのJSON内に設定することもできます。
apify login
この操作により、トークンが~/.apify/auth.jsonに保存されます。
または、環境変数を設定します。
export APIFY_TOKEN="your_token_here"
2. ツールを作成する
Apify Coderを使うと、手軽なブラウザー操作を再利用可能なAIツールに変換できます。 現在、この機能はApify Agentにも統合されています。
ツールをエクスポートし、結果をJSON文字列としてMCP サーバーのargsフィールドに追加するか、AIに代わりに実行するよう依頼してください。
{
"name": "scrape_product",
"description": "Scrape product info from a page",
"inputSchema": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Product page URL"
}
},
"required": ["url"]
},
"implementation": {
"type": "apify-actor",
"actorId": "cyberfly/apify-agent",
"script": "await page.goto(inputs.url); const title = await page.textContent('h1'); return {title};"
}
}
3. サーバーを実行する
npx codify-mcp '{"name":"scrape_product","description":"...","inputSchema":{...},"implementation":{...}}'
または、複数のツールを使う場合:
npx codify-mcp \
'{"name":"tool1",...}' \
'{"name":"tool2",...}' \
'{"name":"tool3",...}'
4. Claude Desktop(またはCursor/VS Code)に接続する
Claude Desktopの設定を編集します。
macOS/Linux: ~/.config/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"codify-mcp": {
"command": "npx",
"args": [
"codify-mcp",
"{\"name\":\"scrape_product\",\"description\":\"...\",\"inputSchema\":{...},\"implementation\":{...}}"
],
"env": {
"APIFY_TOKEN": "your_token_or_leave_empty_to_use_auth_file"
}
}
}
}
Claudeを再起動します。これで、AI アシスタントからツールを利用できるようになります。
ツール定義リファレンス
基本構造
{
// Required
"name": "tool_name", // alphanumeric + underscore/dash
"description": "What the tool does", // shown to AI
"inputSchema": {
"type": "object",
"properties": {
"paramName": {
"type": "string",
"description": "Parameter description"
}
},
"required": ["paramName"]
},
"implementation": {
"type": "apify-actor",
"actorId": "cyberfly/apify-agent", // actor to run
"script": "await page.goto(inputs.url); ..." // Playwright code
},
// Optional
"version": "1.0.0",
"metadata": { "custom": "fields" }
}
実装の詳細
- script:Playwrightの自動化コードです。ユーザーが指定したパラメーターを含む
inputsオブジェクトと、ブラウザー自動化用のpageオブジェクトを受け取ります。 - actorId:実行するApifyアクターです。デフォルトは
cyberfly/apify-agentです。
入力スキーマの例
シンプルなテキスト入力:
{
"url": {
"type": "string",
"description": "Website URL"
}
}
任意のフィールド:
{
"timeout": {
"type": "integer",
"description": "Timeout in seconds",
"default": 30
}
}
列挙型(ドロップダウン):
{
"format": {
"type": "string",
"enum": ["json", "csv", "markdown"],
"description": "Output format"
}
}
使用パターン
単一ツール(開発)
npx codify-mcp '{"name":"test","description":"Test tool","inputSchema":{"type":"object","properties":{}},"implementation":{"type":"apify-actor","script":"console.log('hello')"}}'
複数のツール(本番環境)
npx codify-mcp \
"$(cat tools/scraper.json)" \
"$(cat tools/logger.json)" \
"$(cat tools/analyzer.json)"
環境変数を使用する場合
APIFY_TOKEN="apk_..." npx codify-mcp '{"name":"...","description":"...","inputSchema":{},"implementation":{"type":"apify-actor","script":"..."}}'
npm linkを使用する場合(ローカルテスト)
cd /path/to/codify-mcp
npm link
# Now use anywhere
codify-mcp '{"name":"...","description":"...","inputSchema":{},"implementation":{"type":"apify-actor","script":"..."}}'
認証
トークンは次の順序で解決されます。
- APIFY_TOKEN環境変数(設定されていて、空でない場合)
- ~/.apify/auth.json(
apify loginCLIコマンドによる設定) - エラー:トークンが見つからない場合、明確なメッセージとともにツールの実行が失敗します
トラブルシューティング
「No valid tools in arguments」
有効なJSON文字列を引数として渡していることを確認してください。
# ✓ Correct
npx codify-mcp '{"name":"test","description":"Test","inputSchema":{"type":"object","properties":{}},"implementation":{"type":"apify-actor","script":"return {ok:true}"}}'
# ✗ Wrong (missing quotes around JSON)
npx codify-mcp {name:"test"...}
# ✗ Wrong (single quotes around JSON on Linux/Mac may need escaping)
npx codify-mcp '{name:"test"...}' # Use double quotes inside
「Invalid or missing Apify token」
認証が設定されていることを確認してください。
# Option 1: Login via CLI
apify login
# Option 2: Set environment variable
export APIFY_TOKEN="apk_your_token_here"
apify token
「Tool execution failed」
Playwrightスクリプトの構文を確認してください。スクリプトは次の条件を満たす有効なJavaScriptである必要があります。
inputs(ユーザーが指定したパラメーター)にアクセスできるpage(Playwrightのページオブジェクト)にアクセスできる- 値またはオブジェクトを返す
// ✓ Valid
await page.goto(inputs.url);
const title = await page.textContent('h1');
return { title };
// ✗ Invalid (missing await)
page.goto(inputs.url);
大規模なツールセット(50個以上のツール)
ツールが多数ある場合は、複数のMCP サーバーに分割することを検討してください。
{
"mcpServers": {
"apify-scraper": {
"command": "npx",
"args": ["codify-mcp", "...tool1...", "...tool2..."]
},
"apify-analyzer": {
"command": "npx",
"args": ["codify-mcp", "...tool3...", "...tool4..."]
}
}
}
開発
ローカルで実行する
npm link
codify-mcp '{"name":"test",...}'
構成
lib/
index.js # Main entry: assembleWrapperCode(), start()
mcp/
resolver.js # Module path bootstrapping
auth.js # Token resolution
actor_caller.js # Apify actor execution
server_setup.js # MCP server + tool registration
bin/
start.js # Executable entry point (bin field in package.json)
主な設計原則
- ファイル不要:ツールはすべて argv 経由で渡すため、設定ファイルや手動でのセットアップは不要です。
- base64 不使用:クリーンで読みやすいコマンドラインを実現し、難読化しません。
- 自己完結型:すべての依存関係がバンドルされているため、インストール後はオフラインでも動作します。
- ステートレス:呼び出しごとに独立しているため、水平スケーリングが容易です。
- 環境変数/CLI からトークンを取得:シームレスな認証体験を実現し、Apify エコシステムの慣習に準拠します。
ライセンス
Apache-2.0
コントリビューション
github.com/cybairfly/codify-mcp で、Issue と PR を歓迎します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。