mcpField
C
codify-mcp

codify-mcp

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

codify-mcp について

codify-mcpは、再利用可能なブラウザー自動化をツールとして公開するMCPサーバーです。AIアシスタントの利用者や自動化の構築者向けで、JSON引数で定義したツールをApify Agent経由で実行します。

主な機能

  1. 01カスタムツールのMCP公開
  2. 02Playwrightブラウザースクリプトの実行
  3. 03Apify actorの実行
  4. 04JSON Schemaによる入力定義
  5. 05起動時に複数ツールを指定

活用シーン

  1. 01商品ページ情報の自動抽出
  2. 02ブラウザー操作のアシスタントツール化
  3. 03複数の自動化タスクの運用

MCP 対応

自動化の定義をMCPクライアント向けのツールとして登録します。実装にはPlaywrightスクリプトまたはApify actorを使用できます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"cybairfly-codify": {
"command": "npx",
"args": [
"-y",
"codify-mcp"
],
"env": {
"YOUR_API_KEY": "<YOUR_API_KEY>"
}
}
}
}
起動コマンドnpx -y codify-mcp
設定が必要な環境変数
YOUR_API_KEYシークレットYour API key for the service

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

パッケージ
npmcodify-mcp1.0.0

ツール

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

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

詳細

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":"..."}}'

認証

トークンは次の順序で解決されます。

  1. APIFY_TOKEN環境変数(設定されていて、空でない場合)
  2. ~/.apify/auth.json(apify login CLIコマンドによる設定)
  3. エラー:トークンが見つからない場合、明確なメッセージとともにツールの実行が失敗します

トラブルシューティング

「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 を歓迎します。

コメント

MCP は初めてですか?

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

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