Skip to main content
Glama
little2512

Word Document Reader MCP Server

by little2512

Word Document Reader MCP Server

A powerful Word document reading MCP server with table extraction, image OCR analysis, large document optimization, and intelligent caching.

๐Ÿš€ Core Features

1. Document Content Extraction

  • โœ… Word document (.docx/.doc) text extraction

  • โœ… Support for mixed Chinese-English documents

  • โœ… Preserve original formatting and structure

2. Table Extraction

  • โœ… Automatically identify and extract tables from Word documents

  • โœ… Convert to structured data format

  • โœ… Preserve table row/column structure information

  • โœ… Support complex table parsing

3. Image OCR Analysis

  • โœ… Extract embedded images from Word documents

  • โœ… High-precision OCR recognition using Tesseract.js v5

  • โœ… Support mixed Chinese-English text recognition (95%+ accuracy)

  • โœ… Intelligent image preprocessing for better recognition

  • โœ… Support multiple image formats (JPG, PNG, GIF, BMP, WebP)

4. Large Document Optimization

  • โœ… Automatic detection of large documents (>10MB or >100 pages)

  • โœ… Worker thread parallel processing, utilizing multi-core CPUs

  • โœ… Chunked processing to avoid memory overflow

  • โœ… 60%+ speed improvement

5. Intelligent Caching System

  • โœ… File system persistent caching

  • โœ… Smart cache invalidation based on file modification time

  • โœ… Cache statistics and management support

  • โœ… 90%+ speed improvement for repeated document processing

  • โœ… Millisecond-level search with inverted index

  • โœ… Intelligent Chinese-English word segmentation

  • โœ… Relevance scoring and sorting

  • โœ… Support document type filtering

Related MCP server: Document Reader MCP Server

๐Ÿ“ฆ Installation and Usage

1. Install Dependencies

npm install

2. Start Server

# Start full-featured version
npm start

# Or start basic version (without advanced features)
npm run start:basic

3. Run Tests

# Run all tests
npm test

# Run tests in watch mode
npm run test:watch

# Generate test coverage report
npm run test:coverage

read_word_document

Read and analyze Word documents

{
  "name": "read_word_document",
  "arguments": {
    "filePath": "path/to/document.docx",
    "memoryKey": "my-document",
    "documentType": "api-doc",
    "extractTables": true,
    "extractImages": true,
    "useCache": true,
    "outputDir": "./output"
  }
}

search_documents

Full-text index search

{
  "name": "search_documents",
  "arguments": {
    "query": "search keywords",
    "documentType": "api-doc",
    "limit": 10
  }
}

get_cache_stats

Get cache statistics

{
  "name": "get_cache_stats"
}

clear_cache

Clear cache

{
  "name": "clear_cache",
  "arguments": {
    "type": "all"  // "all", "document", "index"
  }
}

list_stored_documents

List stored documents

{
  "name": "list_stored_documents",
  "arguments": {
    "documentType": "api-doc"
  }
}

get_stored_document

Get specific document content

{
  "name": "get_stored_document",
  "arguments": {
    "memoryKey": "document-key"
  }
}

clear_memory

Clear memory content

{
  "name": "clear_memory",
  "arguments": {
    "memoryKey": "specific-key"  // Optional, clear all if not provided
  }
}

๐Ÿ“ Project Structure

