跳到正文
GitHub·· 6 天前AI 评分60

Jelly 发布 Rust 编写的 Chromium 浏览器 MCP 服务器

FabioFlorey/jelly

AI 导读

Jelly 是一个用 Rust 编写的 Model Context Protocol 服务器,让经过认证的智能体检查和控制真实 Chromium 浏览器、验证页面状态并保留浏览器产物,默认通过本地 Streamable HTTP 端点 http://127.0.0.1:8787/mcp 暴露能力。

正文

Table of Contents

1. What Jelly does

Jelly is a Rust Model Context Protocol (MCP) server that lets authenticated agents inspect and control a real Chromium browser, verify page state, and retain browser artifacts.

Jelly starts or attaches to Chromium and exposes browser capabilities through a local Streamable HTTP MCP endpoint, normally http://127.0.0.1:8787/mcp. A configured HTTPS tunnel or reverse proxy can expose that endpoint to a remote client.

  • Inspect: Read page content, identify interactive elements, and discover tools through browser-schema.
  • Act: Run ordered navigation, input, and page operations through browser-call.
  • Verify: Use semantic assertions and typed failures to confirm what changed. An action's success is not proof of the intended outcome.
  • Capture: Record screenshots, downloads, browser recordings, and network evidence with metadata.
  • Recover: Execute guarded routines and request human intervention through Telegram.

2. Use cases

Put your AI to work on the real web.

From research to action, Jelly gives AI agents a real Chromium browser to navigate dynamic websites, work with interactive applications, and verify results.

Browser Automation: Let AI handle the repetitive work.

Automate tasks across websites and business applications.

  • Fill out forms and submit requests.
  • Update records and navigate dashboards.
  • Complete multi-step workflows across pages.

AI-Powered Research: Explore more than static web pages.

Research information on JavaScript-heavy websites, interactive dashboards, and dynamically loaded pages.

  • Investigate markets and competitors.
  • Compare products, features, and pricing shown on websites.
  • Explore filters and gather findings from multiple sources.

Browser Testing: Check real user journeys.

Test interactive websites using Chromium and inspect the results.

  • Walk through navigation, forms, and interactive features.
  • Check whether expected elements and page states appear.
  • Capture screenshots to investigate failures.

Data Extraction: Collect information from complex websites.

Gather information from pages that require browser interaction.

  • Read interactive tables and paginated results.
  • Apply filters and move between result pages.
  • Retrieve documents and collect data for further analysis.

Business Process Automation: Connect work across applications.

Carry out browser-based processes in tools that may not have a dedicated integration.

  • Work with CRM systems and customer portals.
  • Update entries in back-office applications.
  • Navigate reporting tools and process routine requests.

AI Agents: Give agents the ability to act, not just answer.

Connect an AI agent to Jelly through MCP to interact with websites and check the outcome.

  • Open pages, inspect content, and interact with controls.
  • Execute multi-step browser workflows and verify results.
  • Request human input when a workflow needs approval or assistance.

3. Quickstart

Jelly CLI: Run ./scripts/dev.sh in a terminal to perform a real quickstart: check prerequisites, select a browser backend, configure MCP identity and hosting, then install/start and verify Jelly after explicit confirmations. ./scripts/dev.sh demo is the only simulated walkthrough. Other CLI subcommands (setup, browser, status, start, stop, test, and so on) perform their named real operations. Noninteractive quickstart refuses to run; use explicit commands for automation.

CLI Processes Diagrams: Read the Markdown process-definition document for five Mermaid flowcharts, chapter explanations, a table of contents and navigation links. ./scripts/dev.sh --demo is a direct alias for ./scripts/dev.sh demo.

Browser connection options: Run ./scripts/dev.sh browser to select native Chromium, Docker/Podman on a dedicated subnet, or an existing remote Chromium at IP:PORT. Container profiles are isolated/shared/ephemeral; sandbox, container restrictions and CDP publication are independent user choices. Jelly reports what it observes and does not claim that a requested sandbox is active without attestation. See Browser deployment and security model. See Container Chromium quickstart. CDP uses an engine-managed private bridge network rather than published host ports.

