mcpField
F
functions

functions

github.com/browserbaseCloud & DevOps3.7k2.8k installsUpdated 8w ago
Repository

About functions

Browserbase Functions is a skill for deploying serverless browser automation with the browse CLI. It guides project initialization, local development and invocation, and publishing functions to Browserbase.

Key features

  1. 01Initialize function projects with browse
  2. 02Develop and test with a local server
  3. 03Auto-reload during development
  4. 04Publish functions to Browserbase
  5. 05Connect Playwright over CDP

Use cases

  1. 01Scaffold a browser automation function
  2. 02Test function invocations locally
  3. 03Iterate on code with automatic reloads
  4. 04Deploy browser automation to Browserbase

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/browserbase/skills --skill functions

After installing, type/functionsin Claude Code to confirm it loaded.

Bundled filesLICENSE.txtREFERENCE.md

Details

From the project README

Browserbase Functions

Deploy serverless browser automation using the official browse CLI.

Prerequisites

Get an API key from: https://browserbase.com/settings

export BROWSERBASE_API_KEY="your_api_key"

Creating a Function Project

1. Initialize
browse functions init my-function
cd my-function

This creates:

my-function/
├── package.json
├── index.ts        # Your function code
└── .env            # Add credentials here
2. Add Credentials to .env
echo "BROWSERBASE_API_KEY=$BROWSERBASE_API_KEY" >> .env
3. Install Dependencies
pnpm install

Function Structure

import { defineFn } from "@browserbasehq/sdk-functions";
import { chromium } from "playwright-core";

defineFn("my-function", async (context) => {
  const { session, params } = context;

  // Connect to browser
  const browser = await chromium.connectOverCDP(session.connectUrl);
  const page = browser.contexts()[0]!.pages()[0]!;

  // Your automation
  await page.goto(params.url || "https://example.com");
  const title = await page.title();

  // Return JSON-serializable result
  return { success: true, title };
});

Key objects:

  • context.session.connectUrl - CDP endpoint to connect Playwright
  • context.params - Input parameters from invocation

Development Workflow

1. Start Dev Server
browse functions dev index.ts

Server runs at http://127.0.0.1:14113

2. Test Locally
curl -X POST http://127.0.0.1:14113/v1/functions/my-function/invoke \
  -H "Content-Type: application/json" \
  -d '{"params": {"url": "https://news.ycombinator.com"}}'
3. Iterate

The dev server auto-reloads on file changes. Use console.log() for debugging - output appears in the terminal.

Deploying

browse functions publish index.ts

Output:

Function published successfully
Build ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Function ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Save the Function ID - you need it to invoke.

Quick Reference

CommandDescription
browse functions init <name>Create new project
browse functions dev <file>Start local dev server
browse functions publish <file>Deploy to Browserbase

For invocation examples, common patterns, and troubleshooting, see REFERENCE.md.

Comments

Markdown supported