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.1.tar.gz (6.1 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.1-py3-none-any.whl (4.9 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for openground-0.2.1.tar.gz
Algorithm Hash digest
SHA256 833d7818a6d71027f8c910e15080f185f6218e4d704135b4e41760c3be2e7f9b
MD5 0c81bda2edc7b1a38d0c51c15328d641
BLAKE2b-256 b28b18d07441f6a940281a56221f512f1fbcc08ac2ea1d0e25d1be94bb4b07db

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for openground-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4cd3de1565d5d2055546f8706c0ed7b544a1db3a344b396cd5cd2b51ed160575
MD5 205b8ba15801157bd53fb24efbfccee1
BLAKE2b-256 53a7d644c5498ae1910f031e8b3f4bab44a341070967c3da79349d8024133f69

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