word-doc-mcp/
โ”œโ”€โ”€ server.js              # Main server file (with all features)
โ”œโ”€โ”€ server-basic.js        # Basic server (compatibility)
โ”œโ”€โ”€ package.json           # Project configuration and dependencies
โ”œโ”€โ”€ config.json           # Server configuration file
โ”œโ”€โ”€ tests/                # Test directory
โ”‚   โ”œโ”€โ”€ setup.js          # Test environment setup
โ”‚   โ”œโ”€โ”€ unit/             # Unit tests
โ”‚   โ”‚   โ””โ”€โ”€ services/     # Service layer tests
โ”‚   โ”œโ”€โ”€ integration/      # Integration tests
โ”‚   โ”‚   โ”œโ”€โ”€ tools/        # Tool tests
โ”‚   โ”‚   โ””โ”€โ”€ cache/        # Cache tests
โ”‚   โ””โ”€โ”€ fixtures/         # Test data
โ”‚       โ”œโ”€โ”€ documents/    # Test documents
โ”‚       โ””โ”€โ”€ mock-data.js  # Mock data
โ”œโ”€โ”€ .cache/               # Cache directory (auto-created)
โ”œโ”€โ”€ output/               # Output directory (auto-created)
โ””โ”€โ”€ node_modules/         # Dependencies

โš™๏ธ Configuration

Edit the config.json file to customize server behavior:

{
  "processing": {
    "maxFileSize": 10485760,
    "maxPages": 100,
    "chunkSize": 1048576,
    "parallelProcessing": true
  },
  "cache": {
    "enabled": true,
    "defaultTTL": 3600,
    "cacheDirectory": "./.cache"
  },
  "ocr": {
    "enabled": true,
    "languages": ["chi_sim", "eng"]
  }
}

๐Ÿงช Testing

Test Framework

Using Node.js built-in test framework, following these standards:

  • Unit Tests: Test individual components and functions

  • Integration Tests: Test interactions between tools

  • End-to-End Tests: Test complete workflows

Running Tests

# Run all tests
npm test

# Run specific test file
node --test tests/unit/services/DocumentIndexer.test.js

# Run integration tests
node --test tests/integration/

# Generate coverage report
npm run test:coverage

Test Coverage

  • โœ… Functional tests for all MCP tools

  • โœ… Complete cache system tests

  • โœ… Error handling and edge cases

  • โœ… Performance and concurrency tests

  • โœ… End-to-end workflow tests

๐Ÿ“Š Performance Metrics

  • Large Document Processing: 60%+ speed improvement (parallel processing)

  • Repeated Document Processing: 90%+ speed improvement (caching)

  • OCR Recognition Accuracy: 95%+ (image preprocessing)

  • Memory Usage Optimization: 40% reduction (streaming processing)

  • Search Response Time: <100ms (full-text index)

๐Ÿ›ก๏ธ Security Considerations

  • Input file size limits

  • File type validation

  • Cache data isolation

  • Error handling and logging

  • Automatic temporary file cleanup

๐Ÿ”„ Version Compatibility

Backward Compatibility

  • โœ… Maintain full compatibility with original API

  • โœ… Existing tool functionality unchanged

  • โœ… Optional configuration with reasonable defaults

  • โœ… Provide basic version to ensure compatibility

System Requirements

Minimum Requirements:

  • Node.js 16+

  • 4GB RAM

  • 1GB disk space

Recommended Configuration:

  • Node.js 18+

  • 8GB+ RAM

  • Multi-core CPU

  • SSD storage

๐Ÿ› Troubleshooting

Common Issues

  1. Module Installation Failure

    npm cache clean --force
    npm install
  2. OCR Recognition Failure

    • Ensure sufficient memory (8GB+ recommended)

    • Check supported image formats

    • Review error logs

  3. Slow Large Document Processing

    • Enable parallel processing

    • Adjust chunkSize configuration

    • Use SSD storage

  4. Memory Insufficient

    node --max-old-space-size=4096 server.js

๐Ÿ“ Changelog

v2.0.0

  • โœ… Add table extraction functionality

  • โœ… Add image OCR analysis

  • โœ… Implement large document parallel processing

  • โœ… Add intelligent caching system

  • โœ… Implement full-text index search

  • โœ… Complete testing framework

v1.0.0

  • โœ… Basic Word document reading

  • โœ… Memory storage management

  • โœ… Simple search functionality

๐Ÿค Contributing

Issues and Pull Requests are welcome!

