CCM
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Claude Code Marketplaces

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Skill index
  • MCP index
  • Marketplace index
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by mertbuilds.com

Independent project, not affiliated with Anthropic
onkernel avatar

Kernel Mcp Server

onkernel/kernel-mcp-server
3010 toolsHTTPregistry active
Summary

Connects Claude and other MCP clients to Kernel's cloud browser automation platform via OAuth-authenticated remote MCP. You get tools to spin up headless Chromium sessions, run Playwright code against live browsers, deploy Kernel apps, and monitor invocations. The server is fully managed at mcp.onkernel.com, so there's no local setup beyond adding the HTTP endpoint to your client config. All browser sessions run in Kernel's cloud infrastructure and can record video replays automatically. Reach for this when you need your AI assistant to drive real web automation tasks without managing browser infrastructure yourself, or when you want to prototype Playwright scripts through conversation before hardening them into production code.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
ego lite browserego lite browser
ego lite browser
Fastest browser for AI agents to run web automation tasks, always free.
Download Free life-time →
Granola, the best AI meeting recorder
Granola, the best AI meeting recorder
Notes, actions and memory. Without a meeting bot. First month 100% off.
Download for free →
CodeHealth MCP ServerCodeHealth MCP Server
CodeHealth MCP Server
Protect your code quality, stop the AI slop.
Try For Free →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Agent, connect blockchain
Agent, connect blockchain
Connect your Claude agent to live crypto prices and trading routes via 1inch
Get the MCP →
Block distraction from your iPhone for freeBlock distraction from your iPhone for free
Block distraction from your iPhone for free
Block distracting apps from your iPhone permanently without a 3rd party app. Free and open source.
Block now (100% free) →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
ego lite browserego lite browser
ego lite browser
Fastest browser for AI agents to run web automation tasks, always free.
Download Free life-time →
Granola, the best AI meeting recorder
Granola, the best AI meeting recorder
Notes, actions and memory. Without a meeting bot. First month 100% off.
Download for free →
CodeHealth MCP ServerCodeHealth MCP Server
CodeHealth MCP Server
Protect your code quality, stop the AI slop.
Try For Free →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Agent, connect blockchain
Agent, connect blockchain
Connect your Claude agent to live crypto prices and trading routes via 1inch
Get the MCP →
Block distraction from your iPhone for freeBlock distraction from your iPhone for free
Block distraction from your iPhone for free
Block distracting apps from your iPhone permanently without a 3rd party app. Free and open source.
Block now (100% free) →

Tools

Public tool metadata for what this MCP can expose to an agent.

10 tools
search_docsFast vector search through Kernel platform documentation to find relevant information, guides, tutorials, and API references. Returns ranked documentation chunks with titles, URLs, and content snippets. Use this tool when you need to understand how Kernel features work, troubl...1 params

Fast vector search through Kernel platform documentation to find relevant information, guides, tutorials, and API references. Returns ranked documentation chunks with titles, URLs, and content snippets. Use this tool when you need to understand how Kernel features work, troubl...

Parameters* required
querystring
Search query to find relevant documentation. Use natural language like "how to deploy an app" or "browser automation examples"
list_appsList all apps deployed in the Kernel platform. Use this to discover available apps, check their versions, or filter by specific criteria. Helpful for understanding what apps are available before invoking actions.2 params

List all apps deployed in the Kernel platform. Use this to discover available apps, check their versions, or filter by specific criteria. Helpful for understanding what apps are available before invoking actions.

Parameters* required
app_namestring
Filter results to show only apps with this exact name (e.g., "my-web-scraper")
versionstring
Filter results to show only apps with this exact version label (e.g., "v1.0.0", "latest")
invoke_actionExecute a specific action within a Kernel app. This is the primary way to interact with deployed apps - use this to trigger workflows, run computations, or perform operations. The action will run asynchronously and you can track its progress with the returned invocation ID.4 params

Execute a specific action within a Kernel app. This is the primary way to interact with deployed apps - use this to trigger workflows, run computations, or perform operations. The action will run asynchronously and you can track its progress with the returned invocation ID.

Parameters* required
action_namestring
Name of the specific action to invoke within the app (e.g., "scrape_website", "process_data")
app_namestring
Name of the Kernel app (e.g., "my-web-scraper", "data-processor")
payloadstring
JSON string containing parameters for the action. Format depends on the specific action being invoked.
versionstring
Specific version of the app to use
get_browserRetrieve detailed information about a specific browser session including its current status, configuration, and metadata. Use this to check if a browser is still active, get its access URLs, or understand its current state before performing operations.1 params

