support-kb-server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@support-kb-serverHow do I reset my password?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
support-kb-server
A role-based knowledge-base MCP server for a support bot. It serves FAQ answers out of a local vector store and gates write operations behind an admin bearer token, while a read_only token can only ask questions.
Everything runs locally — no API keys, no hosted services:
Concern | Choice |
MCP server |
|
Vector store | ChromaDB, embedded persistent mode → |
Embeddings | sentence-transformers |
Auth | Two bearer tokens → two roles, in-memory |
Tools & permissions
Tool | admin | read_only | Notes |
| ✅ | ✅ | Retrieves top FAQ match + source snippet |
| ✅ | ❌ | Adds an FAQ entry (audit-logged) |
| ✅ | ❌ | Removes an FAQ entry by id (audit-logged) |
| ✅ | ❌ | Lists all entries with ids (for delete refs) |
Every tool call reads the caller's Authorization: Bearer <token> header, looks
up the role, and returns a clear "Permission denied" error if that role may
not call the tool.
Related MCP server: KB-MCP Server
Setup
Requires Python 3.10+.
pip install -r requirements.txtThe first run downloads the
all-MiniLM-L6-v2model (~90 MB) from Hugging Face and caches it locally. Every run after that is fully offline.
Run the server
python server.pyOn startup the server:
Seeds the Chroma collection with 10 sample FAQ entries (first run only).
Prints the two bearer tokens, clearly labeled, to the console — this is where you copy them from:
==================================================================== support-kb-server - BEARER TOKENS (copy these now) ==================================================================== ADMIN (full access) : admin-XXXXXXXXXXXXXXXXXXXX READ_ONLY (answer_question) : readonly-XXXXXXXXXXXXXXXXXXXX ==================================================================== Endpoint: http://127.0.0.1:8000/mcp ====================================================================Starts the MCP endpoint at
http://127.0.0.1:8000/mcp.
Fresh random tokens are generated on each startup. To pin them (useful for scripts/CI), set env vars before launching:
# PowerShell
$env:KB_ADMIN_TOKEN="admin-my-fixed-token"; $env:KB_READONLY_TOKEN="readonly-my-fixed-token"; python server.py
# bash
KB_ADMIN_TOKEN=admin-my-fixed-token KB_READONLY_TOKEN=readonly-my-fixed-token python server.pyOther env vars: KB_HOST (default 127.0.0.1), KB_PORT (default 8000).
The active tokens + endpoint are also written to .mcp_tokens.json so the test
script can authenticate without copy-pasting.
Test it
With the server running in one terminal, run the test harness in another:
python test_local.pyIt opens real MCP client sessions over HTTP with each token and verifies the full
matrix — read_only is allowed only on answer_question and denied on the other
three; admin succeeds on all four — printing clear PASS/FAIL per check:
--- read_only role ---
[PASS] read_only can call answer_question
[PASS] read_only is DENIED add_knowledge
[PASS] read_only is DENIED delete_knowledge
[PASS] read_only is DENIED list_knowledge
--- admin role ---
[PASS] admin can call answer_question
[PASS] admin can call add_knowledge
[PASS] admin can call list_knowledge (sees new entry)
[PASS] admin can call delete_knowledge
8/8 checks passedAudit log
Every successful add_knowledge / delete_knowledge call appends one JSON
line to audit_log.jsonl:
{"timestamp": "2026-09-06T16:05:37.458146+00:00", "role": "admin", "tool": "add_knowledge", "arguments": {"question": "...", "answer": "...", "doc_id": "faq-7ee3b2da05e3"}}Denied calls and read-only queries are not logged.
Connect it to Claude Desktop / claude.ai as a custom connector
This server speaks streamable HTTP with bearer auth, so it plugs in as a custom connector.
claude.ai (and Claude Desktop) require an HTTPS URL for custom connectors, so a
local http://127.0.0.1:8000 URL is rejected. Expose the server over HTTPS with a
tunnel such as ngrok.
1. Start the server so it accepts the tunnel's hostname
The MCP server has built-in DNS-rebinding protection that, by default, only trusts
localhost. A tunnel forwards requests under its own public hostname, so tell the
server to accept it via KB_ALLOWED_HOSTS. Because every tool is already gated by a
bearer token, * (accept any host) is fine here:
# PowerShell — pin tokens too so they survive restarts
$env:KB_ALLOWED_HOSTS="*"
$env:KB_ADMIN_TOKEN="admin-supportkb-8f3a2c17d9e4"
$env:KB_READONLY_TOKEN="readonly-supportkb-2b6d40af71c8"
python server.py# bash
KB_ALLOWED_HOSTS='*' python server.py(You can instead pin exact hosts: KB_ALLOWED_HOSTS="myname.ngrok-free.app".)
2. Open the tunnel
ngrok http 8000ngrok prints a forwarding URL like https://eb41-49-238-50-150.ngrok-free.app. Your
MCP endpoint is that URL with /mcp appended. (A free-tier ngrok subdomain
changes each time you restart ngrok — that's the reason for KB_ALLOWED_HOSTS="*".)
3. Add it in Claude → Settings → Connectors → "Add custom connector"
Give it a name, e.g.
Support KB.URL:
https://<your-ngrok-subdomain>.ngrok-free.app/mcpAuthentication: choose the bearer / access-token option and paste one of the tokens the server printed:
the admin token to enable all four tools, or
the read_only token to expose only
answer_question.
Save. Claude runs the MCP handshake and lists the tools your token is allowed to use. Ask a support question and it will call
answer_question.
Troubleshooting
421 Misdirected Request: the server didn't trust the tunnel hostname — start it withKB_ALLOWED_HOSTS="*"(or the exact ngrok host) as above. Keep both the server andngrokprocesses running the whole time Claude is connected.
Project layout
kb_store.py # Chroma + embeddings + seed data + query/add/delete/list helpers
server.py # FastMCP server: tools, auth/roles, audit logging, token printing
test_local.py # End-to-end role/permission test over HTTP
requirements.txt
chroma_data/ # persisted vector store (created on first run)
audit_log.jsonl # append-only audit trail (created on first admin write)
.mcp_tokens.json # active tokens+endpoint, written for the test scriptTool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Run AI customer support from your terminal: conversations, knowledge base, and chat widget.
- KumbukaOAuthai.kumbuka
Governed, auditable knowledge your team curates for its AI assistants, self-hostable
Ingest, manage, and retrieve documents for RAG-powered AI applications
Persistent memory and vector search for AI agents. Hosted, OAuth-protected via Google sign-in.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables semantic search and question-answering over FAQ documents using RAG (Retrieval-Augmented Generation) with OpenAI embeddings and in-memory vector similarity.-
- FlicenseAqualityNot gradedmaintenanceA local-first knowledge base server that enables AI clients to store, retrieve, and manage documents using semantic search. Provides privacy-focused, offline-capable memory for AI assistants with tools for ingesting, querying, updating, and deleting knowledge.715-
- AlicenseNot gradedqualityDmaintenanceProvides tools for semantic search, CRUD, verification, and reindexing of documents in a local vector-based knowledge base, usable via HTTP or stdio.MIT
- FlicenseNot gradedqualityCmaintenanceEnables ticket management through a REST API and support document search via a local vector database, powered by Ollama and LanceDB.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ketanongit/support-KB-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server