Development Guidelines

  1. Fork the project

  2. Create feature branch

  3. Write test cases

  4. Ensure all tests pass

  5. Submit Pull Request

๐Ÿ“„ License

MIT License


Quick Start: npm install && npm start

Available Tools

7 tools
clear_cacheC

ๆธ…็ฉบๆ‰€ๆœ‰็ผ“ๅญ˜

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoๆธ…้™ค็ฑปๅž‹๏ผšall, document, indexall

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. 'ๆธ…็ฉบๆ‰€ๆœ‰็ผ“ๅญ˜' implies a destructive operation that removes cached data, but it doesn't specify what types of data are affected, whether this requires special permissions, if the operation is reversible, what side effects might occur, or what happens after execution. For a potentially destructive tool, this is insufficient behavioral context.

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 - just four Chinese characters that directly convey the core function. There's zero wasted language or unnecessary elaboration. It's front-loaded with the essential information in the most compact form possible.

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

Completeness2/5

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

For a cache-clearing operation with no annotations and no output schema, the description is incomplete. It doesn't address important contextual questions: What does 'cache' refer to in this system? What are the consequences of clearing it? Are there different cache types? What confirmation or result should be expected? The single sentence leaves too many practical questions unanswered.

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 mentions 'all cache' which implies comprehensive clearing, but the input schema shows a 'type' parameter with three options (all, document, index). The description doesn't explain these options or their differences. With 100% schema description coverage, the baseline is 3, but the description adds minimal value beyond what's already in the schema.

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 'ๆธ…็ฉบๆ‰€ๆœ‰็ผ“ๅญ˜' (Clear all cache) clearly states the action (clear) and target (cache), making the purpose immediately understandable. It doesn't specifically distinguish from sibling tools like 'clear_memory' or 'get_cache_stats', but the verb+resource combination is unambiguous for what this tool does.

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. There's no mention of when this operation is appropriate, what prerequisites might exist, or how it differs from sibling tools like 'clear_memory' or 'get_cache_stats'. The user must infer usage from the name alone.

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

clear_memoryC

ๆธ…้™คๆŒ‡ๅฎš็š„ๅ†…ๅญ˜ๅ†…ๅฎน

ParametersJSON Schema
NameRequiredDescriptionDefault
memoryKeyNo่ฆๆธ…้™ค็š„ๅ†…ๅญ˜้”ฎๅ๏ผŒๅฆ‚ๆžœไธๆไพ›ๅˆ™ๆธ…้™คๆ‰€ๆœ‰

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. 'ๆธ…้™ค' (clear) implies a destructive operation, but the description doesn't specify whether this is reversible, what permissions are required, whether it affects system performance, or what happens when memoryKey is omitted. The description mentions the optional parameter behavior but lacks critical behavioral context.

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 - a single Chinese phrase that directly states the tool's function. There's zero wasted language, and it's front-loaded with the core action. This is appropriate conciseness for a simple tool.

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

Completeness2/5

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

For a destructive tool with no annotations and no output schema, the description is insufficient. It doesn't explain what 'memory' means in this context, what gets cleared, whether the operation is safe/reversible, what happens when all memory is cleared, or what the tool returns. Given the complexity of a memory-clearing operation, more context is needed.

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 implies parameter semantics by mentioning 'ๆŒ‡ๅฎš็š„' (specified), which aligns with the optional memoryKey parameter. With 100% schema description coverage and only one parameter, the description adds minimal but appropriate context about the parameter's purpose without duplicating schema information.

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

Purpose3/5

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

The description 'ๆธ…้™คๆŒ‡ๅฎš็š„ๅ†…ๅญ˜ๅ†…ๅฎน' (Clear specified memory content) states the verb (clear) and resource (memory content), but it's vague about what 'memory content' means in this context. It doesn't distinguish this tool from sibling tools like 'clear_cache' or explain what type of memory is being cleared.

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 like 'clear_cache' or other sibling tools. There's no mention of prerequisites, typical use cases, or when this tool would be preferred over other memory/cache management tools.

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