Retrieve detailed information about a specific browser session including its current status, configuration, and metadata. Use this to check if a browser is still active, get its access URLs, or understand its current state before performing operations.

Parameters* required
idstring
Unique identifier of the browser session to retrieve information about. You can get this from list_browsers or create_browser responses.
create_browserLaunch a new browser session in the Kernel platform. This creates a managed browser instance that can be used for web automation, testing, or interactive browsing. The browser runs in a secure sandbox environment and can be configured with various options like headless mode, s...5 params

Launch a new browser session in the Kernel platform. This creates a managed browser instance that can be used for web automation, testing, or interactive browsing. The browser runs in a secure sandbox environment and can be configured with various options like headless mode, s...

Parameters* required
headlessboolean
If true, launches the browser without GUI/VNC access (faster, less resource intensive). Use false for interactive browsing or debugging.
invocation_idstring
Link this browser session to a specific action invocation for tracking and resource management.
persistence_idstring
Unique string identifier for browser session persistence. If a browser with this ID exists, Kernel reuses it with all saved state (cookies, authentication, cache). If not found, creates a new brows...
stealthboolean
If true, configures browser to avoid detection by anti-bot systems. Recommended for web scraping and automation.
timeout_secondsnumber
The number of seconds of inactivity before the browser session is terminated. Only applicable to non-persistent browsers. Activity includes CDP connections and live view connections. Defaults to 60...
delete_browserPermanently terminate and clean up a browser session. This will stop the browser instance, free up resources, and remove any associated data. Use this when you no longer need a browser session or want to clean up after completing automation tasks.1 params

Permanently terminate and clean up a browser session. This will stop the browser instance, free up resources, and remove any associated data. Use this when you no longer need a browser session or want to clean up after completing automation tasks.

Parameters* required
persistence_idstring
Unique string identifier for browser session persistence. This is the same ID used when creating browsers to maintain state across sessions. You can find this value in the persistence.id field from...
get_deploymentRetrieve comprehensive information about a specific deployment including its current status, build logs, configuration, and health metrics. Use this to monitor deployment progress, troubleshoot deployment issues, or verify that an app was deployed successfully.1 params

Retrieve comprehensive information about a specific deployment including its current status, build logs, configuration, and health metrics. Use this to monitor deployment progress, troubleshoot deployment issues, or verify that an app was deployed successfully.

Parameters* required
idstring
Unique identifier of the deployment to retrieve information about. You can get this from list_deployments responses.
get_invocationRetrieve detailed information about a specific action invocation including its execution status, output data, error messages, and runtime metrics. Use this to check if an invoked action completed successfully, get its results, or troubleshoot failed executions.1 params

Retrieve detailed information about a specific action invocation including its execution status, output data, error messages, and runtime metrics. Use this to check if an invoked action completed successfully, get its results, or troubleshoot failed executions.

Parameters* required
idstring
Unique identifier of the action invocation to retrieve information about. You get this from invoke_action responses.
list_browsersRetrieve a list of all currently active browser sessions in the Kernel platform. This shows you which browsers are running, their session IDs, creation times, and basic configuration. Use this to discover existing browser sessions before creating new ones or to audit current b...

Retrieve a list of all currently active browser sessions in the Kernel platform. This shows you which browsers are running, their session IDs, creation times, and basic configuration. Use this to discover existing browser sessions before creating new ones or to audit current b...

No parameter schema in public metadata yet.

list_deploymentsRetrieve a comprehensive list of all deployments in the Kernel platform, with optional filtering by app name. This provides an overview of deployment history, current status, and allows you to track the deployment lifecycle of your apps. Use this to monitor deployment activity...1 params

Retrieve a comprehensive list of all deployments in the Kernel platform, with optional filtering by app name. This provides an overview of deployment history, current status, and allows you to track the deployment lifecycle of your apps. Use this to monitor deployment activity...

Parameters* required
app_namestring
Filter results to show only deployments for this specific app name (e.g., "my-web-scraper")

Kernel MCP Server

MIT License Node.js Next.js smithery badge

A Model Context Protocol (MCP) server that provides AI assistants with secure access to Kernel platform tools and browser automation capabilities.

Architecture Overview

🌐 Use instantly at https://mcp.onkernel.com/mcp — no installation required!

What is this?

