docs2mcp

docs2mcp

Enables any compatible MCP client or AI agent to retrieve documentation from a local directory of Markdown, HTML, or TXT files via a remote, read-only MCP server.

Category
Visit Server

README

docs2mcp

Turn a directory of Markdown, HTML, or TXT files into a remote, read-only MCP server that any compatible MCP client or agent can connect to for documentation retrieval. This includes AskMesh, Claude integrations, Codex, and custom MCP clients.

Quick start

uvx docs2mcp serve ./docs \
  --base-url https://docs.example.com/docs \
  --host 0.0.0.0 \
  --port 8765

uvx creates an isolated environment from PyPI and runs the published docs2mcp CLI without a manual installation step. For local development from a checkout, use python -m docs2mcp.runtime instead.

Enable incremental synchronization with file watching and periodic reconciliation:

uvx docs2mcp serve ./docs \
  --host 0.0.0.0 \
  --port 8765 \
  --watch \
  --sync-interval 30

The first startup scans the entire directory. Later changes are applied per document: new files are inserted, modified files are re-indexed, deleted files are removed, and unchanged files are skipped. The watcher uses a short debounce window and the periodic scan provides a fallback for filesystems that do not reliably emit events.

When binding to a specific public address with DNS-rebinding protection enabled, allow the incoming Host header explicitly:

uvx docs2mcp serve ./docs \
  --host 0.0.0.0 \
  --port 8765 \
  --allowed-host 'docs.example.com:*'

Use the same Python interpreter for installation and startup. docs2mcp requires the official MCP Python SDK mcp>=1.27.0,<2; an older or unrelated package named mcp does not provide mcp.server.fastmcp.

The legacy doc2mcp command remains available as a compatibility alias.

The process prints the MCP connection configuration on startup. Authentication is optional: pass --token to enable Bearer authentication, or omit it to run without authentication.

{
  "endpoint": "http://127.0.0.1:8765/mcp",
  "auth_type": "none",
  "token": null,
  "search_tool": "search_docs",
  "read_tool": "get_document",
  "contract_version": "agent-qa.docs/v1"
}

Enter the endpoint, authentication mode, search_docs, and get_document values in your MCP client configuration. When auth_type is none, select no authentication and leave the token empty. Clients that support Streamable HTTP can connect to the same endpoint without an AskMesh-specific adapter.

GET /readyz reports the document count and the latest synchronization counters, including added, updated, deleted, skipped, failed, duration, and the last error.

Supported formats

The MVP supports .md, .markdown, .txt, .html, and .htm. Indexing uses SQLite FTS5, so no separate vector database is required.

MCP contract

The server implements the interoperable agent-qa.docs/v1 document contract and exposes two read-only tools:

  • search_docs(query, limit): returns route, title, url, snippet, and score.
  • get_document(route, max_characters): returns document content, sections, and a citation URL.

search_docs.query uses SQLite FTS5 syntax. Whitespace is an AND query, OR matches either term, quoted text searches an exact phrase, NOT excludes a term, and * enables prefix matching. It is not semantic natural-language search; clients should show this syntax to users.

Connect from any MCP client

Use the Streamable HTTP endpoint and the two tool names in any client that supports remote MCP connections. AskMesh is one supported integration; Claude-based clients, Codex, and custom agents can use the same endpoint and read-only contract.

Current limitations

This release is a single-host MVP: documents are imported from a local directory and the index is stored in SQLite. Git synchronization, PDF parsing, object storage, vector search, and a multi-tenant control plane are planned for later releases.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured