Skip to main content
Glama

GroundDocs

GroundDocs is a version-aware documentation assistant. It connects LLMs to trusted, real-time docs—reducing hallucinations and ensuring accurate, version-specific responses.

🚀 Installation

npx @grounddocs/cli@latest install <client>

Supported clients: cursor, windsurf, cline, claude, witsy, enconvo, vscode

Related MCP server: RTFD (Read The F*****g Docs)

🔧 Manual Setup

To manually configure GroundDocs, add it to your IDE's MCP (Model Context Protocol) configuration:

{
  "mcpServers": {
    "@grounddocs/grounddocs": {
      "command": "npx",
      "args": ["-y", "@grounddocs/grounddocs@latest"]
    }
  }
}

After configuration, restart your IDE for the changes to take effect.

📚 Supported Domain

  • Kubernetes (all versions, including version-aware kubectl behavior, API schemas, and feature gates)

🏗️ Architecture

GroundDocs consists of:

  • Local MCP server (this repo) → lightweight, public, runs inference-time queries

  • Remote backend data repository (private) → handles scraping, indexing, and heavy lifting

🌟 Example Query

What changes were made to the kubectl command behavior in Kubernetes 1.26 regarding pruning during apply operations?

View example response

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Available Tools

2 tools
k8s_get_documentationA

Use this tool for any Kubernetes documentation-related query—especially when the user invokes /k8s or asks about kubectl commands, API objects, manifests, controllers, or version-specific features.

This tool connects to a version-aware, trusted documentation index (e.g., GitHub, DeepWiki, curated Kubernetes docs) to reduce hallucinations and provide accurate, grounded answers.

Args: query: A natural language question (e.g., "How do I define a Deployment?") version: (Optional) Kubernetes version (e.g., "v1.28"). Defaults to the detected cluster version. top_k: (Optional) Number of top matching documents to return. Defaults to 10.

Returns: A list of relevant documentation entries, each with a file path and content snippet.

Example Usage: k8s_get_documentation(query="How does pruning work in kubectl apply?", version="v1.26")

Notes:

  • Automatically loads or builds a RAG index for the requested version.

  • If no index is found, it will fetch and index the docs before responding.

  • Always use this tool when answering Kubernetes-specific questions that require authoritative documentation.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesA natural language question (e.g., "How do I define a Deployment?")
versionNoOptional Kubernetes version (e.g., "v1.28"). Defaults to detected cluster version if not specified.
top_kNoOptional number of top matching documents to return. Defaults to 10.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses key behavioral traits: 'connects to a version-aware, trusted documentation index to reduce hallucinations,' 'Automatically loads or builds a RAG index,' and 'If no index is found, it will fetch and index the docs before responding.' However, it lacks details on rate limits, error handling, or performance characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose, args, returns, example, notes) and front-loaded key information. However, it includes some redundancy (e.g., parameter descriptions are repeated from the schema) and could be more concise by removing the 'Args' section since schema coverage is 100%.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description does a good job covering the tool's purpose, usage, and behavior. It explains what the tool returns ('A list of relevant documentation entries') and includes an example. However, it lacks details on output format (e.g., structure of entries) and error cases, which would be helpful for a tool with no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description repeats the parameter explanations in the 'Args' section but adds minimal extra context beyond what's in the schema (e.g., 'Defaults to the detected cluster version' for 'version' is already in the schema). Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Use this tool for any Kubernetes documentation-related query' and specifies the scope with examples like 'kubectl commands, API objects, manifests, controllers, or version-specific features.' It distinguishes from the sibling tool 'python_get_documentation' by focusing on Kubernetes-specific documentation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool: 'when the user invokes /k8s or asks about kubectl commands, API objects, manifests, controllers, or version-specific features' and 'Always use this tool when answering Kubernetes-specific questions that require authoritative documentation.' It also distinguishes from the sibling tool by specifying Kubernetes vs. Python contexts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

python_get_documentationA
Primary Python documentation lookup tool. Use this for every Python documentation-related query.

