Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Let your AI assistant use your real, logged-in Firefox: tabs, pages, bookmarks, history.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"foxmcp": {
"command": "uvx",
"args": [
"foxmcp",
"--stdio"
]
}
}
}Run this in your terminal
claude mcp add foxmcp -- uvx foxmcp --stdioPaste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"foxmcp": {
"command": "uvx",
"args": [
"foxmcp",
"--stdio"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"foxmcp": {
"type": "stdio",
"command": "uvx",
"args": [
"foxmcp",
"--stdio"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 8, 2026
The registry name was verified with the GitHub account ThinkerYzu, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (1.7.0) reached the registry yesterday.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Python (uv) on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, Aiterm MCP
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Persistent terminals and one launcher for Claude, Codex, Grok, Cursor, and Antigravity harnesses.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
*Prepare for a FoxMCP meeting with Claude Code: organize tabs, save the project pages, and clear away distractions.*
Connect an MCP-compatible AI assistant to Firefox. Manage tabs and windows, read pages, upload local files, organize bookmarks, search history, and inspect network requests.
FoxMCP has two parts: a Firefox extension and a local Python server. Your AI client talks to the server, which sends commands to the extension.
Privacy: Connected AI clients can access your browser data and run page scripts. Use trusted clients and consider a dedicated Firefox profile. See SECURITY.md for the threat model.
Version 1.7.0 is published on PyPI and GitHub. The 1.7.0 extension update is awaiting Mozilla review; Firefox Add-ons currently serves 1.6.0. See release status.
Upgrading: Update the server and extension together, restart shared workers, and refresh your client's tool schemas. Call profiles_list and pass its integer profile_id to every browser tool, even with one profile connected. Rediscover targets after reconnection. See release notes.
Both let an AI agent use Firefox. They suit different jobs.
Use FoxMCP to work in your own browser. It is an extension in the Firefox you already run, so the agent sees your open tabs, logged-in sites, bookmarks, history, and containers. Nothing needs a restart, and several agents can share the same Firefox.
Use [firefox-devtools-mcp](https://github.com/mozilla/firefox-devtools-mcp) to test or debug a web page. It starts its own Firefox, so the browser is clean and disposable. It offers console, network, debugger, and profiler tools, and it works with Firefox for Android.
| FoxMCP | firefox-devtools-mcp | |
|---|---|---|
| Browser | The Firefox you already use | Its own instance, started for the agent |
| Logins and cookies | Yours | Only what its own profile holds |
| Several agents at once | Yes, in one Firefox | One at a time per Firefox |
| Setup | Add the extension, then uvx foxmcp --stdio | npx @mozilla/firefox-devtools-mcp |
| Best at | Tabs, windows, bookmarks, history, containers, several profiles | Console, network, debugger, profiler, Android |
firefox-devtools-mcp can also attach to a Firefox that is already running (--connect-existing), but only one started with special remote-control flags. Plain Firefox needs a restart, or a second profile, first.
Sharing Firefox between agents. Start each client with uvx foxmcp --stdio --single-instance so they share one connection. FoxMCP does not lock tabs, so give each agent its own window to keep them from stepping on each other.
Mind the access. In your real session, a connected AI client can reach whatever you can. Use a trusted client, consider a dedicated Firefox profile, and read SECURITY.md.
You need Firefox, an MCP client, and uv. Your client starts FoxMCP with uvx foxmcp --stdio; uv manages the Python environment and downloads the package automatically. FoxMCP requires Python 3.10+.
Open FoxMCP on Firefox Add-ons and click Add to Firefox.
Use matching server and extension versions. Click the FoxMCP toolbar icon to see a mismatch warning with both versions inside the popup. No automatic dialog or notification opens. The server also logs a warning. Release-version differences are advisory when protocol IDs match; incompatible protocol IDs prevent the browser connection. Mozilla review can delay the Add-ons version after a GitHub release; to try a version awaiting approval, use the temporary add-on instructions.
For Claude Code:
claude mcp add foxmcp -- uvx foxmcp --stdio
For Codex:
codex mcp add foxmcp -- uvx foxmcp --stdio
For another MCP client, add a stdio server with command uvx and arguments ["foxmcp", "--stdio"].
Open your AI client so it starts the server. Click the FoxMCP toolbar icon in Firefox and check that it shows a connected status. The extension connects on WebSocket port 8765. If the first browser call arrives before Firefox reconnects, retry it.
For multiple clients or chats, add --single-instance after --stdio to share one browser connection. See stdio setup.
The packaged command includes and enables the example scripts. An explicit FOXMCP_EXT_SCRIPTS overrides them; an empty value disables scripts. To match a particular extension release, use uvx --from foxmcp==VERSION foxmcp --stdio, replacing VERSION with that release's version.
Ask your assistant to discover profiles and choose the intended one before performing browser actions. For example:
List the connected Firefox profiles and their windows/tabs.
Use the profile named Personal for the following task. If the name is ambiguous, show me the candidates first. List all open Firefox tabs in that profile. Open https://example.org in a new tab. Get the text from the current page. Take a screenshot of the current tab.
To target a particular tab, right-click it in Firefox's tab bar and choose Tab ID = … (click to copy). Paste the copied tab_id = … into your request. Tab IDs are local to their profile. The copied tab ID does not identify its profile; give the assistant that context too. Rediscover after Firefox restarts.
| Area | Capabilities |
|---|---|
| Profiles | Discover connected Firefox profiles and address browser calls explicitly |
| Tabs and groups | List, open, close, switch, reorder, move between windows, group and ungroup; take screenshots |
| Windows | Create, close, focus, resize, position, minimize and maximize |
| Page content | Read text or HTML, execute JavaScript, run predefined scripts, load local files for uploads |
| Navigation | Go to a URL, go back or forward, reload |
| Bookmarks | List, search, create, update, move and delete bookmarks and folders |
| History | Search, list recent visits and delete entries |
| Network | Monitor requests by URL pattern; inspect headers and captured text response bodies |
Native tab groups require Firefox 139+. Local file uploads use files readable by the Python server; see loading local files. See the API reference for tool names and parameters.
The GitHub installers create a local installation directory. On Linux/macOS, you need Python 3.10+, venv, bash, curl, unzip and sha256sum. On Debian/Ubuntu, install missing prerequisites with sudo apt install python3 python3-venv curl unzip coreutils.
For the GitHub archive installation, run this in a new directory where you want FoxMCP installed:
mkdir foxmcp && cd foxmcp
curl -fSL https://github.com/ThinkerYzu/foxmcp/releases/download/v1.7.0/install-from-github.sh | bash
The installer verifies the release archive checksums, creates venv/, installs Python dependencies, and creates start-foxmcp.sh. It also installs example scripts and a CLAUDE.md template, and offers to connect Claude Code.
For unattended setup, save the installer outside the target directory and run bash /path/to/install-from-github.sh --non-interactive from an empty directory.
Windows (PowerShell 5.1 or newer):\ Download both installer scripts into a separate folder, then run the installer from an empty installation folder.\ An empty folder has no installer yet, and the installer needs install-xpi.ps1 beside it.\ Keeping both outside the target also satisfies the unattended installer's empty-folder check.
Use separate commands below: PowerShell 5.1 cannot parse &&, which was added in PowerShell 7.
New-Item -ItemType Directory foxmcp-installer
$installerBase = 'https://github.com/ThinkerYzu/foxmcp/releases/download/v1.7.0' Invoke-WebRequest -UseBasicParsing "$installerBase/install-from-github.ps1" -OutFile foxmcp-installer/install-from-github.ps1 Invoke-WebRequest -UseBasicParsing "$installerBase/install-xpi.ps1" -OutFile foxmcp-installer/install-xpi.ps1 New-Item -ItemType Directory foxmcp Set-Location foxmcp & ..\foxmcp-installer\install-from-github.ps1 -NonInteractive
Keep the two scripts together and outside the installation folder. If you already have a source checkout, run its scripts/install-from-github.ps1 by absolute path from an empty folder instead. Omit -NonInteractive to enable interactive prompts. The installer creates venv/, installs Python dependencies, creates start-foxmcp.ps1, installs example scripts, and creates a CLAUDE.md template.
Use start-foxmcp.ps1 for a manually started HTTP server. For MCP stdio, configure the client to launch the installed venv\Scripts\python.exe with server\server.py --stdio as arguments, using absolute paths. Set FOXMCP_EXT_SCRIPTS to the installed predefined-scripts directory in the client environment to enable the examples. The PowerShell helper reports the direct Python command if invoked with --stdio.
Start the installed server manually with ./start-foxmcp.sh on Linux/macOS or .\start-foxmcp.ps1 in PowerShell, then use the HTTP setup below.
Start one server and leave it running:
uvx foxmcp
With a GitHub archive installation, use its startup script instead. The default ports are 8765 for the extension's WebSocket connection and 3000 for the MCP HTTP endpoint. Check the connected status in the Firefox extension popup.
Register the HTTP endpoint with Claude Code:
claude mcp add --transport http foxmcp http://localhost:3000/mcp/
Or with Codex:
codex mcp add foxmcp --url http://localhost:3000/mcp/
For another MCP client, add an HTTP server with URL http://localhost:3000/mcp/. If the GitHub installer already connected your client, skip registration.
You also need Git, make, and zip (on Debian/Ubuntu: sudo apt install git make zip).
git clone https://github.com/ThinkerYzu/foxmcp.git
cd foxmcp make install make package
Load the built extension in Firefox, then start the server with make run-server. Continue with HTTP setup above.
Use stdio with --single-instance to start the server automatically and share it across chats. Configure each client to launch venv/bin/python server/server.py --stdio --single-instance, using absolute paths. Clients discover and share the browser connection on the extension port. They join an existing server or start a background worker automatically. Closing one chat leaves the others connected. Automatic workers stop after 60 seconds without clients; manually started servers keep running. On Windows, use venv\Scripts\python.exe.
Only the beginning is shown; read the rest in the repo