Skip to main content
Glama
roystondz

Docs MCP Server

by roystondz

Docs MCP Server

A Model Context Protocol (MCP) server that provides a search-and-retrieve tool (get_docs) to query and extract clean, relevant information from official documentation sites for modern developer libraries and tools.

Features

  • Google Serper API Integration: Queries official documentation sites with specific site: constraints.

  • HTML Content Extraction: Automatically scrapes the top organic search results and converts raw HTML into clean plain text using trafilatura (ignoring navigation menus, tables, and footers).

  • Supported Documentation Libraries:

    • langchain (python.langchain.com/docs/)

    • chromadb (docs.trychroma.com/)

    • openai (platform.openai.com/docs/)

    • uv (docs.astral.sh/uv/)

    • docker (docs.docker.com/get-started/)

    • redis (redis.com/docs/get-started/)

  • Ready-to-Use Client: Includes a sample client that runs the MCP server via stdio transport and utilizes Groq (llama-3.1-8b-instant) to synthesize answers from the retrieved documentation context.


Related MCP server: mcp-docs

Getting Started

1. Requirements

Ensure you have the following installed:

  • uv (Python package manager)

  • Python 3.10+

2. Environment Configuration

Create a .env file in the root directory and add your API keys:

SERPER_API_KEY=your_serper_api_key_here
GROQ_API_KEY=your_groq_api_key_here

Usage

Run the Client Demonstration

The client starts the MCP server as a subprocess, calls the get_docs tool for a query, and feeds the context to Groq to generate a final answer:

uv run client.py

Run the MCP Server directly

To run the stdio server standalone:

uv run mcp_server.py

Debugging with the MCP Inspector

You can inspect the server, list tools, and execute them using the interactive MCP Inspector:

npx @modelcontextprotocol/inspector uv run mcp_server.py

Claude Desktop Integration

To make this server's tool available to your Claude Desktop client, edit your configuration file:

  • Path: ~/Library/Application Support/Claude/claude_desktop_config.json

Add the following to the mcpServers object:

{
  "mcpServers": {
    "docs-search": {
      "command": "uv",
      "args": [
        "--directory",
        "/Users/roystondsouza/Desktop/mcp-server",
        "run",
        "mcp_server.py"
      ],
      "env": {
        "SERPER_API_KEY": "your_serper_api_key_here",
        "GROQ_API_KEY": "your_groq_api_key_here"
      }
    }
  }
}

Note: Replace your_serper_api_key_here and your_groq_api_key_here with your actual API keys, or ensure your local environment contains them.


Project Structure

  • mcp_server.py: The MCP server implementation exposing the get_docs tool.

  • client.py: The client script that initializes the stdio session, executes the tool, and queries Groq.

  • utils.py: Contains HTML text extraction and LLM interaction helpers.

Available Tools

1 tool
get_docsA

Search the latest docs for a given library and query Supports "langchain", "chromadb", "openai", "uv", "docker", "redis"

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe query for search for (Eg: "How to create a docker container")
libraryYesthe library to search in (Eg: "docker")

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits such as read-only nature or auth requirements. It does not; it only restates the basic search functionality. The agent gets no insight into side effects or constraints.

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

Conciseness5/5

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

Two sentences, each essential: first states purpose, second lists supported libraries. No wasted words, efficiently front-loaded.

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

Completeness3/5

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

Given the presence of an output schema, the description doesn't need to explain return values. However, it lacks behavioral context (e.g., read-only, auth) and doesn't mention pagination or result limits. Adequate but with gaps.

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

Parameters4/5

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

Schema coverage is 100% with clear descriptions, but the tool description adds the explicit list of supported libraries, which is not an enum in the schema. This provides extra guidance beyond the schema, earning a slightly higher score.

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 it searches docs for a given library and query, with a specific verb 'search' and resource 'docs'. It also lists supported libraries, distinguishing it from any potential siblings.

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

Usage Guidelines3/5

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

No sibling tools exist, so the description doesn't need to distinguish. However, it provides no explicit guidance on when to use or not use this tool, nor mentions any prerequisites or context.

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. 1 tool updatev0.1.0
    • First observedget_docs

TDQS

A3.6/5.0
Disambiguation5/5

With only one tool, there is no possibility of confusion with other tools. The single tool has a clearly defined purpose.

Naming Consistency5/5

There is only one tool, so naming consistency is not an issue. The name 'get_docs' follows a clear verb_noun pattern.

Tool Count2/5

A single tool for a server that claims to support multiple libraries (langchain, chromadb, etc.) is too few. Agents may need separate tools for different libraries or operations beyond search.

Completeness2/5

The server provides only a search function for docs. Missing essential operations like retrieving specific documents, listing available libraries, or fetching versioned docs, which limits agent capability.

Maintenance

ActivitySlowing
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

  • F
    license
    Not graded
    quality
    D
    maintenance
    An intelligent MCP server that enables AI agents to crawl, index, and semantically search official framework documentation using local RAG. It prevents hallucinations by providing precise, up-to-date documentation excerpts directly into the AI's context window.
    1
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Generic MCP server that exposes Markdown documentation to LLMs, enabling them to search and answer questions about any software documentation.
    MIT

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/roystondz/mcp-server'

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