The Kernel MCP Server bridges AI assistants (like Claude, Cursor, fx, or other MCP-compatible tools) with the Kernel platform, enabling them to:

  • 🚀 Deploy and manage Kernel apps in the cloud
  • 🌐 Launch and control headless Chromium sessions for web automation
  • 📊 Monitor deployments and track invocations
  • 🔍 Search Kernel documentation and inject context
  • 💻 Execute arbitrary Playwright code against live browsers
  • 🧠 Run persistent JavaScript Browser REPL cells with native helpers, Patchright, Playwright, and raw CDP
  • 🎥 Record MP4 video replays of browser automation

Open-source & fully-managed — the complete codebase is available here, and we run the production instance so you don't need to deploy anything.

The server uses OAuth 2.0 authentication via Clerk to ensure secure access to your Kernel resources. During authorization, users can grant organization-wide access or restrict the resulting access and refresh tokens to one Kernel project. Project-scoped tokens cannot switch projects; organization-wide authorization remains available for existing workflows.

For a deeper dive into why and how we built this server, see our blog post: Introducing Kernel MCP Server.

Setup Instructions

General (Transports)

  • Streamable HTTP (recommended): https://mcp.onkernel.com/mcp
  • stdio via mcp-remote (for clients without remote MCP support): npx -y mcp-remote https://mcp.onkernel.com/mcp

Use the streamable HTTP endpoint where supported for increased reliability. If your client does not support remote MCP, use mcp-remote over stdio.

Kernel's server is a centrally hosted, authenticated remote MCP using OAuth 2.1 with dynamic client registration.

Protocol compatibility

The same /mcp endpoint serves SDK v1 / 2025-era Streamable HTTP clients and protocol revision 2026-07-28 clients through the SDK v2 stateless handler. Legacy clients still initialize normally. Modern clients use per-request metadata and do not initialize or receive an MCP session ID. Both use the same tools and authentication checks; MCP Apps capabilities are read per request for modern clients.

Legacy clients should handle both JSON-RPC errors and isError tool results. Unknown tools now produce JSON-RPC error -32602; ordinary tool failures still return isError. Validation-error text and generated tool schemas can differ from SDK v1. No byte-preserving compatibility layer or Tasks extension is installed.

Run bun test 'src/app/[transport]/dual-era.test.ts' to exercise both SDK client generations over HTTP, including OAuth authorization and refresh with local upstream service fixtures. The v1 SDK is retained only as a test dependency.

Quick Setup with Kernel CLI

The fastest way to configure the MCP server is using the Kernel CLI:

# Install the CLI
brew install onkernel/tap/kernel
# or: npm install -g @onkernel/cli

# Install MCP for your tool
kernel mcp install --target <target>

Supported Targets

TargetCommand
Cursorkernel mcp install --target cursor
Claude Desktopkernel mcp install --target claude
Claude Codekernel mcp install --target claude-code
VS Codekernel mcp install --target vscode
Windsurfkernel mcp install --target windsurf
Zedkernel mcp install --target zed
Goosekernel mcp install --target goose
fxkernel mcp install --target fx

The CLI automatically locates your tool's config file and adds the Kernel MCP server configuration.

Connect in your client

Claude

Our remote MCP server is not compatible with the method Free users of Claude use to add MCP servers.

Pro, Max, Team & Enterprise (Claude.ai and Claude Desktop)
  1. Go to Settings → Connectors → Add custom connector.
  2. Enter: Integration name: Kernel, Integration URL: https://mcp.onkernel.com/mcp, then click Add.
  3. In Settings → Connectors, click Connect next to Kernel to launch OAuth and approve.
  4. In chat, click Search and tools and enable the Kernel tools if needed.

On Claude for Work (Team/Enterprise), only Primary Owners or Owners can enable custom connectors for the org. After it's configured, each user still needs to go to Settings → Connectors and click Connect to authorize it for their account.

Claude Code CLI
claude mcp add --transport http kernel https://mcp.onkernel.com/mcp
# Then in the REPL run once to authenticate:
/mcp

Cursor

Automatic setup

Install MCP Server

Manual setup
  1. Press ⌘/Ctrl Shift J.
  2. Go to MCP & Integrations → New MCP server.
  3. Add this configuration:
{
  "mcpServers": {
    "kernel": {
      "url": "https://mcp.onkernel.com/mcp"
    }
  }
}
  1. Save. The server will appear in Tools.

OpenCode

Add the following to your ~/.config/opencode/opencode.jsonc:

{
  "mcp": {
    "kernel": {
      "type": "remote",
      "url": "https://mcp.onkernel.com/mcp",
    },
  },
}

