Contributing Guide ๐Ÿค

December 29, 2025 ยท View on GitHub

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 20+ 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.