Local MCP bridge for Easy Local Storage Manager
Local MCP bridge for Easy Local Storage Manager: lets any AI agent (Claude Code, Cursor, Codex, Gemini CLI, ...) read and write the real browser's storage through the ELSM extension.
@elsm/mcp is a local MCP (Model Context Protocol) server that lets any AI
agent — Claude Code, Cursor, Codex, Gemini CLI, ZCode, OpenCode or anything
that speaks stdio MCP — read and write the real browser storage
(localStorage, sessionStorage, cookies, IndexedDB) of the tab you're looking
at, through the
ELSM browser extension.
Requires the browser extension. The bridge has no storage access of its own — the extension is what reads and writes your browser. Install Easy Local Storage Manager from the Chrome Web Store (Firefox: build it from the extension repo and load
extension/build/firefoxunpacked).
Your AI agent (Claude, Codex, Cursor, ...)
│ stdio (MCP protocol)
▼
elsm-mcp ← port 39231, pairing token in ~/.elsm-bridge/token
│ ws://127.0.0.1:39231 (token + protocol version handshake)
▼
ELSM extension (offscreen document / background page)
│ privileged APIs (chrome.cookies, tabs, page access)
▼
The active tab you are working on — its real storageThree steps, in this order — the bridge is useless until the extension is installed and paired.
Install Easy Local Storage Manager from the Chrome Web Store — that's where agent access, the pairing token and the Connected agents screen live. Firefox: build from the extension repo.
npx @elsm/mcp --port 39231The first run creates a pairing token at ~/.elsm-bridge/token (mode 0600).
Open the ELSM sidebar → Agent access and paste that token once per browser.
{
"mcpServers": {
"elsm": {
"command": "npx",
"args": ["-y", "@elsm/mcp", "--port", "39231"]
}
}
}The setup guide has the exact stanza for
Claude Code, Codex, Cursor, ZCode, OpenCode and a generic mcpServers example,
and npx @elsm/mcp --print-config prints them with your real paths.
Nine tools, scoped to the active tab's origin:
| Tool | Plan | What it does |
|---|---|---|
get_target | Free | Tab id, URL, origin, title of the active tab |
list_storage_areas | Free | Origin, storage areas present, IndexedDB database names |
read_storage | Free | Read localStorage/sessionStorage — one key, a prefix, or everything |
read_cookies | Free | All cookies for the tab; values <redacted> unless raw-value consent is granted in the UI |
read_indexeddb | Free | Cursor-paged, JSON-safe read of an object store |
export_state | Free | Snapshot localStorage/sessionStorage + cookie metadata (always redacted) |
write_storage | Pro | Write {key, value} entries; every write lands in the sidebar changelog |
delete_keys | Pro | Delete keys from localStorage/sessionStorage |
clear_area | Pro | Wipe an area — needs confirm: true on a retry after the user armed Clear-all in the sidebar (60s window) |
Free plans are read-only and capped at 50 agent calls per day; Pro is unlimited. On the extension's Connected agents screen you can see every agent that called in (last used, total calls, last action), block one, or revoke it.
127.0.0.1) — never a
routable interface.code: injection — all page access goes through
chrome.scripting.executeScript with functions and JSON args.elsm-mcp [--port <n>] [--token-file <f>] [--print-config] [--selftest]--port — fixed WS port (default 39231)--token-file — pairing token file (default ~/.elsm-bridge/token, or
ELSM_TOKEN_FILE)--print-config — print paste-ready config stanzas for common clients--selftest — run the internal smoke test (real WS roundtrip: handshake,
auth refusal, protocol-mismatch refusal, pre-auth frame dropping, agent
attribution, session replacement) and exitbun install
bun run build # tsc → dist/
bun run typecheck
bun run test # dist/cli.js --selftestThe wire contract with the extension is duplicated by design: the canonical
protocol types live in src/types.ts, and the ELSM extension repo keeps a
hand-mirrored copy
(extension/src/shared/types/agent-bridge.types.ts).
Change both in the same change and bump the protocol version in both files —
mismatches are refused at the handshake.
MIT
Pick your client and paste the snippet. Each one is the same server, written the way that client expects it.
claude mcp add elsm -- npx -y @elsm/mcp --port 39231{
"mcpServers": {
"elsm": {
"args": [
"-y",
"@elsm/mcp",
"--port",
"39231"
],
"command": "npx"
}
}
}code --add-mcp '{"name":"elsm","args":["-y","@elsm/mcp","--port","39231"],"command":"npx"}'[mcp_servers.elsm]
command = "npx"
args = ["-y", "@elsm/mcp", "--port", "39231"]Runs locally on your device. Your client starts the server itself, so nothing has to be hosted.
Paste this prompt into your agent. It reads this page and does the setup for you.
Read https://aiagentslisting.com/mcp/elsm-mcp to learn what the "ELSM MCP" MCP server does and how to install it. Add it to my coding agent's MCP configuration as documented on that page, then confirm the server connects and list the tools it exposes.Agents can also browse this directory over MCP at https://aiagentslisting.com/api/mcp
npx @elsm/mcp --port 39231This server runs locally, so we can't read its tool list over the web yet.
We could not run this server: its npm package has not answered in our offline sandbox, which usually means it needs an API key or other configuration to start. The four checks that need a live server are left out, and the grade tops out at B until we can read its tools.
Paste this line near the top of your repository's README. The badge always renders the current score.
[](https://aiagentslisting.com/mcp/elsm-mcp)A model context protocol server to work with JetBrains IDEs: IntelliJ, PyCharm, WebStorm, etc. Also,
Shared database for teams and AI agents: store, query, and update structured records over MCP.
Command relay for remote shells. Push commands from an LLM, CI runner, or any HTTP client to a
No tagged releases on record.
Connect to the AI Agents Listing MCP server at https://aiagentslisting.com/api/mcp using the HTTP transport and complete the sign-in when it asks. Then call the submit_review tool for the listing "elsm-mcp" with a rating from 1 to 5 and a short note on what worked and what did not.No reviews yet
Be the first to share your experience with this tool.
A model context protocol server to work with JetBrains IDEs: IntelliJ, PyCharm, WebStorm, etc. Also,
Developer Tools
Shared database for teams and AI agents: store, query, and update structured records over MCP.
Databases
Command relay for remote shells. Push commands from an LLM, CI runner, or any HTTP client to a
Developer Tools
One email a week. New agents, MCP servers and skills, and what is actually getting traction.