DocReader is a powerful tool for reading and searching documents, built on the Model Context Protocol (MCP). It enables LLMs to search, extract, and synthesize information from web-based documents, assisting AI assistants in answering questions accordingly.
- Search for relevant pages across documentation websites
- Extract content from specific pages
- Aggregate and summarize discovered information
- Complete the document Q&A workflow in a single step
- Python 3.7 or higher
- fastmcp
- beautifulsoup4
- requests
- openai
- python-dotenv
-
Clone or download this repository.
-
Install the required dependencies:
pip install fastmcp beautifulsoup4 requests openai python-dotenv- Create a
.envfile and add your API key, preferably a NetMind API key:
API_KEY=your_api_key_here
cd path/to/DocReaderMCP
python DocReader.pycd path/to/DocReaderMCP
fastmcp run DocReader.py- In the Cursor interface, click the extensions/plugins icon in the left sidebar.
- Locate the MCP section or select "Add Tool".
- Choose "Add Local MCP Tool".
- Enter a tool name, such as "DocReader".
- Select the execution method (either point to the script path or connect via URL).
cd path/to/DocReaderMCP
fastmcp install DocReader.py --name "DocReader" --with beautifulsoup4 requests openai python-dotenvDocReader MCP provides the following tool functions:
- search_docs: Search documentation pages to find those most relevant to your query.
- extract_content: Extract content from a specified URL.
- summarize_findings: Summarize the information collected.
- read_doc: Complete the entire workflow—search, extraction, and summarization—in one step.
- Start by using
search_docsto find relevant pages on the documentation site. - Use
extract_contentto retrieve content from the most relevant pages. - Summarize your findings with
summarize_findings. - Alternatively, use
read_docto perform all these steps at once.
See test_doc_reader.py for more examples of how to use each tool function.
A brief example:
from DocReader import search_docs, extract_content, summarize_findings, read_doc
doc_url = "https://flax.readthedocs.io/en/latest/index.html"
query = "How do I train a model with flax? Please help me write the training code and the inference code after training."
# 1. Search for relevant pages
results = search_docs(doc_url, query, depth=2, max_results=3)
# 2. Extract content
if results:
page_content = extract_content(results[0]['url'], query)
# 3. Summarize findings
summary = summarize_findings(query)
print(summary['summary'])
# 4. One-step workflow
final_answer = read_doc(doc_url, query)
print(final_answer)