MCP Server vs. Browser Extension: Why open-context Chose MCP
A browser extension gets standing access to every page you load the moment you install it. An MCP server only runs when a host application you explicitly configure — Claude Code, Claude Desktop — starts it, and it exposes a fixed, typed set of tools instead of reading your screen. That difference in access model, not developer convenience, is why open-context ships as an MCP server rather than a browser extension.
Key takeaways
- Browser extensions request broad, standing permissions at install time and can read or modify any page that matches their manifest — even ones unrelated to their stated purpose.
- An MCP server only runs when a host you configure launches it, and it can only do what the tools it defines allow — nothing more.
- open-context's MCP server (
src/mcp/) connects to Claude Code and Claude Desktop over stdio and exposes six tools:save_context,recall_context,list_contexts,search_contexts,update_context, anddelete_context. - MCP is an open standard, not a Claude-only feature — ChatGPT, Google DeepMind's tooling, and Microsoft Copilot have all added MCP client support.
- The web UI still exists for people who prefer a browser — but it's a self-hosted dashboard talking to open-context's own API, not an extension living inside someone else's browser session.
What "give an AI persistent memory" actually requires
For Claude to save and recall context across conversations, something has to sit between Claude and a storage layer, expose a way to write and read from it, and do so without becoming a liability the rest of the time. There are really only two shapes that "something" can take: code that runs inside your browser and watches pages, or a separate process that a host application talks to directly. open-context is built as the second.
How a browser extension would work — and where it breaks down
A memory extension would inject a content script into claude.ai, watch the DOM for new messages, and ship them off to local storage or a background script. It's a workable pattern for browser automation, but it comes with three structural costs that don't go away with careful engineering.
Standing, broad permissions
Chrome's Manifest V3 tightened extension permissions considerably, but independent security research still finds that most popular extensions request more access than their stated function needs, and that MV3's install-time permission model leaves most of the actual risk concentrated at the moment you click "Add extension" — before you've seen it do anything (Chrome Extensions Security Threats: Risk Analysis, DeepStrike). A memory extension that needs to read your Claude conversations to save them is, by construction, an extension that can read your Claude conversations at any time — not just when you ask it to remember something.
Fragile to page changes, opaque to the host
DOM scraping breaks the moment claude.ai changes its markup, and there's no contract the extension and the page agree on — it's reverse-engineering, redone on every UI update. Claude itself also has no idea the extension exists; it can't call it, ask it a question, or get a typed response back. Everything has to be inferred from what shows up on screen.
No structured tool-calling contract
The most useful version of "remember this" isn't "scrape whatever's visible" — it's Claude
deciding, mid-conversation, to call a save_context tool with specific content and
tags, and later calling recall_context with a query. That requires a contract Claude
can actually invoke, which a passive browser script doesn't provide.
How MCP scopes access differently
The Model Context Protocol is the open standard Anthropic introduced in late 2024 specifically to solve this class of problem: connecting AI systems to external tools and data sources without every integration being a bespoke, over-permissioned hack (Introducing the Model Context Protocol, Anthropic). Two design choices make the difference concrete.
Explicit host configuration, not automatic injection
An MCP server doesn't install itself into every session by default. You add it to
~/.claude/settings.json or Claude Desktop's config with an explicit command and
arguments. Nothing runs until that specific host starts that specific process — there's no
equivalent of a content script silently attaching to every tab.
A typed tool contract instead of screen-scraping
open-context's server (src/mcp/server.ts) defines each tool with a Zod schema —
save_context takes content, optional tags, and an
optional bubbleId; recall_context takes a query string —
and nothing else is reachable. Claude sees exactly six context tools plus five bubble-management
tools, each with a defined input and output shape. There's no DOM to scrape and nothing to break
when claude.ai's frontend changes, because the server never touches the frontend at all — it
talks to Claude over stdio, one JSON-RPC message at a time.
Why this matters more once you look at what it's protecting
The context an MCP memory server holds is often more sensitive than a single page view — it's a
standing record of what you've told Claude about your work, your projects, and your preferences
over time. open-context stores that locally by default (~/.opencontext/contexts.json,
or any of 15 supported databases via BYODB), and the MCP transport itself adds no network
exposure: a stdio-based server has no listening port for anything to attack. That's a narrower,
more auditable surface than a browser extension that runs continuously across every site you
visit. For more on where the remaining risk actually sits, see
Securing a Local MCP Server.
The tradeoff: MCP still needs a compatible host
None of this makes MCP strictly better in every dimension — it makes a different tradeoff. A browser extension works inside any site your browser can load, with no cooperation from that site required. An MCP server only works with a host application that implements the MCP client side of the protocol. That used to mean Claude Code and Claude Desktop specifically; it no longer does. OpenAI's ChatGPT, Google DeepMind's agent tooling, and Microsoft's Copilot have all shipped MCP client support since, which is the direct result of MCP being donated as an open standard rather than kept as a Claude-only feature. The access model that made sense for one host now generalizes to several.
Give Claude persistent memory without installing anything into your browser.
Set up the open-context MCP server →FAQ
Is an MCP server the same thing as a browser extension?
No. A browser extension installs into your browser and can read or modify pages you visit, subject to the permissions it requests. An MCP server is a separate local process that a specific host application — like Claude Code or Claude Desktop — connects to over stdio or HTTP, using a typed set of tools you define. It has no access to your browser or your other tabs at all.
Does open-context's MCP server need any browser permissions?
No. The MCP server (src/mcp/) runs as a standalone Node.js process launched by Claude Code or Claude Desktop over stdio. It never touches a browser, requests no page permissions, and can't read anything outside the context store it manages.
Can I still use open-context through a browser?
Yes. The web UI is a separate piece — a self-hosted dashboard you open at localhost:3000 for importing conversations, editing preferences, and browsing saved context. It talks to open-context's own REST API, not to Claude, and it isn't a browser extension either.
Does MCP only work with Claude?
MCP started as an Anthropic project but is now an open standard maintained independently. OpenAI's ChatGPT, Google DeepMind's tooling, and Microsoft Copilot have all added MCP client support, so an MCP server like open-context's can in principle be reused by any compatible host, not just Claude.
Is open-context affiliated with Anthropic?
No. open-context is an independent, community-built, open source tool. It is not affiliated with, endorsed by, or built by Anthropic.