Skip to main content
Glama

DocNav MCP Server

License Python 3.10+

DocNav is a Model Context Protocol (MCP) server which empowers LLM Agents to read, analyze, and manage lengthy documents intelligently, mimicking human-like comprehension and navigation capabilities.

Features

  • Document Navigation: Navigate through document sections, headings, and content structure

  • Content Extraction: Extract and summarize specific document sections

  • Search & Query: Find specific content within documents using intelligent search

  • Multi-format Support: Currently supports Markdown (.md) files, with planned support for PDF and other formats

  • MCP Integration: Seamless integration with MCP-compatible LLMs and applications

Related MCP server: Zileo Docs

Architecture

DocNav follows a modular, extensible architecture:

  • Core MCP Server: Main server implementation using the MCP protocol

  • Document Processors: Pluggable processors for different file types

  • Navigation Engine: Handles document structure analysis and navigation

  • Content Extractors: Extract and format content from documents

  • Search Engine: Provides search and query capabilities across documents

Installation

Prerequisites

  • Python 3.10+

  • uv package manager

Setup

  1. Clone the repository:

git clone https://github.com/shenyimings/DocNav-MCP.git
cd DocNav-MCP
  1. Install dependencies:

uv sync

Usage

Starting the MCP Server

uv run server.py

Connect to the MCP server

{
  "mcpServers": {
    "docnav": {
      "command": "{{PATH_TO_UV}}", // Run `which uv` and place the output here
      "args": [
        "--directory",
        "{{PATH_TO_SRC}}",
        "run",
        "server.py"
      ]
    }
  }
}

Available Tools

  • load_document: Load a document for navigation and analysis

    • Args: file_path (path to document file)

    • Returns: Success message with auto-generated document ID

  • get_outline: Get document outline/table of contents

    • Args: doc_id (document identifier), max_depth (max heading depth, default 3)

    • Returns: Formatted document outline

    • Tip: Use first after loading a document to understand structure

  • read_section: Read content of a specific document section

    • Args: doc_id (document identifier), section_id (e.g., 'h1_0', 'h2_1')

    • Returns: Section content with subsections

  • search_document: Search for specific content within a document

    • Args: doc_id (document identifier), query (search term or phrase)

    • Returns: Formatted search results with context

  • navigate_section: Get navigation context for a section

    • Args: doc_id (document identifier), section_id (section to navigate to)

    • Returns: Navigation context with parent, siblings, children

  • list_documents: List all currently loaded documents

    • Returns: List of loaded documents with metadata

  • get_document_stats: Get statistics about a loaded document

    • Args: doc_id (document identifier)

    • Returns: Document statistics and structure info

  • remove_document: Remove a document from the navigator

    • Args: doc_id (document identifier)

    • Returns: Success or error message

Example Usage

# Load a document
result = await tools.load_document("path/to/document.md")

# Get document outline
outline = await tools.get_outline(doc_id)

# Get specific section content
section = await tools.read_section(doc_id, section_id)

# Search within document
results = await tools.search_document(doc_id, "search query")

Development

Project Structure

docnav-mcp/
--- server.py             # Main MCP server
--- docnav/
------- __init__.py           # Package initialization
------- models.py             # Data models
------- navigator.py          # Document navigation engine
------- processors/
------- __init__.py       # Processor package
------- base.py           # Base processor interface
------- markdown.py       # Markdown processor
--- tests/
------- ...                   # Test files

Development Guidelines

See CLAUDE.md for detailed development guidelines including:

  • Code quality standards

  • Testing requirements

  • Package management with uv

  • Formatting and linting rules

Adding New Document Processors

  1. Create a new processor class inheriting from BaseProcessor

  2. Implement the required methods: can_process, process, extract_section, search

  3. Register the processor in the DocumentNavigator

  4. Add comprehensive tests

Running Tests

# Run all tests
uv run tests/run_tests.py

Code Quality

# Format code
uv run --frozen ruff format .

# Check linting
uv run --frozen ruff check .

# Type checking
uv run --frozen pyright

Roadmap

  • Complete Markdown processor implementation

  • Add PDF document support (PyMuPDF)

  • Improve test coverage and quality

  • Implement advanced search capabilities

  • Add document summarization features

  • Support for additional document formats (DOCX, TXT, etc.)

  • Performance optimizations for large documents

  • Caching mechanisms for frequently accessed documents

  • Add persistent storage for loaded documents

Contributing

  1. Fork the repository

  2. Create a feature branch

  3. Follow the development guidelines in CLAUDE.md

  4. Add tests for new functionality

  5. Submit a pull request

