MCP Server for Version-Aware Library Documentation and API Retrieval
DAG is a Model Context Protocol (MCP) server that provides intelligent, version-aware access to npm library documentation through semantic search, API validation, and version comparison tools.
- Semantic Search: Vector-based search across library documentation and source code
- API Validation: Real-time validation of API usage against indexed signatures
- Version Comparison: Diff analysis showing added/removed APIs between versions
- Hybrid Search: Combines vector similarity with keyword matching for accuracy
- Multi-Ecosystem: Designed for extensibility to Python, Ruby, Java, etc.
┌──────────────────────────────────────────────────────────────┐
│ MCP Server (Stdio) │
├──────────────────────────────────────────────────────────────┤
│ Resources │ Tools │
│ • library-docs/{lib}/{ver} │ • search_library │
│ • api-signature/{lib}/{fn} │ • validate_api │
│ • library-versions/{lib} │ • compare_versions │
├──────────────────────────────────────────────────────────────┤
│ Indexing Pipeline (Orchestrator) │
│ NPM → Parse AST → Chunk → Embed → Qdrant Store │
├──────────────────────────────────────────────────────────────┤
│ Services Layer │
│ • NPM Crawler • AST Parser • Chunker │
│ • Embedder • Qdrant • Orchestrator │
└──────────────────────────────────────────────────────────────┘
This monorepo contains three packages:
Core types and interfaces used across the system.
Coverage: 98.01% | Tests: 6/6 passing
Indexing pipeline for npm packages.
Components:
- NPM Crawler (downloads tarballs, extracts source)
- AST Parser (tree-sitter for TypeScript/JavaScript)
- Semantic Chunker (splits code by functions/classes)
- Embedder (Voyage AI embeddings)
- Qdrant Service (vector database operations)
- IndexingOrchestrator (end-to-end pipeline)
Coverage: 98.57% | Tests: 48/48 passing
MCP server implementation.
Components:
- MCP Server (stdio transport)
- Resource Provider (3 resource types)
- Tool Provider (3 tools)
- Health monitoring
Coverage: 58.65% | Tests: 28/28 passing
- Node.js ≥ 18.0.0
- npm ≥ 9.0.0
- Qdrant Cloud account (or local Qdrant instance)
-
Clone the repository:
git clone https://github.com/VAMFI/DAG.git cd DAG -
Install dependencies:
npm install
-
Build all packages:
npm run build
-
Run tests:
npm test
Create a .env file in the project root:
# Qdrant Configuration
QDRANT_URL=https://your-cluster.qdrant.tech
QDRANT_API_KEY=your_api_key_here
# MCP Server Configuration
MCP_SERVER_NAME=dag-mcp-server
MCP_SERVER_VERSION=0.1.0import { IndexingOrchestrator } from '@vamfi/dag-indexer';
import {
NPMCrawlerService,
ASTParserService,
ChunkerService,
EmbedderService,
QdrantService
} from '@vamfi/dag-indexer';
// Initialize services
const crawler = new NPMCrawlerService();
const parser = new ASTParserService();
const chunker = new ChunkerService();
const embedder = new EmbedderService({
qdrantUrl: process.env.QDRANT_URL,
apiKey: process.env.QDRANT_API_KEY
});
const qdrant = new QdrantService({
url: process.env.QDRANT_URL,
apiKey: process.env.QDRANT_API_KEY
});
// Create orchestrator
const orchestrator = new IndexingOrchestrator(
crawler,
parser,
chunker,
embedder,
qdrant
);
// Index a package
const result = await orchestrator.indexPackage('express', '4.18.2');
console.log(`Indexed ${result.chunksIndexed} chunks in ${result.duration}ms`);# Start the server
npm start --workspace=@vamfi/dag-mcp-server
# Or use the CLI directly
./packages/mcp-server/dist/index.jsResources provide structured access to documentation:
dag://library-docs/express/4.18.2
dag://api-signature/express/Router
dag://library-versions/express
Tools enable intelligent interaction with documentation:
1. Search Library:
{
"tool": "search_library",
"arguments": {
"query": "how to create middleware",
"library": "express",
"version": "4.18.2",
"limit": 5
}
}2. Validate API:
{
"tool": "validate_api",
"arguments": {
"library": "express",
"apiCall": "app.use(express.json())",
"version": "4.18.2"
}
}3. Compare Versions:
{
"tool": "compare_versions",
"arguments": {
"library": "express",
"version1": "4.17.0",
"version2": "4.18.2"
}
}Add to claude_desktop_config.json:
{
"mcpServers": {
"dag": {
"command": "node",
"args": ["/path/to/DAG/packages/mcp-server/dist/index.js"],
"env": {
"QDRANT_URL": "https://your-cluster.qdrant.tech",
"QDRANT_API_KEY": "your_api_key"
}
}
}
}Add to .continue/config.json:
{
"experimental": {
"modelContextProtocolServers": [
{
"transport": {
"type": "stdio",
"command": "node",
"args": ["/path/to/DAG/packages/mcp-server/dist/index.js"]
},
"env": {
"QDRANT_URL": "https://your-cluster.qdrant.tech",
"QDRANT_API_KEY": "your_api_key"
}
}
]
}
}All quality gates have been passed:
- Requirement: Full pipeline integration with comprehensive testing
- Result: 48/48 tests passing, 98.57% coverage
- Status: PASSED
- Requirement: Search latency < 2 seconds
- Result: < 100ms average latency
- Status: PASSED
- Requirement: All components integrated, documented, and tested
- Result: 82/82 tests passing across all packages
- Status: PASSED
- Indexing: ~100-500ms per package (depending on size)
- Search: < 100ms average latency
- API Validation: < 50ms average
- Version Comparison: < 200ms average
- Python ecosystem support (PyPI)
- Ruby ecosystem support (RubyGems)
- Java ecosystem support (Maven)
- Real-time package updates
- Enhanced caching layer
- Multi-tenant support
- GraphQL API
Contributions are welcome! Please follow these guidelines:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes with conventional commits
- Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
MIT © VAMFI Inc.
- GitHub Issues: https://github.com/VAMFI/DAG/issues
- Documentation: https://vamfi.org/docs/dag
- Email: support@vamfi.org
Built with ❤️ by VAMFI Inc.