Knowledge Base MCP Server
# Knowledge Base MCP Server
A local MCP (Model Context Protocol) server that enables AI systems like Claude Desktop to search and query a knowledge base.
## Features
- **Text Search**: Search the knowledge base using natural language queries
- **Chunk Retrieval**: Get specific chunks by ID for detailed information
- **Category Listing**: Browse available topics in the knowledge base
## Installation
```bash
# Install dependencies
npm install
# Build the TypeScript code
npm run build
```
## Available MCP Tools
| Tool | Description |
|------|-------------|
| `search_knowledge` | Search for relevant information using a query string |
| `get_chunk` | Retrieve a specific chunk by its ID |
| `list_categories` | List all available categories in the knowledge base |
## Connecting to Claude Desktop
Add this server to your Claude Desktop configuration:
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
```json
{
"mcpServers": {
"knowledge-base": {
"command": "node",
"args": ["/path/to/local-mcp-simple/dist/index.js"]
}
}
}
```
After updating the config, restart Claude Desktop. You can then ask Claude to search the knowledge base, for example:
> "Search the knowledge base for speed limits in school zones"
## Development
```bash
# Build and run
npm run dev
# Or run separately
npm run build
npm start
```
## Generating Knowledge Base
You can generate a new `knowledge.json` from any markdown file using the included script:
```bash
# Generate from a markdown file
npm run generate-knowledge -- ./path/to/your-document.md
# Specify output location
npm run generate-knowledge -- ./docs/handbook.md ./src/knowledge/knowledge.json
```
### Markdown Format
The script parses markdown headings to create chunks:
- **H1 (`#`)** - Sets the category for subsequent chunks
- **H2 (`##`)** - Creates a new chunk with this title
- **H3 (`###`)** - Also creates a new chunk with this title
- **H4 (`####`)** - Included as bold text within the current chunk
Example markdown:
```markdown
# Licences
## Getting your driver licence
To get a full driver licence, you need to go through three stages...
## Learner licence restrictions
There are licence restrictions that you need to follow...
# Speed Limits
## The rules
On roads where there's a speed limit sign, you must not drive faster...
```
This would create 3 chunks:
1. "Getting your driver licence" (category: "Licences")
2. "Learner licence restrictions" (category: "Licences")
3. "The rules" (category: "Speed Limits")
## Knowledge Base
The server uses `src/knowledge/knowledge.json` which contains pre-chunked content for search.
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: get_chunk retrieves specific content by ID, list_categories enumerates available topics, and search_knowledge finds relevant information via query. There is no overlap or ambiguity between these functions.
All tool names follow a consistent verb_noun pattern (get_chunk, list_categories, search_knowledge) using snake_case throughout. The naming is predictable and readable.
With only 3 tools, the set feels thin for a knowledge base server, lacking operations like create, update, or delete for managing content. However, it covers basic retrieval and exploration adequately.
The tool surface is significantly incomplete for a knowledge base domain, as it only supports read operations (get, list, search) without any write capabilities (e.g., add_chunk, update_chunk, delete_chunk). This will limit agents to querying only.