mmjb-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MMJB_POLICY | No | Custom safety policy as 'package.module:function'. | |
| MMJB_DECIDER | No | Decision model to use. Options: 'jev', 'clef', 'llm', or a custom class as 'package.module:Class'. | |
| MMJB_FALLBACK | No | Custom fallback class as 'package.module:Class'. | |
| MMJB_JEV_MODEL | No | Jev model to use. Default is 'typesafe/jev-1.13'. | |
| MMJB_CLEF_MODEL | No | Clef model to use. Default is 'clef' (27B). 'clef-flash' is 9B and not recommended. | |
| MMJB_DECIDER_MODEL | No | LiteLLM vision model to use when MMJB_DECIDER=llm. | |
| OPENROUTER_API_KEY | No | OpenRouter API key for Jev. | |
| MMJB_FALLBACK_MODEL | No | Fallback vision LLM model. Default is 'openrouter/deepseek/deepseek-v4.1-flash'. | |
| CLOUDFLARE_API_TOKEN | No | Cloudflare API token for Clef via Cloudflare Workers AI. | |
| CLOUDFLARE_ACCOUNT_ID | No | Cloudflare account ID for Clef via Cloudflare Workers AI. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| browseC | Run the whole loop until the goal is met or a limit is reached, and return the result with the last numbered screenshot. |
| lookB | Show the current page as a numbered screenshot and a list of the numbered elements on it. |
| clickC | Click the element with this index, using the numbers from the last look(). |
| typeC | Type text into the element with this index, using the numbers from the last look(). |
| selectC | Choose an option in the dropdown with this index, using the numbers from the last look(). |
| scrollB | Scroll the page; direction is down, up, top or bottom. |
| gotoC | Open a URL in the browser tab the agent is using. |
| backA | Go back to the previous page in the current tab. |
| click_atA | Click a point of the viewport, in the pixels of the screenshot from look(). For canvases, challenge widgets and anything with no numbered element. |
| dragB | Press at one point of the viewport, move to another and release: sliders, sortable lists, drag and drop. |
| pressC | Press a key such as Enter, ArrowDown, Tab or Escape on the current page, for menus and dropdowns that open from the keyboard. |
| statusB | Report the current URL, the configured decision and fallback models, and how much work has been done. |
| doctorA | Check Python, the browser, the decision models and the fallback, and say what to fix. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 13 tools
Most tools have clearly distinct purposes: look observes, browse runs an autonomous loop, click/type/select target numbered elements, and click_at/drag/press handle special input. The only mild overlap is between browse and look, plus click vs click_at, but descriptions resolve these boundaries.
Names are mostly consistent lowercase single-word actions (click, type, select, scroll, goto, back), with minor deviations like click_at and the noun-like status/doctor. No camelCase/snake_case chaos, but not a strict verb_noun pattern.
13 tools is well-scoped for a browser automation server. Each tool covers a distinct capability needed for navigation, observation, interaction, or diagnostics.
The set covers the core browser agent lifecycle: navigation, observation, clicking, typing, selecting, scrolling, dragging, key presses, diagnostics, and a high-level browse loop. Minor gaps like hover, refresh, tab management, or waiting are missing but agents can often work around them.