get_cache_statsB

่Žทๅ–็ผ“ๅญ˜็ปŸ่ฎกไฟกๆฏ

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 the full burden of behavioral disclosure. It states the action ('get') but doesn't add any context about what the statistics include, whether it's a read-only operation, performance implications, or rate limits. This leaves significant gaps for a tool that likely provides system-level data.

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 a single, efficient sentence in Chinese ('่Žทๅ–็ผ“ๅญ˜็ปŸ่ฎกไฟกๆฏ') that directly states the purpose without any wasted words. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the cache statistics include (e.g., hit rates, memory usage), the format of the return value, or any behavioral traits. For a tool that likely provides detailed system data, this leaves too much unspecified.

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 with 100% schema description coverage, so the schema fully documents the absence of inputs. The description doesn't need to add parameter details, and it correctly implies no inputs are required, earning a high baseline score.

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 '่Žทๅ–็ผ“ๅญ˜็ปŸ่ฎกไฟกๆฏ' (Get cache statistics) clearly states the verb 'get' and the resource 'cache statistics', providing a specific purpose. However, it doesn't differentiate from sibling tools like 'clear_cache' or 'get_stored_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 like 'clear_cache' or 'get_stored_document'. There's no mention of context, prerequisites, or exclusions, leaving the agent with minimal usage direction.

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

get_stored_documentC

่Žทๅ–ๅทฒๅญ˜ๅ‚จ็š„ๆ–‡ๆกฃๅ†…ๅฎน

ParametersJSON Schema
NameRequiredDescriptionDefault
memoryKeyYes่ฆ่Žทๅ–็š„ๆ–‡ๆกฃๅ†…ๅญ˜้”ฎๅ

TDQS

C2.6/5.0
Behavior2/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 states the tool retrieves content but doesn't describe what happens if the document doesn't exist (e.g., errors), whether it requires authentication, rate limits, or the format of returned content. For a read operation with zero annotation coverage, this leaves significant gaps in understanding behavior.

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 a single, efficient sentence in Chinese that directly states the tool's purpose. It's appropriately sized and front-loaded with the core action. There's no wasted text, though it could be slightly more informative without losing conciseness.

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

Completeness2/5

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

Given the tool has no annotations and no output schema, the description is incomplete. It doesn't explain what 'stored' means in context (e.g., from a cache or database), what content is returned (e.g., text, binary), or error handling. For a tool with one parameter but rich behavioral unknowns, this minimal description is inadequate.

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 schema description coverage is 100%, with the single parameter 'memoryKey' documented as '่ฆ่Žทๅ–็š„ๆ–‡ๆกฃๅ†…ๅญ˜้”ฎๅ' (the memory key name of the document to retrieve). The description doesn't add any meaning beyond this, such as explaining what a 'memoryKey' represents or providing examples. Since the schema does the heavy lifting, the baseline score of 3 is appropriate.

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

Purpose3/5

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

The description states the tool's purpose as '่Žทๅ–ๅทฒๅญ˜ๅ‚จ็š„ๆ–‡ๆกฃๅ†…ๅฎน' (get stored document content), which clearly indicates it retrieves document content. However, it doesn't distinguish this from sibling tools like 'list_stored_documents' (which likely lists metadata) or 'read_word_document' (which may read from a different source). The verb+resource is clear but lacks sibling differentiation.

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. It doesn't mention prerequisites (e.g., needing a stored document), exclusions, or comparisons to siblings like 'search_documents' or 'read_word_document'. Without such context, the agent must infer usage from the name alone.

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

list_stored_documentsC

ๅˆ—ๅ‡บๆ‰€ๆœ‰ๅทฒๅญ˜ๅ‚จ็š„ๆ–‡ๆกฃ

