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

Uploaded Python 3

File details

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

File metadata

  • Download URL: openground-0.2.0.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.0.tar.gz
Algorithm Hash digest
SHA256 e4d50e5e9e2348b39aa3d1b1114e5e27eb3ac9a6d17bf7a6a5c2e5ee17cff1d9
MD5 0d5b36b545ae085fedf0985a620f17d6
BLAKE2b-256 dc0745a382790972bfd8c505700420e3e5358553bfe2e6d491d59212f8bcbc58

See more details on using hashes here.

File details

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

File metadata

  • Download URL: openground-0.2.0-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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 471f0e2ceca680b16ffd3cda7db508fb39785c6549c448f362aeae6b88cb867f
MD5 e39c1a3b243a4da83098cc21bc90a220
BLAKE2b-256 36656c03dde7edaf8064c93f0df4d84846cda96e723cd90a3716d1156aa20847

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