Skip to main content
Glama
MCP Knowledge Base Server

MCP Knowledge Base Server

by vianel

MCP Knowledge Base Server

This folder contains the MCP server and unstructured-text ingestion pipeline for the support-ticket triage demo.

The server exposes knowledge-base articles and sample tickets through MCP tools. The search tool is backed by a local SQLite vector index built from Markdown files in data/kb/.

Files

mcp/
├── main.py              # FastMCP server
├── pipeline.py          # Ingest, chunk, embed, and store KB documents
├── vector_store.py      # SQLite vector search helpers
├── models.py            # Pydantic models returned by tools
└── data/
    ├── kb/              # Source knowledge-base articles
    ├── tickets/         # Sample support tickets
    └── index.db         # Generated SQLite index

Related MCP server: Tiger Salesforce MCP Server

Tools

The MCP server currently exposes:

  • search_kb(query: str) -> list[Chunk] Semantic search over indexed KB chunks.

  • get_article(name: str) -> str Fetch a full KB article by filename.

  • list_tickets(status: str) -> list[Ticket] List sample tickets by status.

Setup

Install dependencies:

uv sync

Set the Gemini API key used for embeddings:

export GEMINI_API_KEY="..."

Build The Index

Run the ingestion pipeline:

uv run python pipeline.py

The pipeline:

  1. Reads Markdown files from data/kb/.

  2. Normalizes and chunks each document.

  3. Creates embeddings with gemini-embedding-001.

  4. Stores chunks and embeddings in data/index.db.

  5. Uses SHA-256 hashes to skip unchanged documents on reruns.

Run The Server

Start the MCP server over stdio:

uv run python main.py

Most clients, including the ADK agent in ../agent, launch this command as a subprocess instead of running it manually.

Client Config Snippet

Example stdio client configuration:

{
  "mcpServers": {
    "kb-server": {
      "command": "/Users/vianel/Workspace/samples/mcp/.venv/bin/python",
      "args": ["/Users/vianel/Workspace/samples/mcp/main.py"],
      "env": {
        "GEMINI_API_KEY": "${GEMINI_API_KEY}"
      }
    }
  }
}

Smoke Tests

Rebuild the index and check that reruns skip unchanged files:

uv run python pipeline.py
uv run python pipeline.py

Then run the agent-side discovery script from ../agent:

cd ../agent
uv run python discovery.py

You should see the MCP tools discovered by the client.

Available Tools

4 tools
addD

Inputs: a (required), b (required). Returns: result

get_articleB

Responsible to obtain an article Args: name: the filename of the article Returns: the content of the article in string

Inputs: name (required). Returns: result

list_ticketsC

List all the tickets by status Args: a: The status of the ticket Returns: The ticket content

Inputs: status (required). Returns: result

search_kbA
    Semantic search over the knowledge base. Pass a natural-language question or problem 
    description; returns the most relevant document chunks ranked by similarity, each with 
    its source doc_id, a text snippet, and a score (higher = more relevant).
    for matches

Inputs: query (required). Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.4/5.0

    Scored across 4 tools

    Disambiguation3/5

    Tools cover different functions (articles, tickets, search), but 'add' is ambiguous and could be confused with creating articles or tickets. 'get_article' and 'search_kb' both relate to articles but serve different retrieval needs.

    Naming Consistency3/5

    Three tools follow verb_noun pattern, but 'add' is a single verb without a noun, breaking consistency. Additionally, 'search_kb' uses an abbreviation while others use full words.

    Tool Count4/5

    With 4 tools, the server is lean but covers basic operations. The count is not excessive, though it feels slightly thin for a knowledge base server.

    Completeness2/5

    Obvious gaps: no update or delete for articles or tickets, no list articles tool, and 'add' is underspecified. The search is strong, but core CRUD operations are incomplete.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Provides a semantic search interface that enables discovery and routing across over 1,000 local MCP tools using natural language queries. It leverages hybrid search and embeddings to accurately match user intent with tool names and descriptions.
      12 npm
      1
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables semantic search of Salesforce case summaries using embeddings, accessible via MCP tools and REST API.
      23
      Apache 2.0
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI coding assistants to semantically search and retrieve relevant code patterns, documentation, and implementations from a codebase via MCP tools.
      8
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables semantic search and AI-powered Q&A over ingested GitHub documentation repositories via MCP tools.
      -