Then authenticate using the OpenCode CLI:

# Authenticate with Kernel
opencode mcp auth kernel

# If you need to re-authenticate, first logout then auth again
opencode mcp logout kernel
opencode mcp auth kernel

fx

Configure Kernel with the Kernel CLI:

kernel mcp install --target fx

Or add Kernel to the mcp map in ~/.fx/mcp.json manually:

{
  "mcp": {
    "kernel": {
      "type": "http",
      "url": "https://mcp.onkernel.com/mcp",
      "oauth": {}
    }
  }
}

Start fx, or reload the configuration in an existing session:

/mcp reload

Then authenticate with Kernel:

/mcp auth kernel --open

Authorize access in the browser window that opens. Run /mcp list to verify that Kernel is connected.

Goose

Click here to install Kernel on Goose in one click.

Goose Desktop
  1. Click Extensions in the sidebar of the Goose Desktop.
  2. Click Add custom extension.
  3. On the Add custom extension modal, enter:
    • Extension Name: Kernel
    • Type: STDIO
    • Description: Access Kernel's cloud-based browsers via MCP
    • Command: npx -y mcp-remote https://mcp.onkernel.com/mcp
    • Timeout: 300
  4. Click Save Changes button.
Goose CLI
  1. Run the following command:
    goose configure
    
  2. Select Add Extension from the menu.
  3. Choose Command-line Extension.
  4. Follow the prompts:
    • Extension name: Kernel
    • Command: npx -y mcp-remote https://mcp.onkernel.com/mcp
    • Timeout: 300
    • Description: Access Kernel's cloud-based browsers via MCP

Visual Studio Code

{
  "mcpServers": {
    "kernel": {
      "url": "https://mcp.onkernel.com/mcp",
      "type": "http"
    }
  }
}
  1. Press ⌘/Ctrl P → search MCP: Add Server.
  2. Select HTTP (HTTP or Server-Sent Events).
  3. Enter: https://mcp.onkernel.com/mcp
  4. Name the server Kernel → Enter.

Windsurf

  1. Press ⌘/Ctrl , to open settings.
  2. Navigate Cascade → MCP servers → View raw config.
  3. Paste:
{
  "mcpServers": {
    "kernel": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.onkernel.com/mcp"]
    }
  }
}
  1. On Manage MCPs, click Refresh to load Kernel MCP.

Zed

  1. Press ⌘/Ctrl , to open settings.
  2. Paste:
{
  "context_servers": {
    "kernel": {
      "source": "custom",
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.onkernel.com/mcp"]
    }
  }
}

Smithery

You can connect directly to https://mcp.onkernel.com/mcp, or use Smithery as a proxy using its provided URL.

  • Use Smithery URL in any MCP client:

    1. Open Smithery: Kernel.
    2. Copy the URL from "Get connection URL".
    3. Paste it into your MCP client's "Add server" flow.
  • Use Kernel in Smithery's Playground MCP client:

    1. Open Smithery Playground.
    2. Click "Add servers", search for "Kernel", and add it.
    3. Sign in and authorize Kernel when prompted.

Others

Many other MCP-capable tools accept:

  • Command: npx
  • Arguments: -y mcp-remote https://mcp.onkernel.com/mcp
{
  "kernel": {
    "command": "npx",
    "args": ["-y", "mcp-remote", "https://mcp.onkernel.com/mcp"]
  }
}

Configure these values wherever the tool expects MCP server settings.

Tools

Each Kernel feature has a single manage_* tool with an action parameter, keeping the tool set small and consistent. Standalone tools handle high-frequency and interactive workflows.

One additional Managed Auth helper (begin_auth_login) is marked app-only (_meta.ui.visibility: ["app"]); it refuses to execute on hosts that do not declare MCP Apps support. The App forwards the server-issued signed flow checkpoint to the shared manage_auth_connections wait action, so flow identity and terminal-state decisions stay on the server.

Self-hosted deployments can select tool families with KERNEL_MCP_ENABLED_TOOLSETS or hide them with KERNEL_MCP_DISABLED_TOOLSETS. Both accept comma- or space-separated toolset names and standalone aliases. For example, KERNEL_MCP_ENABLED_TOOLSETS="playwright repl computer" exposes browser-control tools without browser lifecycle or managed-auth tools, while KERNEL_MCP_DISABLED_TOOLSETS=api_keys only removes manage_api_keys. get_connection_context remains available in either mode.

