Server data from the Official MCP Registry
Easily create reusable automation tools from casual browser actions using Apify Agent
Easily create reusable automation tools from casual browser actions using Apify Agent
Valid MCP server (2 strong, 2 medium validity signals). 3 known CVEs in dependencies (0 critical, 2 high severity) Package registry verified. Imported from the Official MCP Registry. Trust signals: 3 highly-trusted packages.
9 files analyzed · 4 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Set these up before or after installing:
Environment variable: YOUR_API_KEY
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-cybairfly-codify-mcp": {
"env": {
"YOUR_API_KEY": "your-your-api-key-here"
},
"args": [
"-y",
"codify-mcp"
],
"command": "npx"
}
}
}From the project's GitHub README.
MCP server for custom automation tools using Apify Agent
Part of Project Codify
Complete end-to-end browser automation pipeline running inside browser (or locally). Codify and replay browser actions as robust (deterministic) and reusable scripts. From rapid prototyping and quick automation scripts to sophisticated deployments at scale.
Login - reusable authentication sessions - reusable secure login (TBD) ❎
Agent - turn scripts into browser actions - code or text script (future) ✅
Coder - turn browser actions into scripts (TBD - currently integrated) ✅
Robot - automation engine for scalability (TBD - currently integrated) ✅
MCP - automations become reusable tools you can reuse through AI ✅
More is on the way... Give it a shot 🎬 or join the list to follow the project! 🔔
Model Context Protocol (MCP) server that lets AI assistants (e.g. Claude, Cursor, VS Code) execute browser automation tasks via Apify Agent. Tools are passed as clean JSON arguments — one per line. No manual setup or file creation.
Run directly using npx:
npx codify-mcp {{JSON_MCP_TOOL_1}} {{JSON_MCP_TOOL_2}} {{JSON_MCP_TOOL_3}}...
Or install locally:
npm install -g codify-mcp
Optional - you can also place the token inside the MCP server JSON later.
apify login
This saves your token to ~/.apify/auth.json.
Alternatively, set the environment variable:
export APIFY_TOKEN="your_token_here"
Apify Coder can turn casual browser actions into reusable AI tools. Currently, this feature is also integrated in Apify Agent
Export a tool and append the result as a JSON string to the MCP server args field or ask your AI to do it for you.
{
"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};"
}
}
npx codify-mcp '{"name":"scrape_product","description":"...","inputSchema":{...},"implementation":{...}}'
Or with multiple tools:
npx codify-mcp \
'{"name":"tool1",...}' \
'{"name":"tool2",...}' \
'{"name":"tool3",...}'
Edit your Claude Desktop config:
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"
}
}
}
}
Restart Claude. Your tools are now available to the AI assistant.
{
// 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" }
}
inputs object with user-provided parameters and page object for browser automation.cyberfly/apify-agent.Simple text input:
{
"url": {
"type": "string",
"description": "Website URL"
}
}
Optional field:
{
"timeout": {
"type": "integer",
"description": "Timeout in seconds",
"default": 30
}
}
Enum (dropdown):
{
"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":"..."}}'
cd /path/to/codify-mcp
npm link
# Now use anywhere
codify-mcp '{"name":"...","description":"...","inputSchema":{},"implementation":{"type":"apify-actor","script":"..."}}'
Token resolution order:
apify login CLI command)Ensure you're passing valid JSON strings as arguments:
# ✓ 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
Ensure authentication is set up:
# Option 1: Login via CLI
apify login
# Option 2: Set environment variable
export APIFY_TOKEN="apk_your_token_here"
apify token
Check your Playwright script syntax. The script must be valid JavaScript that:
inputs (user-provided parameters)page (Playwright page object)// ✓ Valid
await page.goto(inputs.url);
const title = await page.textContent('h1');
return { title };
// ✗ Invalid (missing await)
page.goto(inputs.url);
If you have many tools, consider splitting into multiple MCP servers:
{
"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)
Apache-2.0
Issues and PRs welcome at github.com/cybairfly/codify-mcp
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.
by Microsoft · Content & Media
Convert files (PDF, Word, Excel, images, audio) to Markdown for LLM consumption
by mcp-marketplace · Developer Tools
Scaffold, build, and publish TypeScript MCP servers to npm — conversationally
by mcp-marketplace · Finance
Free stock data and market news for any MCP-compatible AI assistant.