mcpField
C
codify-mcp

codify-mcp

本地服务
github.com/cybairfly浏览器自动化039 周前更新

关于 codify-mcp

codify-mcp 是将可复用浏览器自动化作为工具提供的 MCP 服务,面向 AI 助手用户和自动化开发者。工具以 JSON 参数传入,并通过 Apify Agent 执行。

主要功能

  1. 01通过 MCP 暴露自定义工具
  2. 02运行 Playwright 浏览器脚本
  3. 03执行 Apify actor
  4. 04用 JSON Schema 定义输入
  5. 05启动时传入一个或多个工具

适用场景

  1. 01自动提取商品页面数据
  2. 02将浏览器操作复用为助手工具
  3. 03在部署中运行多个自动化任务

MCP 相关

该 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 - 可复用的身份验证会话 - 可复用的安全登录(待定)❎

  • Agent - 将脚本转化为浏览器操作 - 代码或文本脚本(未来推出)✅

  • Coder - 将浏览器操作转化为脚本(待定 - 当前已集成)✅

  • Robot - 可扩展的自动化引擎(待定 - 当前已集成)✅

  • MCP - 将自动化转化为可通过 AI 复用的工具 ✅

更多功能即将推出……来试试看🎬,或加入列表以关注项目进展!🔔

功能介绍

Model Context Protocol(MCP)服务,可让 AI 助手(例如 Claude、Cursor、VS Code)通过 Apify Agent 执行浏览器自动化任务。工具以简洁的 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 Actor。默认为 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. 错误:未找到令牌,工具执行将失败并显示明确的消息

故障排除

“参数中没有有效工具”

请确保传入了有效的 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
“Apify 令牌无效或缺失”

请确保已设置身份验证:

# Option 1: Login via CLI
apify login

# Option 2: Set environment variable
export APIFY_TOKEN="apk_your_token_here"
apify token
“工具执行失败”

请检查 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 提交问题和 PR。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。