Call get_connection_context before deciding whether to create or select a project. Its canonical connection_scope reports whether the connection is organization-wide or fixed to a project. Project-scoped tools advertise an optional project (name or ID) and a deprecated project_id: organization-wide connections may omit them to preserve organization-wide reads and API default-project behavior, while fixed-project connections may omit them or pass the matching project. Project resources use project-qualified kernel://orgs/{organizationId}/projects/{projectId}/... URIs. Authorization remains enforced by the Kernel API; selecting a project never grants access to it.

Inputs that mirror the API's nested proxy, network, browser, and proxy config objects replace older flat inputs such as proxy_id, proxy_routes, browser_region, and custom_host. The flat inputs remain as deprecated aliases, and combining one with its nested replacement is rejected. Tool-call analytics records the names, never the values, of deprecated inputs each call used in $mcp_deprecated_params; the tracked list lives in src/lib/mcp/deprecated-params.ts.

manage_* tools

  • manage_browsers - Create, update, list, get, and delete browser sessions, and read archived telemetry for active or deleted sessions. Supports headless mode, site-compatibility settings, profiles, proxies (proxy by id, name, or mode), create-only per-host proxy routes (network.proxy_routes) and private-host routing (network.private_hosts), viewports, extensions, names and tags, and SSH tunneling. The browser tools (manage_browsers, computer_action, execute_playwright_code, browser_repl, exec_command, browser_curl, manage_replays, webmcp) accept a live session's name in place of its session_id; deleted sessions, and manage_browser_pools release, take the ID only.
  • manage_profiles - Setup (with guided live browser session), search/list with pagination, get, and delete browser profiles for persisting cookies and logins.
  • manage_projects - Create, list, get, update, and delete organization projects. Inspect and update per-project resource limits.
  • manage_api_keys - Create, list, get, update, and delete org-wide or project-scoped API keys. Create returns the plaintext key once.
  • manage_browser_pools - Create, list, get, delete, and flush pools of pre-warmed browsers. Acquire and release browsers from pools.
  • manage_config_registry - Look up current browser and proxy recommendations, start and inspect analyses, request cancellation, and list project configurations or analysis history.
  • manage_proxies - Create, list, get, check, and delete proxy configurations (datacenter, ISP, residential, mobile, custom). List filters by exact name or a query substring.
  • manage_replays - Start, stop, and list MP4 video replay recordings for a browser session. Session-scoped: start once, run your automation, then stop. Requires a paid Kernel plan.
  • web_search - Search the web, retrieve retained results, and inspect provider capabilities. Tool visibility uses a per-credential, per-connection Search entitlement snapshot cached for up to 30 minutes; the Search API remains authoritative for execution access. Search creation is billable and is not automatically retried.
  • manage_extensions - List and delete uploaded browser extensions.
  • manage_apps - List/search apps, invoke actions, get/list/delete deployments, and get invocation results.
  • manage_auth_connections - Create, list, get, update, delete, login, submit, inspect timelines, and wait for managed-auth connections in every client. Supports health-check and automatic re-auth settings, managed-auth browser configuration, and canonical interaction-bound field/choice submissions. Use domain-filtered list for discovery. App-capable clients additionally receive open_auth_login; the programmatic actions remain available there too.
  • manage_credentials - Create, list, get, update, and delete stored credentials; fetch a current TOTP code for credentials with a configured totp_secret.
  • manage_credential_providers - Create, list, get, update, and delete external credential providers (e.g. 1Password); list available items and test the provider connection.
  • manage_vault_provider_configs - Create, list, get, rename, rotate secrets, and delete organization-owned Link and AgentCard configurations. Writes require organization scope.
  • manage_vaults - Create, list, get, and delete project-owned vaults; use one per end user.
  • manage_vault_wallets - Connect Kernel-managed or configured Link/AgentCard wallets, import Link grants from a trusted backend, and inspect live payment methods.
  • manage_vault_cards - Create or update card requests according to the API's lifecycle rules; does not implicitly authorize Link cards. AgentCard checkout_origin is caller-declared for eligible autopilot rule matching on non-prepared checkout authorizations; Kernel forwards it without comparing it with the browser page. Omission keeps the existing approval flow, autopilot may fall back to user approval, and prepared checkout uses preparation.merchant_origin. It does not enable autopilot or ensure payment success.
  • manage_vault_credentials - Create credentials through one of two user-chosen paths: Kernel-hosted collection (definitions for private human collection; update values or description with version and optional immutable item identity preconditions) or 1Password brokered approval (connect a 1Password account, then create a request for 1-5 logins the user approves in the 1Password app). Agents reuse an existing credential for the site first, otherwise ask the user where their login lives before creating credentials.
  • manage_vault_items - List, get, invoke advertised operations (including fill and webmcp_invoke with value-free bindings), observe events, and delete vault items. Read credential definitions, presence, version, collection links, and explicitly non-sensitive values; sensitive values remain hidden. collect reopens the full form; provider approvals remain user actions. Ready is not login or payment success.