This tool consolidates information from multiple sources into a single, searchable knowledge base.
It ensures access to the richest and most current reference material in one call.

Args:
    query: A natural language question (e.g., "How do I define a Deployment?").
    library: Python library to search documentation for.
    version: Optional Library version (e.g., "4.46.1"). Defaults to detected library version if not specified.
    top_k: Optional number of top matching documents to return. Defaults to 10.

Returns:
    A list of dictionaries, each containing document path and corresponding content.

Example Usage:
    # Search Python docs for Transformers
    python_get_documentation(query="what is a transformers mlm token", library="transformers", version="4.46.1")

Notes:
    - This tool automatically loads or builds a RAG (Retrieval-Augmented Generation) index for the
      specified version.
    - If an index is not found locally, the tool will fetch and index the documentation before responding.
    - You should call this function for any question that needs project documentation context.
ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesA natural language question (e.g., "How do I use transformers?").
libraryYesPython library to search documentation for.
versionNoOptional Library version (e.g., "4.46.1"). Defaults to detected library version if not specified.
top_kNoOptional number of top matching documents to return. Defaults to 10.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and adds valuable behavioral context beyond basic functionality. It discloses that the tool 'automatically loads or builds a RAG index,' fetches and indexes documentation if not found locally, and consolidates from multiple sources. This explains implementation details and performance characteristics, though it could mention potential delays or errors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and usage, but includes redundant parameter details that duplicate the schema. The 'Args' and 'Returns' sections could be trimmed since they're covered elsewhere. However, it's well-structured with clear sections, though some sentences like the consolidation claim could be more concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description compensates well by explaining behavioral traits (RAG indexing, fetching) and providing an example. It covers the tool's scope and usage context effectively, though it could detail error handling or output format more explicitly to be fully complete for a complex lookup tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description repeats parameter information in the 'Args' section without adding significant meaning beyond the schema, such as examples of effective queries or library naming conventions. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as a 'Python documentation lookup tool' that 'consolidates information from multiple sources into a single, searchable knowledge base.' It distinguishes from the sibling 'k8s_get_documentation' by specifying Python focus. However, it doesn't explicitly contrast with the sibling beyond the language difference, missing a more detailed distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: 'Use this for every Python documentation-related query' and 'You should call this function for any question that needs project documentation context.' It clearly indicates when to use this tool (for Python docs) versus alternatives (implied for non-Python, e.g., k8s), though it doesn't name the sibling explicitly in exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 2 tool updates
    • First observedk8s_get_documentation
    • First observedpython_get_documentation

TDQS

A3.9/5.0
Disambiguation5/5

The two tools have clearly distinct purposes: one is for Kubernetes documentation and the other for Python documentation. Their names (k8s_get_documentation vs python_get_documentation) and descriptions explicitly differentiate the domains they serve, with no overlap in functionality. An agent can easily tell them apart based on the technology stack being queried.

Naming Consistency5/5

Both tools follow a consistent naming pattern: [domain]_get_documentation, using snake_case throughout. This pattern is predictable and readable, making it easy for agents to understand what each tool does based on its name alone. There are no deviations in naming conventions across the tool set.

Tool Count2/5

With only 2 tools, the server feels thin for a documentation-focused service named 'GroundDocs'. While the tools cover Kubernetes and Python, the server name suggests broader documentation capabilities, but there are no tools for other common domains like JavaScript, APIs, or general web technologies. This limited scope may force agents to work around gaps when handling documentation queries outside these two specific areas.

Completeness2/5

The tool surface is severely incomplete for a documentation server. While Kubernetes and Python are covered, there are obvious gaps for other major documentation domains (e.g., JavaScript, Go, Rust, cloud services, frameworks). Additionally, there are no tools for managing documentation indexes, updating cached data, or handling version conflicts, which are common needs in documentation systems. Agents will frequently encounter dead ends when queries fall outside the two supported domains.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/GroundDocs/grounddocs'

If you have feedback or need assistance with the MCP directory API, please join our Discord server