License

This project is licensed under the Apache-2.0 License - see the LICENSE file for details.

Support

For issues and questions:

  • Open an issue on GitHub

  • Check the documentation in CLAUDE.md

  • Review existing issues and discussions

Available Tools

8 tools
get_document_statsC

Get statistics about a loaded document.

Args:
    doc_id: Document identifier

Returns:
    Document statistics and structure info
ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves 'statistics and structure info,' but lacks details on what specific statistics are included, whether it's a read-only operation, potential errors (e.g., if the document isn't loaded), or performance considerations. This leaves significant gaps in understanding the tool's behavior beyond basic functionality.

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 appropriately sized and front-loaded: the first sentence clearly states the purpose, followed by structured 'Args' and 'Returns' sections. While efficient, the 'Returns' section is vague ('Document statistics and structure info'), and the overall text could be more informative without sacrificing brevity.

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 tool's low complexity (one parameter) and the presence of an output schema, the description is minimally adequate. It covers the basic purpose and parameters but lacks depth in usage guidelines and behavioral details. The output schema likely handles return values, so the description's vagueness there is acceptable, but overall completeness is limited.

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?

The description adds minimal meaning beyond the input schema: it defines 'doc_id' as 'Document identifier,' which is slightly more informative than the schema's 'Doc Id' title. However, with 0% schema description coverage and only one parameter, the baseline is high, and this small addition doesn't fully compensate for the lack of detail (e.g., format or source of the identifier).

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: 'Get statistics about a loaded document.' It specifies the verb ('Get') and resource ('loaded document'), making the function evident. However, it doesn't explicitly differentiate from siblings like 'get_outline' or 'list_documents,' which might provide overlapping or related information, so it falls short of a perfect score.

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

Usage Guidelines2/5

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

The description provides minimal guidance: it implies usage when statistics about a loaded document are needed, but offers no explicit advice on when to use this tool versus alternatives like 'list_documents' or 'search_document.' There's no mention of prerequisites (e.g., the document must be loaded first) or exclusions, leaving the agent to infer context from the tool name alone.

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

get_outlineA

Get document outline/table of contents.

Tips: First use this tool to understand document structure after you load a document.

Args:
    doc_id: Document identifier
    max_depth: Maximum heading depth to include, defaults to 3

Returns:
    Formatted document outline
ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYes
max_depthNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It states this is a read operation ('Get'), which is clear, but lacks details on permissions, rate limits, or error handling. The 'Tips' section adds some context about typical workflow, but behavioral traits like response format or potential failures are not disclosed beyond the basic return statement.

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?

The description is well-structured and front-loaded with the core purpose, followed by tips and parameter details. Every sentence adds value: the first states the action, the second provides usage guidance, and the last two clarify parameters and returns. No redundant or verbose content is present.

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 the tool's moderate complexity (2 parameters, no annotations, but has output schema), the description is largely complete. It covers purpose, usage, parameters, and returns, though behavioral aspects like error cases or performance are omitted. The output schema exists, so the description needn't detail return values, but more transparency on operations would enhance completeness.

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 description coverage is 0%, so the description must compensate. It explains 'doc_id' as 'Document identifier' and 'max_depth' as 'Maximum heading depth to include, defaults to 3', adding meaningful context beyond the schema's bare titles. However, it doesn't specify format for 'doc_id' (e.g., string pattern) or constraints for 'max_depth' (e.g., valid range), leaving some gaps.

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 verb 'Get' and resource 'document outline/table of contents', making the purpose specific and unambiguous. It distinguishes this tool from siblings like 'get_document_stats' or 'read_section' by focusing on structural metadata rather than content or statistics.

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 with 'Tips: First use this tool to understand document structure after you load a document.' This tells the agent when to use it (after loading) and implies it's for initial exploration rather than content reading, distinguishing it from alternatives like 'navigate_section' or 'read_section'.

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

list_documentsA

List all currently loaded documents.

Returns:
    List of loaded documents with their metadata
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/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 of behavioral disclosure. It mentions that it returns 'List of loaded documents with their metadata', which adds some context about the output. However, it doesn't describe important behavioral aspects like whether this is a read-only operation, if it requires specific permissions, or if there are rate limits. The description provides basic output information but lacks comprehensive behavioral details.

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?