See Vault payments for both provider flows, safety rules, and response shapes. manage_browsers accepts creation-only vaults references (max 20); existing sessions and pools cannot gain vault bindings. The six vault tools share the vaults toolset and prepare/observe credentials rather than submitting merchant payments. They are exposed only when GET /org/entitlements reports features.vaults.enabled: true for the current credential; missing or unavailable entitlements hide them. Toolset configuration cannot override this access check. Credential create → collect → readiness → fill is supported entirely through MCP tools. prepare_checkout remains API/CLI-only. The SDK dependency is pinned in bun.lock.

Standalone tools

  • get_connection_context - Inspect the authenticated principal, organization, credential scope, and effective project scope.
  • computer_action - Mouse, keyboard, clipboard, and screenshot controls for browser sessions (click, type, press_key, scroll, move, get_position, read_clipboard, write_clipboard, screenshot).
  • browser_curl - Send HTTP requests through an existing browser session's Chrome network stack.
  • execute_playwright_code - Execute isolated Playwright/TypeScript code and browser-wide WebMCP helpers against an existing browser session. Does not create or delete browsers - use manage_browsers for session lifecycle.
  • browser_repl - Execute JavaScript in a persistent Node.js runtime inside an existing browser VM. Top-level bindings survive across calls and can use native browser helpers, WebMCP, Patchright, Playwright, raw CDP, Node built-ins, files, processes, and the network. The tool description includes native-helper, raw-CDP, and Patchright/Playwright examples; call repl.help() inside a cell for the runtime method reference. This is unrestricted VM code execution, not a sandbox. See the complete Browser REPL reference.
  • webmcp - Discover native and custom tools across tabs and frames, invoke an exact opaque tool_ref, and manage custom definitions with list_custom, add_custom, and remove_custom. See WebMCP actions below.
  • exec_command - Run shell commands inside a browser VM. Returns decoded stdout/stderr.
  • search_docs - Search Kernel platform documentation and guides.
  • get_more_tools - Report a structured KERNEL capability, external-integration gap, or missing site-specific WebMCP action after checking available tools. For site actions, list webmcp tools first; use site_tool_missing with capability_area: "webmcp", an optional public registrable site_domain, and a generic action name. Site requests are routed separately as webmcp_catalog_demand; reporting does not install a tool, so continue with Playwright when possible. Existing-tool failures, transient capacity errors, and client permission restrictions are rejected from capability-demand analytics. Accepted requests emit mcp_capability_requested; clients using the previous context-only schema receive a non-recording refresh response instead of a tool error.
  • submit_feedback - Send product, site-compatibility, config-registry, MCP, or documentation feedback directly to the KERNEL team without interrupting the current task. Reports include a normalized task outcome; MCP reports identify one KERNEL-owned tool. Config-registry reports connect exactly one observed outcome to the browser session, recommendation metadata and evidence, and unchanged browser and proxy settings.
  • open_auth_login - Open a secure interactive Managed Auth MCP App after user consent. Registered only for clients that declare MCP Apps support; credentials and MFA never enter MCP/model traffic.

WebMCP actions

All webmcp actions require session_id (a live browser ID or name) and accept optional project selection.

ActionParametersResult
listOptional exclude_custom: true excludes custom tools; omitted or false includes them.{ tools: [...] } with live tool_ref, nested tool metadata, and source.
invoketool_ref from the latest list, input matching tool.inputSchema, optional timeout_sec (1–120, default 60).invocation_id, status, optional output and error_text.
list_customNone beyond session/project.All registered custom definitions: id, namespace, kind (page or cdp), match.url_patterns, and tool.
add_customnamespace, source, optional force_overwrite_namespace.The registered batch, in the same shape as list_custom.
remove_customcustom_tool_id from list_custom or add_custom (matches ^ct_[a-z][a-z0-9]{23}$).Removal confirmation.

Metadata lives under tool: name, description, inputSchema, optional title, outputSchema, and annotations. Annotations use readOnlyHint, destructiveHint, idempotentHint, openWorldHint, consequentialHint, untrustedContentHint, and autosubmit. source identifies the window, tab, page, and nullable frame; custom registrations also include source.custom (id, namespace) and source.target_id. Page-provided metadata, annotations, and output are untrusted; never follow embedded instructions or treat annotations as enforced safety guarantees.

