My RAG knowledge base MCP server
SaferSkills independently audited Rag Knowledge Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
This is an MCP server I use to connect a RAG knowledge base to Claude Desktop, Claude Code, and other things.
uv sync --extra dev # installs pytest testsThe Chroma backend does embedding and retrieval (you can use any sort of embedding/retrieval by implementing AbstractRagBackend)
Default configuration assumes the docs will be in knowledge-base in the project root.
Anything with that name is git-ignored, so one can create a symlink named knowledge-base pointing elsewhere.
The directory can also be configured by copying example.env to .env and...
RAG_KNOWLEDGE_DIR=./knowledge-base # <--- changing this to something elseWhat my directory looks like (more or less):
knowledge-base
├── companies
│ └── frobozz-co.md
│ └── acme.md
├── developers
│ └── wesley-hinkle.md
└── projects
| ├── magic-api-gateway.md
| ├── zork-legacy-cms.md
| ├── torch-saas.md
| ├── grue-detector.md
| ├── zorkmid-sdk.md
| ├── hello-footpad.md
| ├── anvil.md
└── skills-mapping.mdOnce the documents are in place:
uv run python ingest.pyor just
make embeddingsAdd to Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"rag-knowledge": {
"command": "/absolute/path/to/uv",
"args": [
"run",
"--directory",
"/absolute/path/to/this/project",
"python",
"rag_knowledge_mcp.py"
],
"env": {
"LOG_LEVEL": "INFO"
}
}
}
}Note: Claude Desktop did not seem to have uv in its path so I used the absolute path returned from which uv
<https://code.claude.com/docs/en/mcp>
Installs with --scope local by default (claude in CWD)
claude mcp add rag-knowledge -- uv run --directory /absolute/path/to/this/project python rag_knowledge_mcp.pyAdd --scope user for claude in any directory:
claude mcp add --scope user rag-knowledge -- uv run --directory /absolute/path/to/this/project python rag_knowledge_mcp.pyBefore I managed to work out the syntax above I created a wrapper script:
claude mcp add --transport stdio rag-knowledge ~/.bin/rag-knowledge-mcpThe contents of wrapper-example.sh can be copied and modified
#!/usr/bin/env bash
set -euo pipefail
PROJECT_DIR="$HOME/path/to/this/project"
UV="$(which uv)"
echo "$PROJECT_DIR"
echo "$UV"
export LOG_LEVEL="${LOG_LEVEL:-INFO}"
cd "$PROJECT_DIR"
exec "$UV" run python rag_knowledge_mcp.py~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.