Skip to content

Chrome MCP Server is a Chrome extension-based Model Context Protocol (MCP) server that exposes your Chrome browser functionality to AI assistants like Claude, enabling complex browser automation, content analysis, and semantic search.

License

Notifications You must be signed in to change notification settings

miyaliunian/mcp-chrome

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

94 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Contributing Guide 🀝

Thank you for your interest in contributing to Chrome MCP Server! This document provides guidelines and information for contributors.

🎯 How to Contribute

We welcome contributions in many forms:

  • πŸ› Bug reports and fixes
  • ✨ New features and tools
  • πŸ“š Documentation improvements
  • πŸ§ͺ Tests and performance optimizations
  • 🌐 Translations and internationalization
  • πŸ’‘ Ideas and suggestions

πŸš€ Getting Started

Prerequisites

  • Node.js 18.19.0+ and pnpm or npm (latest version)
  • Chrome/Chromium browser for testing
  • Git for version control
  • Rust (for WASM development, optional)
  • TypeScript knowledge

Development Setup

  1. Fork and clone the repository
git clone https://github.com/YOUR_USERNAME/chrome-mcp-server.git
cd chrome-mcp-server
  1. Install dependencies
pnpm install
  1. Start the project
npm run dev
  1. Load the extension in Chrome
    • Open chrome://extensions/
    • Enable "Developer mode"
    • Click "Load unpacked" and select your/extension/dist

πŸ—οΈ Project Structure

chrome-mcp-server/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ chrome-extension/     # Chrome extension (WXT + Vue 3)
β”‚   β”‚   β”œβ”€β”€ entrypoints/      # Background scripts, popup, content scripts
β”‚   β”‚   β”œβ”€β”€ utils/            # AI models, vector database, utilities
β”‚   β”‚   └── workers/          # Web Workers for AI processing
β”‚   └── native-server/        # Native messaging server (Fastify + TypeScript)
β”‚       β”œβ”€β”€ src/mcp/          # MCP protocol implementation
β”‚       └── src/server/       # HTTP server and native messaging
β”œβ”€β”€ packages/
β”‚   β”œβ”€β”€ shared/               # Shared types and utilities
β”‚   └── wasm-simd/           # SIMD-optimized WebAssembly math functions
└── docs/                    # Documentation

πŸ› οΈ Development Workflow

Adding New Tools

  1. Define the tool schema in packages/shared/src/tools.ts:
{
  name: 'your_new_tool',
  description: 'Description of what your tool does',
  inputSchema: {
    type: 'object',
    properties: {
      // Define parameters
    },
    required: ['param1']
  }
}
  1. Implement the tool in app/chrome-extension/entrypoints/background/tools/browser/:
class YourNewTool extends BaseBrowserToolExecutor {
  name = TOOL_NAMES.BROWSER.YOUR_NEW_TOOL;

  async execute(args: YourToolParams): Promise<ToolResult> {
    // Implementation
  }
}
  1. Export the tool in app/chrome-extension/entrypoints/background/tools/browser/index.ts

  2. Add tests in the appropriate test directory

Code Style Guidelines

  • TypeScript: Use strict TypeScript with proper typing
  • ESLint: Follow the configured ESLint rules (pnpm lint)
  • Prettier: Format code with Prettier (pnpm format)
  • Naming: Use descriptive names and follow existing patterns
  • Comments: Add JSDoc comments for public APIs
  • Error Handling: Always handle errors gracefully

πŸ“ Pull Request Process

  1. Create a feature branch
git checkout -b feature/your-feature-name
  1. Make your changes

    • Follow the code style guidelines
    • Add tests for new functionality
    • Update documentation if needed
  2. Test your changes

    • Ensure all existing tests pass
    • Test the Chrome extension manually
    • Verify MCP protocol compatibility
  3. Commit your changes

git add .
git commit -m "feat: add your feature description"

We use Conventional Commits:

  • feat: for new features
  • fix: for bug fixes
  • docs: for documentation changes
  • test: for adding tests
  • refactor: for code refactoring
  1. Push and create a Pull Request
git push origin feature/your-feature-name

πŸ› Bug Reports

When reporting bugs, please include:

  • Environment: OS, Chrome version, Node.js version
  • Steps to reproduce: Clear, step-by-step instructions
  • Expected behavior: What should happen
  • Actual behavior: What actually happens
  • Screenshots/logs: If applicable
  • MCP client: Which MCP client you're using (Claude Desktop, etc.)

πŸ’‘ Feature Requests

For feature requests, please provide:

  • Use case: Why is this feature needed?
  • Proposed solution: How should it work?
  • Alternatives: Any alternative solutions considered?
  • Additional context: Screenshots, examples, etc.

πŸ”§ Development Tips

Using WASM SIMD

If you're contributing to the WASM SIMD package:

cd packages/wasm-simd
# Install Rust and wasm-pack if not already installed
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
cargo install wasm-pack

# Build WASM package
pnpm build

# The built files will be copied to app/chrome-extension/workers/

Debugging Chrome Extension

  • Use Chrome DevTools for debugging extension popup and background scripts
  • Check chrome://extensions/ for extension errors
  • Use console.log statements for debugging
  • Monitor the native messaging connection in the background script

Testing MCP Protocol

  • Use MCP Inspector for protocol debugging
  • Test with different MCP clients (Claude Desktop, custom clients)
  • Verify tool schemas and responses match MCP specifications

πŸ“š Resources

🀝 Community

  • GitHub Issues: For bug reports and feature requests
  • GitHub Discussions: For questions and general discussion
  • Pull Requests: For code contributions

πŸ“„ License

By contributing to Chrome MCP Server, you agree that your contributions will be licensed under the MIT License.

🎯 Contributor Guidelines

New Contributors

If you're contributing to an open source project for the first time:

  1. Start small: Look for issues labeled "good first issue"
  2. Read the code: Familiarize yourself with the project structure and coding style
  3. Ask questions: Ask questions in GitHub Discussions
  4. Learn the tools: Get familiar with Git, GitHub, TypeScript, and other tools

Experienced Contributors

  • Architecture improvements: Propose system-level improvements
  • Performance optimization: Identify and fix performance bottlenecks
  • New features: Design and implement complex new features
  • Mentor newcomers: Help new contributors get started

Documentation Contributions

  • API documentation: Improve tool documentation and examples
  • Tutorials: Create usage guides and best practices
  • Translations: Help translate documentation to other languages
  • Video content: Create demo videos and tutorials

Testing Contributions

  • Unit tests: Write tests for new features
  • Integration tests: Test interactions between components
  • Performance tests: Benchmark testing and performance regression detection
  • User testing: Functional testing in real-world scenarios

πŸ† Contributor Recognition

We value every contribution, no matter how big or small. Contributors will be recognized in the following ways:

  • README acknowledgments: Contributors listed in the project README
  • Release notes: Contributors thanked in version release notes
  • Contributor badges: Contributor badges on GitHub profiles
  • Community recognition: Special thanks in community discussions

Thank you for considering contributing to Chrome MCP Server! Your participation makes this project better.

About

Chrome MCP Server is a Chrome extension-based Model Context Protocol (MCP) server that exposes your Chrome browser functionality to AI assistants like Claude, enabling complex browser automation, content analysis, and semantic search.

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 60.3%
  • JavaScript 29.3%
  • Vue 7.2%
  • HTML 1.0%
  • Rust 0.8%
  • Shell 0.7%
  • Other 0.7%