Skip to main content
Glama
halans

Knowledge Base MCP Server

by halans
README.md
# 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

B3.3/5.0

Scored across 3 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count3/5

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.

Completeness2/5

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.

Maintenance

ActivityInactive
ResponsivenessNo issues