Skip to main content

MCP server for Mercurial repository interaction

Project description

HG MCP Server

PyPI Version

A Model Context Protocol (MCP) server for Mercurial repository interaction, written in Python 3.10+ with AsyncIO.

Features

Core Version Control Operations

  • Status & Diff: View working directory status and uncommitted changes (equivalent to git status and git diff)
  • Commit Management: Add files, commit changes with messages, and remove files from version control
  • History Navigation: View commit history with configurable limits, update to any revision (like git checkout/git switch)
  • Branch Management: Create, list, and switch between branches; supports both permanent branches and lightweight bookmarks

Advanced Branching with Topics

  • Topic Support: Create and manage lightweight branches (topics) using the evolve extension
  • Topic Tracking: List all topics and identify the currently active topic
  • Bookmark Integration: Seamless bookmark management for Git-like branch workflows

Remote Synchronization

  • Push/Pull: Push changes to remote repositories and pull from remote sources
  • Remote Configuration: Support for named remotes and direct URLs

History Rewriting (Requires Extensions)

  • Rebase: Move or combine changesets onto different revisions (like git rebase)
  • Strip: Permanently remove changesets (like git reset --hard)
  • Histedit: Interactive history editing (like git rebase -i)
  • Transplant: Cherry-pick changesets from other branches (like git cherry-pick)
  • Evolve: Track how changesets have been rewritten over time

Merge & Conflict Resolution

  • Merge: Combine changes from different branches
  • Conflict Management: List and track files with unresolved merge conflicts
  • Revert: Discard uncommitted changes and restore files to last committed state

Large File Support

  • Largefiles Extension: List and manage large files stored outside normal history with size information

Git Integration (hg-git)

  • Git Remote Detection: Automatically detect if repository is Git-backed
  • Branch Mapping: View how bookmarks map to Git branches
  • Configuration Insights: Display hg-git settings and branch bookmark suffix configuration

Configuration & Diagnostics

  • Extension Detection: List all enabled Mercurial extensions
  • Repository Validation: Verify Mercurial repository status and configuration
  • Built-in Help: Access Mercurial command documentation and concepts

Performance & Reliability

  • Async I/O: Asynchronous command execution for responsive operations
  • JSON Output Support: Automatic JSON formatting for supported commands (status, log, bookmarks, topics, config, resolve, tags, heads, id, parents, children, outgoing, incoming, paths)
  • Optional Performance Boost: Support for uvloop (Unix/macOS) and winloop (Windows) for enhanced performance
  • Smart Error Handling: Helpful error messages with hints for missing extensions
  • Path Validation: Automatic repository detection even when working in subdirectories

Installation

# Clone the repository
git clone <repository-url>
cd hg-mcp

# Create and activate virtual environment
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install in editable mode
pip install -e .

# Optional: Install with performance enhancements
pip install uvloop  # On Unix/macOS
pip install winloop  # On Windows

Usage

# Activate your virtual environment first
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
hg-mcp

This starts the MCP server that can be used with MCP clients like Claude for Desktop, Qwen-Coder, Gemini-CLI, and OpenCode.

Tools

Core Commands

  • hg_status: Show working directory status with JSON output (like git status)
  • hg_log: Show commit history with JSON output (like git log)
  • hg_diff: Show uncommitted changes (like git diff)
  • hg_commit: Commit changes with a message (like git commit)
  • hg_add: Add files to version control (like git add)
  • hg_remove: Remove files (like git rm)

Branch & Navigation

  • hg_update: Update to a revision (like git checkout/git switch)
  • hg_branch: Show or create branches
  • hg_bookmarks: List bookmarks with JSON output (lightweight branches, like Git branches in hg-git)
  • hg_topic: Create a topic (lightweight branch)
  • hg_topics: List all topics with JSON output
  • hg_topic_current: Show current topic (JSON-parsed)

Remote Sync

  • hg_push: Push changes to remote (like git push). Shows available remotes if destination doesn't exist
  • hg_pull: Pull changes from remote (like git fetch)
  • hg_paths: List configured paths/remotes with JSON output

History Rewriting (Extensions Required)

  • hg_rebase: Rebase changesets (like git rebase, requires 'rebase' extension)
  • hg_strip: Remove changesets (like git reset --hard, requires 'strip' extension)
  • hg_histedit: Interactive history editing (like git rebase -i, requires 'histedit')
  • hg_evolve: Show evolution history (requires 'evolve' extension)
  • hg_transplant: Cherry-pick changesets (like git cherry-pick, requires 'transplant')

