PDF document RAG server with local parsing and embedding, hybrid search, semantic chunking and an optional web interface.
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add pdfkb --env OPENAI_API_KEY='<OPENAI_API_KEY>' --env KNOWLEDGEBASE_PATH='<KNOWLEDGEBASE_PATH>' -- uvx pdfkb-mcp~/.codex/config.toml
[mcp_servers.pdfkb]
command = "uvx"
args = ["pdfkb-mcp"]
env = { OPENAI_API_KEY = "<OPENAI_API_KEY>", KNOWLEDGEBASE_PATH = "<KNOWLEDGEBASE_PATH>" }
# codex mcp add pdfkb --env OPENAI_API_KEY='<OPENAI_API_KEY>' --env KNOWLEDGEBASE_PATH='<KNOWLEDGEBASE_PATH>' -- uvx pdfkb-mcp~/.cursor/mcp.json
{
"mcpServers": {
"pdfkb": {
"command": "uvx",
"args": [
"pdfkb-mcp"
],
"env": {
"OPENAI_API_KEY": "<OPENAI_API_KEY>",
"KNOWLEDGEBASE_PATH": "<KNOWLEDGEBASE_PATH>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"pdfkb": {
"type": "stdio",
"command": "uvx",
"args": [
"pdfkb-mcp"
],
"env": {
"OPENAI_API_KEY": "<OPENAI_API_KEY>",
"KNOWLEDGEBASE_PATH": "<KNOWLEDGEBASE_PATH>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"pdfkb": {
"command": "uvx",
"args": [
"pdfkb-mcp"
],
"env": {
"OPENAI_API_KEY": "<OPENAI_API_KEY>",
"KNOWLEDGEBASE_PATH": "<KNOWLEDGEBASE_PATH>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"pdfkb": {
"command": "uvx",
"args": [
"pdfkb-mcp"
],
"env": {
"OPENAI_API_KEY": "<OPENAI_API_KEY>",
"KNOWLEDGEBASE_PATH": "<KNOWLEDGEBASE_PATH>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"pdfkb": {
"command": "uvx",
"args": [
"pdfkb-mcp"
],
"env": {
"OPENAI_API_KEY": "<OPENAI_API_KEY>",
"KNOWLEDGEBASE_PATH": "<KNOWLEDGEBASE_PATH>"
}
}
}
}Environment variables
OPENAI_API_KEYKNOWLEDGEBASE_PATH
Replace the placeholders with your own credentials and keep them out of version control.