Skip to main content
Glama
Helix MCP Server

Helix MCP Server

by b1krams

Helix MCP Server

A modern, local-first Model Context Protocol (MCP) server built with Python and managed by uv.

This server is designed to work fully offline (e.g. alongside llama-server running local models like Gemma 2) while providing secure workspace operations, offline searching, and modular web capabilities without requiring paid API keys.

Features

  • 🔌 Standard stdio Transport: Connects seamlessly to standard MCP clients like Claude Desktop.

  • 🛡️ Secure Filesystem Boundary: All file operations (read, write, delete, list, move) are strictly confined to the workspace root directory.

  • 🔎 Offline Search & Indexer: Built-in SQLite FTS5 (Full-Text Search) engine that indices all text and code files in the workspace locally.

  • 👁️ File Change Watcher: Background thread utilizing watchdog to monitor workspace additions, deletions, modifications, and moves.

  • 🌐 Zero-Cost Web Search: Multi-adapter web search using DuckDuckGo (via Python SDK) and Mojeek (via HTML parsing) with automatic fallback. No API keys required.

  • 📄 Clean Web Fetcher: Downloads pages and converts them to readable Markdown, stripping script, style, navigation, and image tags to conserve context window tokens.

Related MCP server: Repo Interrogator

Tech Stack

  • Python 3.10+

  • uv: Blazing-fast dependency resolver & package manager.

  • FastMCP: Declarative MCP framework wrapper.

  • SQLite FTS5: Fully offline search indexing.

  • Watchdog: Multi-threaded file systems events catcher.

  • Httpx & BeautifulSoup4: Scraping & page cleanup.


MCP Tools Provided

Tool Name

Arguments

Description

web_search

query: str, engine: str = "auto", limit: int = 5

Search the web using DuckDuckGo/Mojeek.

web_fetch

url: str

Downloads a webpage and cleans it to Markdown.

workspace_index

None

Indexes all workspace text/code files locally.

workspace_search

query: str, limit: int = 10

Instantly queries the local index using FTS5 keywords.

file_read

path: str

Reads a text/code file (workspace relative).

file_write

path: str, content: str

Writes content to a file (workspace relative).

file_delete

path: str

Deletes a file or empty directory.

file_move

source: str, destination: str

Moves or renames files or directories.

directory_list

path: str = "."

Lists contents inside a workspace folder.

file_changes_get

None

Returns a log of recent workspace file changes.


Getting Started

Prerequisites

Install uv if you haven't already:

  • macOS/Linux: curl -LsSf https://astral.sh/uv/install.sh | sh

  • Windows: powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

Setup & Installation

Clone this repository and set up dependencies:

git clone https://github.com/b1krams/helix-mcp.git
cd helix-mcp
uv sync

Running Locally

To run the MCP server on stdio transport:

uv run python -m helix_mcp.server

Connecting to Clients

Claude Desktop Configuration

Add the following to your claude_desktop_config.json:

{
  "mcpServers": {
    "helix-mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/helix-mcp",
        "run",
        "python",
        "-m",
        "helix_mcp.server"
      ]
    }
  }
}

(Make sure to replace /absolute/path/to/helix-mcp with your actual full workspace path).


Development & Testing

Run the offline pytest suite to verify all tools:

uv run pytest

Formatting and Linting:

uv run ruff check

Available Tools

10 tools
directory_listA
List all files and directories inside a target workspace path.
Access is strictly confined to the workspace root.

Args:
    path: Target directory path relative to workspace. Defaults to ".".

Inputs: path. Returns: result

file_changes_getA

Get a log of recent file modifications, creations, or deletions in the workspace. The background watcher monitors the workspace and keeps the latest 100 events in memory.

Inputs: no named parameters. Returns: result

file_deleteA
Delete a file or empty directory in the workspace.
Access is strictly confined to the workspace root.

Args:
    path: Relative path to the file or directory to delete.

Inputs: path (required). Returns: result

file_moveB
Move or rename a file/directory inside the workspace.
Both source and destination must resolve within the workspace root.

Args:
    source: Source path relative to workspace.
    destination: Destination path relative to workspace.

Inputs: source (required), destination (required). Returns: result

file_readA
Read the contents of a text/code file in the workspace.
Access is strictly confined to the workspace root.

Args:
    path: Path to the file, relative to workspace root.

Inputs: path (required). Returns: result

file_writeA
Write content to a file in the workspace, creating any intermediate directories if needed.
Access is strictly confined to the workspace root.

Args:
    path: Relative path where the file should be written.
    content: The text content to write.

Inputs: path (required), content (required). Returns: result

web_fetchA
Fetch a webpage's content and convert it into clean markdown.
Image links and hyperlinks are removed to save token context size.

Args:
    url: The web URL to fetch and convert.

Inputs: url (required). Returns: result

workspace_indexA

Indexes all text and code files in the local workspace directory. This creates/updates a local SQLite FTS5 database to enable offline searching.

Inputs: no named parameters. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 10 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose: file read, write, delete, move, list, change log, workspace index/search, web fetch, and web search. No two tools overlap in functionality.

    Naming Consistency4/5

    Most tools follow a consistent pattern: 'file_<verb>' (file_read, file_write, file_delete, file_move, file_changes_get) and 'workspace_<verb>' (workspace_index, workspace_search). Minor deviation: 'directory_list' instead of 'file_list' and 'web_fetch'/'web_search' are separate but still consistent with their domain.

    Tool Count5/5

    With 10 tools, the set is well-scoped for managing workspace files and performing web searches. Each tool serves a clear purpose without unnecessary redundancy.

    Completeness4/5

    The tool set covers CRUD for files, directory listing, change tracking, offline full-text search, and web operations. A minor gap is the lack of an explicit file copy tool, though move can be used with caution.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      D
      maintenance
      A local-first MCP server that provides AI agents with safe codebase access through file discovery, hybrid lexical-semantic search, and project introspection. It features durable local memory and semantic indexing while keeping all data and processing entirely on your local machine.
      74
      87 npm
      6
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      A local-first MCP server that enables AI tools to safely inspect and search code repositories, providing indexing, deterministic BM25 search, code outlining, and context bundles without code modification.
      9
      1
      MIT
    • A
      license
      Not graded
      quality
      F
      maintenance
      MCP server enabling local-first web search, fetch, extract, and caching with citeable excerpts, no API key required. Supports research workflows for agents and apps.
      96 npm
      1
      MIT