ParametersJSON Schema
NameRequiredDescriptionDefault
documentTypeNo็ญ›้€‰็‰นๅฎš็ฑปๅž‹็š„ๆ–‡ๆกฃ

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. It mentions listing documents but doesn't describe pagination behavior, rate limits, authentication requirements, or what 'stored' means in this context. The description is too minimal to adequately inform the agent about how this tool behaves.

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 a single, efficient sentence that gets straight to the point with zero wasted words. It's perfectly concise and front-loaded with the core functionality.

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

Completeness2/5

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

For a list operation with no annotations and no output schema, the description is insufficient. It doesn't explain what information is returned about each document, whether results are paginated, or how 'documentType' filtering affects the output. The agent would need to guess about the tool's behavior and output format.

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 schema has 100% description coverage with a well-documented enum parameter. The description doesn't add any parameter information beyond what's in the schema, but since the schema already fully documents the single optional parameter, the baseline score of 3 is appropriate.

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 'ๅˆ—ๅ‡บๆ‰€ๆœ‰ๅทฒๅญ˜ๅ‚จ็š„ๆ–‡ๆกฃ' (List all stored documents) clearly states the verb (list) and resource (stored documents). It's specific about scope ('all'), but doesn't differentiate from sibling tools like 'search_documents' or 'get_stored_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 like 'search_documents' (for filtered searches) or 'get_stored_document' (for retrieving a single document). It simply states what the tool does without context about appropriate use cases.

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

read_word_documentC

ๅขžๅผบ็‰ˆWordๆ–‡ๆกฃ่ฏปๅ–ๅ™จ๏ผŒๆ”ฏๆŒ่กจๆ ผๆๅ–ใ€ๅ›พ็‰‡OCRๅˆ†ๆžๅ’Œ็ผ“ๅญ˜ไผ˜ๅŒ–

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesWordๆ–‡ๆกฃ็š„ๆ–‡ไปถ่ทฏๅพ„
memoryKeyNo็”จไบŽๅญ˜ๅ‚จ็š„ๅ†…ๅญ˜้”ฎๅ๏ผŒไพฟไบŽๅŽ็ปญๆฃ€็ดขdefault
documentTypeNoๆ–‡ๆกฃ็ฑปๅž‹common-doc
extractTablesNoๆ˜ฏๅฆๆๅ–่กจๆ ผ
extractImagesNoๆ˜ฏๅฆๆๅ–ๅ›พ็‰‡ๅนถ่ฟ›่กŒOCRๅˆ†ๆž
useCacheNoๆ˜ฏๅฆไฝฟ็”จ็ผ“ๅญ˜
outputDirNoๅ›พ็‰‡ๅ’Œไธดๆ—ถๆ–‡ไปถ่พ“ๅ‡บ็›ฎๅฝ•./output

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. It mentions 'cache optimization' but doesn't explain caching behavior (e.g., cache duration, invalidation). It doesn't disclose performance characteristics, error handling, or what 'enhanced' means operationally. The description adds some context about extraction capabilities but leaves critical behavioral traits unspecified.

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 a single, efficient sentence that front-loads the core purpose ('enhanced Word document reader') followed by key features. Every phrase adds value, though it could be slightly more structured by separating core function from optional capabilities.

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

Completeness2/5

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

For a 7-parameter tool with no annotations and no output schema, the description is insufficient. It doesn't explain what the tool returns (document content? structured data? metadata?), how extracted tables/images are formatted, or what 'memoryKey' storage enables. The agent lacks critical information about the tool's outputs and behavioral guarantees.

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 7 parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema - it doesn't explain relationships between parameters (e.g., how 'extractImages' interacts with 'outputDir') or provide usage examples. Baseline 3 is appropriate when 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 function as an 'enhanced Word document reader' with specific capabilities (table extraction, image OCR analysis, cache optimization). It distinguishes itself from basic readers by mentioning these advanced features, though it doesn't explicitly differentiate from sibling tools like 'get_stored_document' or 'search_documents' which might have overlapping functionality.

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. It doesn't mention when this enhanced reader is preferable over simpler tools, nor does it reference any sibling tools for comparison. The agent must infer usage from the feature list alone.

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

