A Model Context Protocol (MCP) server for intelligent documentation retrieval across multiple technical domains.
This project implements an MCP server that provides targeted documentation retrieval for technical queries. It uses a hybrid approach to:
- Determine the technical domain of a query (React, Node.js, Python)
- Extract specific topics from the query
- Construct precise documentation URLs
- Fetch and return the most relevant documentation
The server is built using TypeScript and the MCP SDK, providing a standardized interface for AI models to access documentation resources.
- Domain Classification: Automatically identifies whether a query is about React, Node.js, Python, or general topics
- Topic Extraction: Uses regex pattern matching to identify specific technical concepts in queries
- URL Construction: Builds targeted documentation URLs based on identified topics
- Multiple Documentation Sources: Supports documentation from React, Node.js, Python, and can be extended to other domains
- Standardized Interface: Implements the Model Context Protocol for interoperability with MCP-compatible clients
# Clone the repository
git clone https://github.com/yourusername/mcp-server.git
cd mcp-server
# Install dependencies
npm install
# Build the project
npm run build
node build/index.js
The project includes a test script to demonstrate how topic extraction and URL construction work:
# Build the test script
npx tsc src/test.ts --outDir build
# Run the test
node build/test.js
The server can be integrated with any MCP-compatible client. Here's an example of how a client might interact with the server:
// Example client code (not included in this project)
const client = new McpClient();
const result = await client.callTool("fetch-documentation", {
query: "How do I use useState hook in React?",
});
console.log(result);
// Output: {
// domain: "react-docs",
// topics: ["useState", "state"],
// specificUrl: "https://react.dev/reference/react/useState",
// content: "...",
// source: "https://react.dev/reference/react/useState"
// }
src/index.ts
- Main server implementationsrc/test.ts
- Test script for topic extraction and URL constructionbuild/
- Compiled JavaScript outputpackage.json
- Project configuration and dependencies
The server exposes the following tools:
Determines which technical domain a query belongs to.
{
query: string; // The user query to classify
}
Returns:
{
domain: string; // The identified domain
confidence: string; // "high" or "low"
}
Extracts specific topics from a query for a given domain.
{
query: string; // The user query to analyze
domain: string; // The technical domain to extract topics for
}
Returns:
{
topics: string[]; // Array of identified topics
count: number; // Number of topics found
}
Fetches documentation based on query and domain.
{
query: string; // The user query
domain?: string; // Optional domain override
}
Returns:
{
domain: string; // The identified domain
topics: string[]; // Array of identified topics
specificUrl: string | null; // The constructed URL if available
content: string; // The fetched documentation content
source: string; // The source URL
}
The server provides the following documentation resources:
react-docs
- React.js documentationnode-docs
- Node.js documentationpython-docs
- Python documentationgeneral
- General documentation when domain is unclear
To add support for a new technical domain:
- Add domain keywords to the
domainKeywords
object in thedetermineDomain
function - Add topic patterns to the
topicPatterns
object in theextractTopics
function - Add URL construction logic to the
constructSpecificUrl
function - Add a new resource handler in the server configuration
The topic extraction can be improved by:
- Enhancing regex patterns for existing topics
- Adding new topics to existing domains
- Implementing more sophisticated NLP techniques for topic extraction
MIT
Contributions are welcome! Please feel free to submit a Pull Request.