The description is extremely concise and well-structured. It uses just two sentences: one stating the purpose and one describing the return value. Every word earns its place with no wasted text, and the information is front-loaded with the core purpose stated first.

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 that the tool has 0 parameters, 100% schema coverage, and an output schema exists, the description is reasonably complete. It explains what the tool does and what it returns, which is sufficient for a simple list operation. However, it could benefit from more behavioral context (like whether it's safe to call frequently) since no annotations are provided.

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?

The tool has 0 parameters, and the input schema has 100% description coverage (though empty). The description doesn't need to explain any parameters, which is appropriate. Since there are no parameters to document, the description correctly focuses on the tool's function and output rather than parameter details.

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: 'List all currently loaded documents.' This specifies the verb ('List') and resource ('currently loaded documents'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'get_document_stats' or 'search_document', which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'get_document_stats' (for statistics) and 'search_document' (for searching), there's no indication of when 'list_documents' is appropriate versus these other options. The description only states what it does, not when to use it.

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

load_documentB

Load a document for navigation and analysis.

Args:
    file_path: Path to the document file

Returns:
    Success message with auto-generated document ID
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool loads a document and returns a success message with an auto-generated ID, which implies a write operation (creating/registering a document). However, it lacks critical details: whether this requires specific permissions, if the document becomes available for other tools, what happens on duplicate loads, or any rate limits. The return format is mentioned but not elaborated.

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 appropriately concise and structured: a purpose statement followed by 'Args' and 'Returns' sections. Every sentence adds value, with no redundant information. It could be slightly more front-loaded by integrating the return info into the main description, but it's efficient overall.

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 tool's moderate complexity (a write operation with 1 parameter) and the presence of an output schema (which handles return values), the description is minimally adequate. It covers purpose and basic parameter semantics but lacks behavioral details (e.g., side effects, error conditions) and usage guidelines, leaving gaps for the agent to navigate sibling tools effectively.

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?

The description adds meaningful context for the single parameter 'file_path' by specifying it's a 'Path to the document file,' which clarifies its role beyond the schema's generic 'File Path' title. With 0% schema description coverage, this compensates well, though it doesn't detail format constraints (e.g., absolute vs. relative paths, supported file types).

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: 'Load a document for navigation and analysis.' It specifies the verb 'load' and resource 'document' with the intended use cases. However, it doesn't explicitly differentiate from siblings like 'list_documents' or 'read_section', which would require more specific scope definition.

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

Usage Guidelines2/5

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

The description provides minimal usage guidance. It mentions 'navigation and analysis' as contexts, but offers no explicit when-to-use rules, alternatives (e.g., vs. 'read_section' or 'list_documents'), or prerequisites. The agent must infer usage from the purpose statement alone.

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

read_sectionA

Read content of a specific document section.

Args:
    doc_id: Document identifier
    section_id: Section ID from outline (e.g., 'h1_0', 'h2_1')

Returns:
    Section content with subsections
ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYes
section_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses that the tool reads content (implying a read-only operation) and returns section content with subsections, which adds useful behavioral context. However, it doesn't mention potential errors (e.g., invalid IDs), permissions, or rate limits, leaving gaps for a tool with no annotation coverage.

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?

The description is appropriately sized and front-loaded, starting with the core purpose in the first sentence. The 'Args' and 'Returns' sections are structured efficiently, with each sentence adding clear value without unnecessary details or repetition.

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 the tool's moderate complexity (2 required parameters) and the presence of an output schema (which handles return values), the description is mostly complete. It covers purpose, parameters, and return behavior, but lacks details on error handling or usage constraints, which could be beneficial despite the output schema.

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

Parameters5/5

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

The description adds significant meaning beyond the input schema, which has 0% description coverage. It explains that 'doc_id' is a 'Document identifier' and 'section_id' is a 'Section ID from outline' with examples (e.g., 'h1_0', 'h2_1'), clarifying the format and purpose of both parameters that the schema alone does not provide.

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 specific action ('Read content') and resource ('specific document section'), distinguishing it from siblings like 'get_outline' (structure) and 'load_document' (full document). It precisely defines what the tool does without being vague or tautological.

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?

The description implies usage by specifying it reads 'a specific document section', suggesting it should be used when you need content from a particular section rather than the whole document. However, it doesn't explicitly state when to use this tool versus alternatives like 'load_document' or 'navigate_section', nor does it mention prerequisites or exclusions.

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

remove_documentC

Remove a document from the navigator.

Args:
    doc_id: Document identifier (UUID)

Returns:
    Success or error message
ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Remove' implies a destructive operation, the description doesn't clarify if this is permanent deletion, reversible removal, or what happens to related data. No information about permissions, side effects, or error conditions beyond the generic 'error message' mention.

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 appropriately concise with clear sections (purpose, args, returns). The purpose statement is front-loaded, though the Args/Returns formatting could be more integrated. No wasted sentences, but the structure is somewhat mechanical rather than flowing naturally.

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 this is a destructive operation with no annotations, 0% schema coverage, but has an output schema, the description is minimally adequate. It explains what the tool does and the parameter format, but lacks crucial context about the removal's nature, permissions needed, or relationship to other document operations. The output schema existence reduces need to detail return values.

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?

The description adds minimal parameter semantics beyond the schema. It specifies 'doc_id' is a 'Document identifier (UUID)', which provides format information not in the schema (0% coverage). However, it doesn't explain where to obtain this ID, validate it, or provide examples. Baseline 3 is appropriate given schema coverage is 0% but description adds some value.

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 action ('Remove') and resource ('document from the navigator'), providing specific verb+resource pairing. However, it doesn't differentiate from potential siblings like 'delete_document' or explain what distinguishes 'remove' from other operations in this context.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives. The description doesn't mention prerequisites, consequences, or relationships to sibling tools like 'list_documents' or 'load_document' that might be used before or after removal.

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

search_documentC

Search for specific content within a document.

Args:
    doc_id: Document identifier
    query: Search term or phrase

Returns:
    Formatted search results with context
ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYes
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but provides minimal behavioral information. It mentions 'Formatted search results with context' which gives some output expectation, but doesn't disclose important behavioral traits like whether this is a read-only operation, performance characteristics, authentication needs, rate limits, or what happens with invalid inputs. The description doesn't contradict annotations (none exist).

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 appropriately sized and well-structured with clear sections (Args, Returns). The purpose is stated upfront, and each section adds value. However, the 'Args' and 'Returns' headings are somewhat redundant since the schema already defines parameters and there's an output schema, making the structure slightly less efficient than it could be.

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 2 parameters with 0% schema coverage but an output schema exists, the description provides basic parameter semantics and output expectations. However, for a search tool with no annotations, it should ideally explain more about search behavior (case sensitivity, partial matching, performance implications) and relationship to sibling tools. The existence of an output schema reduces the need to detail return values, but behavioral context remains sparse.

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 0%, but the description adds basic semantic meaning for both parameters: 'doc_id: Document identifier' and 'query: Search term or phrase'. This compensates somewhat for the lack of schema descriptions, though it doesn't provide format details, constraints, or examples. With 2 parameters and no schema descriptions, this provides baseline compensation.

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 with 'Search for specific content within a document' - a specific verb ('Search') and resource ('content within a document'). It distinguishes from siblings like 'list_documents' (which lists documents) and 'read_section' (which reads a specific section), but doesn't explicitly differentiate from all siblings like 'navigate_section' which might also involve document navigation.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives is provided. The description doesn't mention when search is appropriate versus using 'read_section' for direct reading, 'navigate_section' for structural navigation, or 'list_documents' for finding documents. There's no context about prerequisites or limitations.

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. 8 tool updates
    • First observedget_document_stats
    • First observedget_outline
    • First observedlist_documents
    • First observedload_document
    • First observednavigate_section
    • First observedread_section
    • First observedremove_document
    • First observedsearch_document

TDQS

A3.7/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: list_documents enumerates loaded docs, load_document/remove_document manage the document lifecycle, get_outline provides structure, navigate_section gives context, read_section extracts content, search_document finds text, and get_document_stats offers metadata. An agent can easily differentiate them based on their specific actions and targets.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case, such as list_documents, load_document, get_outline, and navigate_section. This uniformity makes the tool set predictable and easy to understand, with no deviations in naming conventions across the eight tools.

Tool Count5/5

With 8 tools, this server is well-scoped for document navigation and analysis, covering core operations like loading, listing, navigating, reading, searching, and removing documents, along with metadata and outline retrieval. Each tool earns its place without redundancy, making the count ideal for the domain.

Completeness5/5

The tool set provides complete CRUD/lifecycle coverage for document navigation: load_document (create), list_documents (read), remove_document (delete), and operations for analysis (get_outline, navigate_section, read_section, search_document, get_document_stats). There are no obvious gaps, ensuring agents can perform all essential tasks without dead ends.

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

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to search, deep-read, and build knowledge bases from Markdown, PDF, DOCX, and PPTX documents via MCP tools for retrieval, document navigation, and ingestion.
    50
    627
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for indexing, semantic search, and generation of multi-format documents. Exposes 13 tools over JSON-RPC 2.0 so an LLM can search your local PDF, Excel, and Word files, and create or edit Excel and Word documents.
    AGPL 3.0

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/shenyimings/DocNav-MCP'

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