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.2.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.2-py3-none-any.whl (29.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: openground-0.2.2.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.2.tar.gz
Algorithm Hash digest
SHA256 21eb8318a720f0b09b7daa3c7b0e253f169746aacf4c3a14a35e90226ab5d1b8
MD5 9ed4a463fbe950520d74fc5281cae0e1
BLAKE2b-256 055dc67c800e6ae3256604765ff20d21cbc99d09b6c46f7a237b54855412ef4a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: openground-0.2.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 63ab1056d35f502ec47920134d0728c964b955f2668745a7a5ae3a0d09c62f91
MD5 caf1e8037ef3193de34889494f198fae
BLAKE2b-256 954a531314eebb67f9bb081e2d87d75ee484cb569ec1d1dd66b73500f0c4226e

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