Thanks for your interest in contributing! Browser MCP is open source and welcomes contributions of all kinds.
# Clone the repo
git clone https://github.com/Agent360dk/browser-mcp.git
cd browser-mcp
# Install MCP server dependencies
cd mcp-server && npm install && cd ..
# Load extension in Chrome
# 1. Go to chrome://extensions
# 2. Enable Developer mode
# 3. Click "Load unpacked"
# 4. Select the extension/ folder
# Add to Claude Code
claude mcp add browser-mcp node mcp-server/index.js
# Test it
# Open Claude Code and try: browser_navigate("https://example.com")extension/ # Chrome extension (Manifest V3)
background.js # Service worker — all browser automation logic
manifest.json # Extension config + permissions
offscreen.js # WebSocket bridge to MCP server
popup.html/js # Status UI
mcp-server/ # MCP server (Node.js)
index.js # MCP server + WebSocket client
tools.js # 34 tool definitions
bin/cli.js # CLI installer
package.json # npm config
docs/ # Landing page (browsermcp.dev)
assets/ # Demo video + GIF
Open a 🐛 Bug Report — the template guides you through expected/actual/repro/version/OS.
Or, in any Claude Code session with browser-mcp installed, say "report a browser-mcp bug: …" and Claude will draft + offer the submit link via the browser_about tool.
Open a 💡 Feature Wish — describe what you want it to do, why (your use case), and an optional example call. Wishes are curated into WISHLIST.md and move to ✅ Shipped when implemented.
Or, in any Claude Code session, say "I wish browser-mcp could …" and Claude will draft + offer the submit link.
Built something cool with Browser MCP? 🎯 Share it — fill in what you built, how, and (optionally) why Browser MCP was the right tool. Approved use-cases land in USE_CASES.md.
- Fork the repo
- Create a branch:
git checkout -b my-feature - Make your changes in
extension/background.js(browser logic) ormcp-server/tools.js(tool definitions) - Test locally with Claude Code
- Commit:
git commit -m "feat: add my feature" - Push:
git push origin my-feature - Open a Pull Request
- Add tool definition in
mcp-server/tools.js:
{
name: 'browser_my_tool',
description: 'What it does',
inputSchema: {
type: 'object',
properties: { /* params */ },
},
}- Add handler in
extension/background.js(in the switch/case block):
case 'my_tool': {
const tab = await getSessionTab(port);
// implementation
return { ok: true };
}- Add to methodMap in
mcp-server/index.js:
browser_my_tool: 'my_tool',- Update README tool count and table.
These are equally valuable:
- Documentation improvements
- README translations (create
README.zh-CN.md,README.ja.md, etc.) - Bug reports with clear reproduction steps
- Sharing Browser MCP in your community
- No build step — plain JavaScript (ES modules)
constoverlet,letovervar- Async/await over callbacks
- Error messages should be helpful (include what went wrong + how to fix)
- Comments only for non-obvious "why", not "what"
By contributing, you agree that your contributions will be licensed under the MIT License.