Merge & Conflict Resolution

  • hg_merge: Merge branches (like git merge)
  • hg_resolve: List merge conflicts with JSON output
  • hg_revert: Discard uncommitted changes (like git checkout -- / git restore)

Large Files

  • hg_largefiles: List large files (requires 'largefiles' extension)

Configuration & Help

  • hg_config: Show Mercurial configuration with JSON output (check for hg-git extension)
  • hg_extensions: List enabled extensions
  • hg_git: Check hg-git extension status and Git remote configuration
  • hg_help: Get help on Mercurial commands and concepts
  • hg_paths: List configured paths/remotes with JSON output
  • hg_tags: List all tags with JSON output
  • hg_tag: Create or remove a tag (like git tag)
  • hg_heads: List heads with JSON output
  • hg_id: Show current revision ID with JSON output
  • hg_parents: Show parent revisions with JSON output
  • hg_children: Show child revisions with JSON output

Integration with AI Assistants

To use this MCP server with your AI coding assistant, you need to configure it in your assistant's MCP settings. The key is pointing to the correct executable path in your virtual environment.

Step 1: Find Your Virtual Environment Path

First, determine where your virtual environment is located:

If using Poetry:

# Get the virtual environment path
poetry env info --path
# Example output: /home/user/.cache/pypoetry/virtualenvs/hg-mcp-xxxxx-py3.10

If using pip/venv:

# The path is typically: /path/to/hg-mcp/.venv
# Or if created elsewhere: echo $VIRTUAL_ENV

Step 2: Configure Your AI Assistant

The executable will be located at:

  • Unix/macOS: <venv-path>/bin/hg-mcp
  • Windows: <venv-path>\Scripts\hg-mcp.exe

Replace <venv-path> with your actual virtual environment path from Step 1.


Qwen-Coder & Gemini-CLI

Both use identical configuration format:

Configuration files:

  • Qwen-Coder: ~/.qwen/settings.json
  • Gemini-CLI: ~/.gemini/settings.json
{
  "mcpServers": {
    "hg-mcp": {
      "command": "/path/to/your/venv/bin/hg-mcp"
    }
  }
}

OpenCode

Configuration file: ~/.config/opencode/opencode.json

{
  "mcp": {
    "hg-mcp": {
      "type": "local",
      "command": ["/path/to/your/venv/bin/hg-mcp"],
      "enabled": true
    }
  }
}

Note: When you use repo_path="." (default), it resolves to OpenCode's current working directory, so the tools will work in whatever project directory you're currently in.


Claude Desktop

Configuration file location:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "hg-mcp": {
      "command": "/path/to/your/venv/bin/hg-mcp"
    }
  }
}

Other MCP-Compatible Clients

Command: /path/to/your/venv/bin/hg-mcp

Verifying Your Setup

After configuration, restart your AI assistant and verify the MCP server is connected. You can test by asking your assistant to run a Mercurial command like "show the status of this repository" or "list recent commits".

Requirements

  • Python 3.10+
  • Mercurial installed and available in PATH
  • MCP-compatible client

Acknowledgments

This project is inspired by mcp-server-mercurial.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hg_mcp-0.4.0.tar.gz (15.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hg_mcp-0.4.0-py3-none-any.whl (14.0 kB view details)

Uploaded Python 3

File details

Details for the file hg_mcp-0.4.0.tar.gz.

File metadata

  • Download URL: hg_mcp-0.4.0.tar.gz
  • Upload date:
  • Size: 15.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.2 CPython/3.14.3 Linux/6.18.13-200.fc43.x86_64

File hashes

Hashes for hg_mcp-0.4.0.tar.gz
Algorithm Hash digest
SHA256 5ca65f86a018c5e216287039dedbc9a4dc33f4145666a28cfdc84768e5041376
MD5 2fd420bada8c1745e07a5c3ecbaf76bf
BLAKE2b-256 11aed87aa88d1f1067bb3a7e584c85c10ab37830a73c4fe619cca08f3164e1d3

See more details on using hashes here.

File details

Details for the file hg_mcp-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: hg_mcp-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 14.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.2 CPython/3.14.3 Linux/6.18.13-200.fc43.x86_64

File hashes

Hashes for hg_mcp-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 55b9bb1b02ad96beaef00d68fd585c41bd43fd6cea3f33a24790a36e867fce71
MD5 8a85d777b64942fad0f4a616643521c0
BLAKE2b-256 cbac551cf40a4fa2cec7a02b892277f6a548f925fca48830faf6ec7e1b7210d0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page