mcp-api-reference
An MCP server that automatically crawls, indexes, and serves API reference documentation for LLMs, enabling to search and retrieve endpoint details.
README
mcp-api-reference
An MCP (Model Context Protocol) server that automatically crawls, indexes, and serves API reference documentation for LLMs.
Problem & Solution
When LLMs generate code that uses APIs, the following problems occur:
- Hallucination: Generating non-existent endpoints or parameters
- Stale information: Unable to reference the latest API specs not included in training data
- Inefficient context consumption: Passing entire documentation wastes tokens
This tool automatically crawls, parses, and indexes API reference sites just by specifying a URL, then provides token-efficient search results via MCP tools.
MCP Tools
| Tool | Description | Main Inputs |
|---|---|---|
search_docs |
Full-text search by keyword | query, api (optional), limit (1-20) |
get_endpoint |
Get details of a specific endpoint | api, endpoint (path), method |
list_apis |
List available APIs and categories | api (optional) |
Requirements
- Node.js >= 18.0.0
Installation
npm install
npm run build
Usage
Start as MCP Server
node dist/index.js
CLI Options
# Specify a custom config file
node dist/index.js --config ./my-sites.json
# Refresh cache for a specific API
node dist/index.js --refresh kintone
# Clear all cache
node dist/index.js --clear-cache
| Option | Short | Description |
|---|---|---|
--config <path> |
-c |
Path to custom site config file |
--refresh <api-id> |
-r |
Re-fetch documentation for the specified API |
--clear-cache |
- | Clear all cache and exit |
Claude Desktop Integration
Add the following to claude_desktop_config.json:
{
"mcpServers": {
"api-reference": {
"command": "node",
"args": ["/path/to/mcp-reference-doc/dist/index.js"]
}
}
}
Presets
kintone REST API
A parser for the kintone REST API is built in as a preset. No additional configuration required.
Backlog API
A parser for the Backlog API is also available as a preset. No additional configuration required.
SmartHR API
A parser for the SmartHR API is also available as a preset. No additional configuration required.
Custom Sites
You can add any API documentation site by specifying a JSON file with the --config option.
{
"sites": [
{
"id": "my-api",
"name": "My API",
"baseUrl": "https://api.example.com",
"crawl": {
"startUrl": "https://api.example.com/docs",
"includePatterns": ["https://api.example.com/docs/**"],
"excludePatterns": [],
"maxPages": 500,
"delayMs": 500
},
"parser": {
"type": "generic",
"selectors": {
"endpointContainer": ".endpoint",
"method": ".http-method",
"path": ".api-path",
"title": "h3",
"description": ".description",
"parameters": ".parameters",
"responseFields": ".response"
}
}
}
]
}
Project Structure
src/
├── index.ts # CLI entry point
├── server.ts # MCP server initialization and tool registration
├── core/
│ ├── crawler.ts # Web crawler with robots.txt support
│ ├── parser.ts # Parser registry
│ ├── generic-parser.ts # Generic HTML parser (CSS selector-based)
│ ├── indexer.ts # Full-text search index via MiniSearch
│ ├── store.ts # Document store
│ ├── cache.ts # TTL-based cache management
│ └── pipeline.ts # Crawl → parse → index pipeline
├── tools/
│ ├── search-docs.ts # search_docs tool
│ ├── get-endpoint.ts # get_endpoint tool
│ └── list-apis.ts # list_apis tool
├── presets/
│ ├── kintone/ # kintone preset
│ ├── backlog/ # Backlog preset
│ └── smarthr/ # SmartHR preset
├── formatters/
│ └── response.ts # MCP response formatter
├── types/ # Type definitions
└── utils/ # Utilities (logger, glob, hash)
Development
# Build in watch mode
npm run dev
# Run tests
npm test
# Run tests (watch mode)
npm run test:watch
# Type check
npm run typecheck
# Lint
npm run lint
Tech Stack
- @modelcontextprotocol/sdk - MCP server implementation
- cheerio - HTML parser
- minisearch - Full-text search engine (with Japanese tokenization support)
- zod - Schema validation
- tsup - TypeScript bundler
- vitest - Test framework
Environment Variables
| Variable | Description | Default |
|---|---|---|
MCP_API_REF_CACHE_DIR |
Path to cache directory | ~/.mcp-api-reference/cache/ |
MCP_API_REF_CONFIG |
Path to site config file | - |
License
MIT
Recommended Servers
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.
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.
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.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
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.
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.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
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.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.