A Model Context Protocol (MCP) server for searching MCP protocol documentation. Built with TypeScript using the official MCP SDK.
- BM25 Search - High-quality ranked search using BM25 algorithm with Porter stemming
- Fast Startup - Indexes document titles at startup, fetches content on-demand
- Markdown Aware - Weights headers, code blocks, and links for better relevance
- stdio Transport - Runs as a local process for easy integration
Add to your MCP client configuration (Claude Desktop, Kiro, etc.):
{
"mcpServers": {
"mcp-docs-server": {
"command": "npx",
"args": ["-y", "@praveenc/mcp-docs-server"]
}
}
}That's it! The server will be downloaded and run automatically.
npm install -g @praveenc/mcp-docs-serverThen configure your MCP client:
{
"mcpServers": {
"mcp-docs-server": {
"command": "mcp-docs-server"
}
}
}Search MCP protocol documentation with ranked results.
Parameters:
query(string, required): Search query stringk(number, optional): Maximum results to return (default: 5). Returns fewer if fewer documents match.
Example:
{
"query": "transports",
"k": 5
}Returns:
[
{
"url": "https://modelcontextprotocol.io/specification/2025-11-25/basic/transports.md",
"title": "Transports",
"score": 15.725,
"snippet": "MCP uses JSON-RPC to encode messages..."
}
]Fetch full document content by URL.
Parameters:
uri(string, required): Document URL from modelcontextprotocol.io
Example:
{
"uri": "https://modelcontextprotocol.io/specification/2025-11-25/server/tools.md"
}Returns:
{
"url": "https://modelcontextprotocol.io/specification/2025-11-25/server/tools.md",
"title": "Tools",
"content": "# Tools\n\nTools enable servers to expose executable functionality..."
}npx @modelcontextprotocol/inspector npx -y @praveenc/mcp-docs-serverClone the repository for local development:
git clone https://github.com/praveenc/mcp-docs-server.git
cd mcp-docs-server
npm install# Run in development mode
npm run dev
# Run tests
npm test
# Type check
npm run typecheck
# Build
npm run build
# Test with MCP Inspector (development)
npm run inspect:dev{
"mcpServers": {
"mcp-docs-server": {
"command": "npx",
"args": ["tsx", "/path/to/mcp-docs-server/src/index.ts"]
}
}
}src/
├── index.ts # MCP server entry point
├── config.ts # Configuration
├── tools/
│ └── docs.ts # search_mcp_docs, fetch_mcp_doc
└── utils/
├── cache.ts # Document caching
├── doc-fetcher.ts # HTTP fetching & HTML parsing
├── indexer.ts # BM25 search index
├── logger.ts # Logging utilities
├── stopwords.ts # Stop words list
├── text-processor.ts # Text utilities
└── url-validator.ts # URL validation
The search uses BM25 (Best Matching 25) with enhancements:
- Porter Stemming - Matches word variants (e.g., "running" → "run")
- Bigrams - Captures phrase matches (e.g., "tool input")
- Weighted Scoring:
- Title matches: 3-8x boost
- Header matches: 4x weight
- Code blocks: 2x weight
- Link text: 2x weight
- Domain Term Preservation - Technical terms like "mcp", "json", "stdio" are not stemmed
MIT