Requirements: Linux with Rust 1.98.1, Cargo, Chromium at /usr/bin/chromium, Bash, and systemd user services. Remote access through Quick Tunnel also requires cloudflared. See complete prerequisites.

Run the interactive quickstart:

git clone https://github.com/FabioFlorey/jelly.git
cd jelly
./scripts/dev.sh

The guided flow reviews browser deployment and credentials, confirms each change, and offers to install, start, and verify the MCP service. Individual operations also remain available through ./scripts/dev.sh setup, ./scripts/dev.sh browser, and ./scripts/dev.sh status.

Choose the connection mode in the wizard. For ChatGPT, use a public HTTPS endpoint with OAuth. For local MCP clients, use the loopback HTTP endpoint and bearer-token authentication.

See Getting Started for the configuration steps for each mode. For operator-managed Chromium instances (including Docker/Podman), see Remote Chromium via CDP.

Verify the server in another terminal:

./scripts/dev.sh status
curl --fail --silent --show-error http://127.0.0.1:8787/health

Expect JSON with "status":"ok" from /health.

To try browser operations on a dedicated Jelly installation:

cargo run --quiet --bin agent-run -- open-browser https://example.com
cargo run --quiet --bin agent-run -- read-page
cargo run --quiet --bin agent-run -- snapshot-interactive

These commands use the shared browser session. Opening a URL can change the page seen by other clients; close-browser stops that shared browser. For disposable tests, use ./scripts/dev.sh test --isolated.

See the step-by-step setup guide for client credentials, browser verification, and troubleshooting.

4. Connect your agent

Jelly exposes the browser through Streamable HTTP MCP and includes a CLI for direct local use.

Connection How to use Jelly
ChatGPT Connect through a public HTTPS MCP endpoint using OAuth.
MCP clients Connect to the local Streamable HTTP endpoint with a bearer token.
Rust CLI Use agent-run and agent-discover directly from the terminal.

See the client setup guide for URLs, credentials, and connection steps.

5. MCP tools

The default small-surface API publishes three browser tools and thirteen system tools. large-surface publishes individual browser primitives instead of the three browser tools. The running server's tools/list response is authoritative.

The small-surface browser tools are browser-schema, browser-call, and browser-events.

System tools in both surfaces are open-browser, close-browser, browser-task, profile-import, screenshot, record-browser, download, downloads, verify-artifact, wait-download, inspect-network, call-routine, and hitl.

For exact parameters, side effects, and output contracts, see the MCP tool reference, MCP server guide, and the runtime's authoritative tools/list response.

Use browser-schema to discover the named semantic operations available through browser-call.

6. MCP usage example

With the server running and the local token available in the current shell, discover implemented browser capabilities without opening Chromium:

# Load environment values without evaluating the .env file as shell code.
source ./scripts/lib/config.sh
jelly_load_env

curl --fail --silent --show-error http://127.0.0.1:8787/mcp \
  -H "Authorization: Bearer $JELLY_MCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"browser-schema","arguments":{"action":"capabilities"}}}'

A successful response contains a JSON-RPC result.structuredContent envelope with ok: true, meta.tool: "browser-schema", and data.action: "capabilities". The operation count and categories depend on the current binary.

This request discovers browser capabilities before opening Chromium.

The examples page explains the next tool call and expected result.

7. Work around the click!

Looping demo of Jelly configuring a yellow Porsche 718 Spyder RS

Every move, on the record. Jelly doesn't just automate the browser. It shows its work, capturing and captioning its own actions as they happen. Watch the full recording.

8. Documentation and support

Start with the documentation index, or go directly to the guide you need:

The project website includes setup instructions, connection examples, and browser-tool documentation.

9. Project information

Jelly is under active development. For updates, see the changelog and releases.

Licensing: Free for individual, personal, non-commercial use, including private modifications. Repackaging, rebranding, white-labeling, resale, redistribution, and publishing modified versions are not permitted under the personal-use license. Business use, paid courses, monetized content, and other commercial activities require a separately signed agreement with negotiated license fees and revenue-sharing royalties. For commercial licensing, contact jelly@fabioflorey.com. See the full license.

Contributing · Issue tracker · Security policy · License

Project contact: jelly@fabioflorey.com.

来源:GitHub · github.com