mcpField
M
MCP Documentation Search Server

MCP Documentation Search Server

Local
github.com/PicardRaphaelMemory & Knowledge13Updated 84w ago

About MCP Documentation Search Server

MCP Documentation Search Server lets AI systems search documentation for supported frameworks and libraries through one interface. It resolves library name variants and uses asynchronous, parallel fetching with DuckDuckGo search.

Key features

  1. 01Search six framework and library docs
  2. 02Resolve library name aliases
  3. 03DuckDuckGo-powered site-specific search
  4. 04Asynchronous parallel content fetching
  5. 05Validate inputs and handle request errors

Use cases

  1. 01Find Next.js API guidance
  2. 02Look up Tailwind CSS usage
  3. 03Search LangChain or Framer Motion docs

MCP support

Exposes documentation search through a FastMCP tool for MCP clients.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

No install method listed yet

We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.

Repository

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

MCP Documentation Search Server

A powerful documentation search server built with FastMCP, enabling AI systems to intelligently search across multiple popular framework and library documentations. This tool ensures that AI models can quickly access and retrieve relevant information from various documentation sources using a unified interface.

🌟 Features

  • 📚 Multi-Library Support: Search documentation across multiple libraries:

  • 🔍 Intelligent Search

    • Smart name resolution for library variations
    • DuckDuckGo-powered search for accurate results
    • Site-specific search targeting
  • ⚡ Performance Features

    • Asynchronous processing
    • Efficient web request handling
    • Parallel content fetching
  • 🛡️ Robust Error Handling

    • Network timeout management
    • Invalid input validation
    • HTTP error handling
    • Request failure recovery

📋 Requirements

  • Python 3.8+
  • pip or uv package manager
  • Virtual environment (recommended)

🚀 Quick Start

  1. Clone the Repository
git clone <repository-url>
cd mcp-server
  1. Set Up Virtual Environment
python -m venv .venv
# On Windows:
.venv\Scripts\activate
# On Unix or MacOS:
source .venv/bin/activate
  1. Install Dependencies
pip install -r requirements.txt
  1. Run the Server
python main.py

💻 Usage

Basic Usage
from main import get_docs

# Search Framer Motion documentation
result = await get_docs(
    query="how to animate on scroll",
    library="framer-motion"
)

# Search Next.js documentation
result = await get_docs(
    query="how to use app router",
    library="next"
)
Library Name Variations

The system intelligently handles various library name formats:

# All these calls will work the same way
await get_docs(query="animations", library="framer")
await get_docs(query="animations", library="framermotion")
await get_docs(query="animations", library="framer-motion")
await get_docs(query="animations", library="motion")

🧪 Testing

The project includes a comprehensive test suite to ensure reliability and correctness. Tests are organized into three main categories:

Test Structure
  • Unit Tests: Test individual components in isolation

    • test_utils.py: Tests for library name normalization and URL retrieval
    • test_services.py: Tests for web search and content fetching services
  • Integration Tests: Test how components work together

    • test_main.py: Tests for the main API function get_docs
Running Tests

To run all tests:

python -m pytest

To run specific test modules:

python -m pytest tests/test_utils.py
python -m pytest tests/test_services.py
python -m pytest tests/test_main.py

To run tests with verbose output:

python -m pytest -v
Test Coverage

The tests cover:

  • ✅ Library name normalization and validation
  • ✅ URL retrieval for different libraries
  • ✅ Web search functionality
  • ✅ Content fetching and error handling
  • ✅ Documentation search integration
  • ✅ API input validation and error handling
  • ✅ Alias resolution for different library name formats
Asynchronous Testing

The project uses a custom run_async helper function to test asynchronous code in a synchronous test environment. This approach allows for testing async functions without requiring complex test setup.

🏗️ Project Structure

mcp-server/
├── main.py          # Entry point and FastMCP tool definition
├── config.py        # Configuration settings and constants
├── services.py      # Web search and content fetching services
├── utils.py         # Utility functions for library name handling
├── tests/           # Test suite
│   ├── test_utils.py    # Tests for utility functions
│   ├── test_services.py # Tests for web services
│   ├── test_main.py     # Tests for main API
│   └── conftest.py      # Pytest configuration
├── requirements.txt # Project dependencies
└── README.md        # Documentation

🔧 Configuration

Supported Libraries

To add a new library:

  1. Add the documentation URL in config.py:
DOCS_URLS = {
    "new-library": "https://docs.new-library.com",
    # ... existing entries
}
  1. Add common aliases:
LIBRARY_ALIASES = {
    "new-lib": "new-library",
    # ... existing entries
}
HTTP Settings

Modify in config.py:

HTTP_TIMEOUT = 30.0        # Timeout in seconds
MAX_SEARCH_RESULTS = 2     # Number of search results to fetch

🤝 Contributing

We welcome contributions! Here's how you can help:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests for new functionality
  5. Ensure all tests pass
  6. Submit a pull request
Adding New Libraries
  1. Update DOCS_URLS in config.py
  2. Add relevant aliases in LIBRARY_ALIASES
  3. Test the integration
  4. Update documentation
  5. Submit a pull request

🐛 Troubleshooting

Common issues and solutions:

  • TimeoutError: Increase HTTP_TIMEOUT in config.py
  • No Results: Try different search terms or verify the library name
  • HTTP Errors: Check your internet connection and the documentation URL

📄 License

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

🙏 Acknowledgments

  • FastMCP for the core functionality
  • DuckDuckGo for search capabilities
  • pytest for testing framework
  • All supported documentation providers

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.