search_documentsC

ๅ…จๆ–‡็ดขๅผ•ๆœ็ดข๏ผŒๆ”ฏๆŒไธญ่‹ฑๆ–‡ๆททๅˆๆœ็ดข

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesๆœ็ดขๅ…ณ้”ฎ่ฏ
documentTypeNo้™ๅˆถๆœ็ดข็š„ๆ–‡ๆกฃ็ฑปๅž‹
limitNo่ฟ”ๅ›ž็ป“ๆžœๆ•ฐ้‡้™ๅˆถ

TDQS

C2.6/5.0
Behavior2/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 mentions 'full-text index search' and language support, but lacks critical behavioral details: it doesn't disclose whether this is a read-only operation, how results are returned (e.g., pagination, sorting), performance characteristics, or error handling. For a search tool with no annotations, this is inadequate.

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 very concise with a single sentence, which is efficient. However, it's under-specified rather than optimally conciseโ€”it could benefit from slightly more detail without becoming verbose. It's front-loaded but lacks depth.

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

Completeness2/5

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

Given the complexity of a search tool with 3 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., search results format), how to interpret outputs, or any limitations. This leaves significant gaps for an AI agent to use the tool effectively.

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 no parameter semantics beyond what the input schema provides. The schema has 100% description coverage, clearly documenting 'query', 'documentType', and 'limit' with enums and defaults. The description doesn't explain parameter interactions or provide additional context, so it meets the baseline of 3.

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

Purpose3/5

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

The description states the tool performs 'full-text index search' and supports 'Chinese-English mixed search', which provides a basic purpose. However, it doesn't specify what resource is being searched (documents, files, etc.) or distinguish it from sibling tools like 'list_stored_documents' or 'get_stored_document'. The purpose is somewhat vague about scope.

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. It doesn't mention when to prefer this over 'list_stored_documents' (which might list without search) or 'get_stored_document' (which retrieves a specific document), nor does it specify any prerequisites or exclusions for usage.

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. 7 tool updatesv1.0.0
    • Addedclear_cache
    • Addedclear_memory
    • Addedget_cache_stats
    • Addedget_stored_document
    • Addedlist_stored_documents
    • Addedread_word_document
    • Addedsearch_documents
  2. 7 tool updates
    • Removedclear_cache
    • Removedclear_memory
    • Removedget_cache_stats
    • Removedget_stored_document
    • Removedlist_stored_documents
    • Removedread_word_document
    • Removedsearch_documents
  3. 7 tool updates
    • First observedclear_cache
    • First observedclear_memory
    • First observedget_cache_stats
    • First observedget_stored_document
    • First observedlist_stored_documents
    • First observedread_word_document
    • First observedsearch_documents

TDQS

B3.2/5.0
Disambiguation4/5

Most tools have distinct purposes, but there is some potential overlap between 'clear_cache' and 'clear_memory' as both involve clearing operations, which could cause confusion without clear context in their descriptions. The other tools like 'read_word_document', 'search_documents', and document listing/storage tools are well-differentiated.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern with clear verb_noun structures (e.g., 'clear_cache', 'get_stored_document', 'list_stored_documents'), making them predictable and easy to understand. There are no deviations in naming conventions.

Tool Count5/5

With 7 tools, the server is well-scoped for a Word Document Reader, covering core operations like reading, searching, listing, storing, and cache management. Each tool appears to serve a specific and necessary function without being overly sparse or bloated.

Completeness4/5

The tool set covers key document handling workflows, including reading, searching, listing, and storage, with added cache management. A minor gap exists in document modification or deletion tools, but the core functionality for a reader is largely complete, allowing agents to perform essential tasks effectively.

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/little2512/word-doc-mcp'

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