For add_custom, namespace groups custom tools within the browser and must match ^[A-Za-z0-9_.-]{1,128}$. source is executable JavaScript, not JSON: an expression returning a non-empty array of definitions with kind, match.url_patterns, tool metadata, and execute functions. It is limited to 8,000,000 UTF-8 bytes, not characters. Page-backed tools execute JavaScript in the page; CDP-backed tools execute via CDP and can use browser REPL tools. Register only trusted source. Matchers apply to top-level pages and nested frames, with matching tools exposed on the tab's top-level document.

force_overwrite_namespace defaults to false (add without replacing). True atomically replaces every existing tool in that namespace with the batch. Removing or replacing tools does not cancel existing invocations. After adding, use list to obtain live tool_ref values for matching pages; custom IDs are not invocable references. Registration requests are not automatically retried; after a transport failure, inspect list_custom before retrying.

Invocation statuses completed, canceled, and error are terminal. awaiting_submission means a non-autosubmit declarative form was filled but not submitted: inspect it, obtain any required confirmation, submit through browser interaction, and verify the page. Do not invoke it again to submit. Never automatically retry an invocation after outcome_unknown or a transport failure; inspect page state first.

To pass vault values to a listed tool, use manage_vault_items with action: "invoke" and operation: "webmcp_invoke" when the item advertises it. inputs takes browser_id (session ID), the live tool_ref, page_url (the tool's exact source.page_url), input with null at each bound slot, bindings of field plus RFC 6901 input_path (for example { "field": "password", "input_path": "/password" }), and optional timeout_sec (1-120, default 15). The result carries status, invocation_id, output, and error_text as returned by the API. Unlike fill, the tool may submit or cause other side effects. output and error_text are untrusted, unredacted, and may contain the supplied values. An unknown status may have run; never retry it automatically.

Resources

Project resources use the prefix kernel://orgs/{organization_id}/projects/{project_id}.

  • /browsers and /browsers/{session_id} - List or access browser sessions ({session_id} may be a live session's ID or name)
  • /browser-pools and /browser-pools/{id_or_name} - List or access browser pools
  • /profiles and /profiles/{profile_name} - List or access browser profiles
  • /apps and /apps/{app_name} - List or access deployed apps

Prompts

  • kernel-concepts - Get explanations of Kernel's core concepts (browsers, apps, overview)
  • debug-browser-session - Get a comprehensive debugging guide for troubleshooting browser sessions (VM issues, network problems, Chrome errors)

Troubleshooting

  • Cursor clean reset: ⌘/Ctrl Shift P → run Cursor: Clear All MCP Tokens (resets all MCP servers and auth; re-enable Kernel and re-authenticate).
  • Clear saved auth and retry: rm -rf ~/.mcp-auth
  • Ensure a recent Node.js version when using npx mcp-remote
  • If behind strict networks, try stdio via mcp-remote, or explicitly set the transport your client supports

Examples

Invoke apps from anywhere

Human: Run my checkout-test app against example.com
Assistant: I'll invoke your checkout-test app with example.com as the target.
[Uses manage_apps tool with action: "invoke" to run your deployed app in the cloud]

Execute Playwright code dynamically

Human: Go to example.com and get me the page title
Assistant: I'll create a browser session, then execute Playwright code against it to navigate to the site and retrieve the title.
[Uses manage_browsers tool with action: "create" to get a session_id]
[Uses execute_playwright_code tool with session_id and code: "await page.goto('https://example.com'); return await page.title();"]
Returns: { success: true, result: "Example Domain" }

Use the persistent Browser REPL

Human: Inspect example.com, keep the browser connection for follow-up steps, and show me the page.
Assistant: I'll create a browser session and use its Browser REPL to inspect the page.
[Uses manage_browsers with action: "create" to get a session_id]
[Uses browser_repl with native helpers to navigate, wait for a heading, write a compact JSON observation, and emit a screenshot]
Returns: the REPL ID, ordered text output, and screenshot. Later browser_repl calls reuse the same top-level bindings while the repl_id remains unchanged.

Use managed authentication for a protected site

  1. Call manage_auth_connections with action: "list" and the exact domain_filter.
  2. Fetch all pages. Reuse an authenticated connection; ask only when multiple relevant accounts match.
  3. A direct request to log in is consent. If authentication is discovered incidentally, ask before opening the App.
  4. For a new connection, choose a concise service-derived profile name unless the user supplied one; do not ask solely for a profile name.
  5. Call open_auth_login, then immediately follow its next_action and repeat the read-only wait while it reports pending.
  6. The user enters credentials/MFA only in the secure App. Once the wait reports authenticated, resume the original task with the verified profile_name.

Example: “Log me into my Hacker News account and update my profile to add a random emoji at the bottom.” The agent should discover news.ycombinator.com, open the App when needed, wait for authentication, then continue the profile edit without asking for credentials or a profile name in chat.

The secure App defaults record_session and browser.telemetry.enabled to true, recording replay video plus the operational telemetry categories (control, connection, system, and captcha) for managed-auth browser sessions. Callers can explicitly disable either setting. Set browser.region in open_auth_login or manage_auth_connections to choose where a managed-auth browser runs, and browser.proxy to choose its proxy by id, name, or mode. Create and update set the connection default; login and reauth overrides apply only to that flow. Omit the field on create to use us-east, or omit it on update and login to preserve or inherit the connection default. The programmatic manage_auth_connections create, update, and login actions pass the browser object through to the API unchanged, preserving defaults and inheritance when it is omitted.

Set up browser profiles for authentication

Human: Set up a profile for my work accounts
Assistant: I'll create a profile and guide you through the setup process.
[Uses manage_profiles tool with action: "setup"]

Human: I'm done setting up my accounts
Assistant: Perfect! I'll close the browser session and save your profile.
[Uses manage_browsers tool with action: "delete" to save profile]

Debug a browser session

Note: Attach the debug-browser-session prompt to your conversation first, then ask for help debugging.

Human: [Attaches debug-browser-session prompt with session_id and issue_description]
       Help me debug this browser session.
Assistant: [Follows the debugging guide from the prompt: uses Kernel CLI to check session status,
            read VM logs, test network connectivity, and diagnose issues]

Connect local dev server to cloud browser

Use a cloud browser to preview changes running on your local development server:

Human: I'm working on a React app running on localhost:3000. I want to test it in a cloud browser.
Assistant: I'll create a browser session with SSH port forwarding for you.
[Uses manage_browsers tool with action: "create" and remote_forward: "3000:localhost:3000"]
Returns: Session ID, live view URL, and SSH tunnel command.

🤝 Contributing

We welcome contributions! Please see our contributing guidelines:

  1. Fork the repository and create your feature branch
  2. Make your changes and add tests if applicable
  3. Run the linter and formatter:
    bun run lint
    bun run format
    
  4. Test your changes thoroughly
  5. Submit a pull request with a clear description

Development Guidelines

  • Follow the existing code style and formatting
  • Add TypeScript types for new functions and components
  • Update documentation for any API changes
  • Ensure all tests pass before submitting
  • Run the required OAuth conformance suite when changing discovery, registration, authorization, token exchange, refresh, or scope enforcement

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🔗 Related Projects

  • Model Context Protocol - The protocol specification
  • Kernel Platform - The platform this server integrates with
  • Clerk - Authentication provider
  • @onkernel/sdk - Kernel JavaScript SDK

💬 Support

  • Issues & Bugs: GitHub Issues
  • MCP Feedback: github.com/kernelxyz/mcp-feedback
  • Documentation: Kernel Docs • MCP Setup Guide
  • Community: Kernel Discord

Built with ❤️ by the Kernel Team

Running this server locally

cp .env .env.local # Values for the .env.local file are in 1Password > DevEnvVars > MCP section
bun install
bun run dev

This will start the server on port 3002.

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
ego lite browserego lite browser
ego lite browser
Fastest browser for AI agents to run web automation tasks, always free.
Download Free life-time →
Granola, the best AI meeting recorder
Granola, the best AI meeting recorder
Notes, actions and memory. Without a meeting bot. First month 100% off.
Download for free →
CodeHealth MCP ServerCodeHealth MCP Server
CodeHealth MCP Server
Protect your code quality, stop the AI slop.
Try For Free →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Agent, connect blockchain
Agent, connect blockchain
Connect your Claude agent to live crypto prices and trading routes via 1inch
Get the MCP →
Block distraction from your iPhone for freeBlock distraction from your iPhone for free
Block distraction from your iPhone for free
Block distracting apps from your iPhone permanently without a 3rd party app. Free and open source.
Block now (100% free) →
Registryactive
TransportHTTP
UpdatedSep 9, 2025
View on GitHub