Skip to main content

Ingest official documentation into a local vector database and expose it via MCP for AI coding agents

Project description

openground

PyPI version

Openground is a system for managing documentation in an agent-friendly manner. It extracts and stores docs from websites, then exposes them to AI coding agents via MCP for querying with hybrid BM25 full-text search and vector similarity search.

๐Ÿ“š Full Documentation

Quick Start

Installation

pip install openground

Or with uv:

uv tool install openground

Index Documentation

Extract and embed documentation in one command:

openground add \
  --sitemap-url https://docs.example.com/sitemap.xml \
  --library example-docs \
  -y

Query from CLI

openground query "how to authenticate" --library example-docs

Use with AI Agents

Configure your AI coding assistant to use openground via MCP:

# For Cursor
openground install-mcp --cursor

# For Claude Code
openground install-mcp --claude-code

# For OpenCode
openground install-mcp --opencode

Now your AI assistant can search your documentation automatically!

Architecture

          โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
          โ”‚                              OPENGROUND                                     โ”‚
          โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
          โ”‚                                                                             โ”‚
          โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
          โ”‚  โ”‚                           EMBEDDING PIPELINE                          โ”‚  โ”‚
          โ”‚  โ”‚                                                                       โ”‚  โ”‚
          โ”‚  โ”‚                                                                       |  |
          โ”‚  โ”‚   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”‚  โ”‚
          โ”‚  โ”‚   โ”‚   EXTRACT   โ”‚     โ”‚    EMBED    โ”‚     โ”‚    LOCAL LANCEDB    โ”‚     โ”‚  โ”‚
          โ”‚  โ”‚   โ”‚  โ€ข Sitemap  โ”‚     โ”‚  โ€ข Chunking โ”‚     โ”‚  โ€ข Vector Store     โ”‚     โ”‚  โ”‚
          โ”‚  โ”‚   โ”‚    Parsing  โ”‚โ”€โ”€โ”€โ”€>โ”‚  โ€ข Local    โ”‚โ”€โ”€โ”€โ”€>โ”‚  โ€ข BM25 FTS Index   โ”‚     โ”‚  โ”‚
          โ”‚  โ”‚   โ”‚  โ€ข Web      โ”‚     โ”‚    Embeddingโ”‚     โ”‚  โ€ข Hybrid Search    โ”‚     โ”‚  โ”‚
          โ”‚  โ”‚   โ”‚    Scraping โ”‚     โ”‚    Model    โ”‚     โ”‚                     โ”‚     โ”‚  โ”‚
          โ”‚  โ”‚   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ”‚  โ”‚
          โ”‚  โ”‚         โ”‚                    ^                       โ”‚                โ”‚  โ”‚
          โ”‚  โ”‚         โ–ผ                    |                       โ”‚                โ”‚  โ”‚
          โ”‚  โ”‚   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”            |                       โ”‚                โ”‚  โ”‚
          โ”‚  โ”‚   โ”‚     JSON    โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                       โ”‚                โ”‚  โ”‚
          โ”‚  โ”‚   โ”‚             โ”‚                                    โ”‚                โ”‚  โ”‚
          โ”‚  โ”‚   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                                    โ”‚                โ”‚  โ”‚
          โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”‚โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
          โ”‚                                                         โ”‚                   โ”‚
          โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ–ผ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
          โ”‚  โ”‚                        QUERY INTERFACE                                โ”‚  โ”‚
          โ”‚  โ”‚                                                                       โ”‚  โ”‚
          โ”‚  โ”‚   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”‚  โ”‚
          โ”‚  โ”‚   โ”‚    CLI COMMANDS     โ”‚      โ”‚         FASTMCP SERVER          โ”‚    โ”‚  โ”‚
          โ”‚  โ”‚   โ”‚                     โ”‚      โ”‚                                 โ”‚    โ”‚  โ”‚
          โ”‚  โ”‚   โ”‚  openground query   โ”‚      โ”‚  โ€ข search_documents_tool        โ”‚    โ”‚  โ”‚
          โ”‚  โ”‚   โ”‚  openground ls      โ”‚      โ”‚  โ€ข list_libraries_tool          โ”‚    โ”‚  โ”‚
          โ”‚  โ”‚   โ”‚  openground rm      โ”‚      โ”‚  โ€ข get_full_content_tool        โ”‚    โ”‚  โ”‚
          โ”‚  โ”‚   โ”‚                     โ”‚      โ”‚                                 โ”‚    โ”‚  โ”‚
          โ”‚  โ”‚   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ”‚  โ”‚
          โ”‚  โ”‚            โ”‚                                 โ”‚                        โ”‚  โ”‚
          โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”‚โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”‚โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
          โ”‚               โ”‚                                 โ”‚                           โ”‚
          โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”‚โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”‚โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                          โ”‚                                 โ”‚
                          โ–ผ                                 โ–ผ
                   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                   โ”‚    USER    โ”‚                  โ”‚   AI AGENTS    โ”‚
                   โ”‚  Terminal  โ”‚                  โ”‚  Cursor/Claude โ”‚
                   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Documentation

Features

  • Extract documentation from any website with a sitemap
  • Hybrid search combining semantic similarity (vector embeddings) and BM25 keyword matching
  • Local-first - all processing happens on your machine, no API calls
  • MCP server for seamless integration with AI coding assistants
  • Configurable chunking, embedding models, and search parameters

Example Workflow

Here's how to index the Databricks documentation and make it available to Claude Code:

# 1. Install openground
pip install openground

# 2. Extract and embed Databricks docs
openground add \
  --sitemap-url https://docs.databricks.com/aws/en/sitemap.xml \
  --library databricks \
  -f docs -f documentation \
  -y

# 3. Configure Claude Code to use openground
openground install-mcp --claude-code

# 4. Restart Claude Code
# Now you can ask: "How do I create a Delta table in Databricks?"
# Claude will search the Databricks docs automatically!

Development

To contribute or work on openground locally:

git clone https://github.com/yourusername/openground.git
cd openground
uv pip install -e .

License

MIT

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

openground-0.2.3.tar.gz (25.7 kB view details)

Uploaded Source

Built Distribution

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

openground-0.2.3-py3-none-any.whl (29.4 kB view details)

Uploaded Python 3

File details

Details for the file openground-0.2.3.tar.gz.

File metadata

  • Download URL: openground-0.2.3.tar.gz
  • Upload date:
  • Size: 25.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.22

File hashes

Hashes for openground-0.2.3.tar.gz
Algorithm Hash digest
SHA256 525d0f0121cd4b2b812d264840e96b209fcaa7dfd7865c6e989563635d181188
MD5 8bca8baf427f3e4e5e1b126a9b074f6b
BLAKE2b-256 0e6f602cf7ad2953e3138c380fb787f03cf2725c73edd7ff8d9acebe18b5dd9c

See more details on using hashes here.

File details

Details for the file openground-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: openground-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 29.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.22

File hashes

Hashes for openground-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 662b6ac58106439215b1ce5ca386714d43ffe9bc881f0efc38e20c557fbbf764
MD5 b1728b8e382ed856ddd6db32ec4d28b3
BLAKE2b-256 a768e6c38c9ec2283b8c33317062377940d0d8184707b5fd542259ba3b2dd7c2

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