Skip to main content
Glama
saivarun161

mcp-docqa-server

by saivarun161

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
DOCQA_STORENoVector store backend: 'sqlite' (default) or 'pgvector'
DATABASE_URLNoPostgreSQL connection string for pgvector backend (e.g., postgresql://user:pass@host:5432/dbname)
OPENAI_API_KEYNoOpenAI API key for semantic embeddings (optional; if set, will be used)
DOCQA_EMBEDDINGSNoEmbedding model: 'auto' (auto-detect from .env), 'openai', or 'hash' (default)

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
pingA

Health check. Returns 'pong' to confirm the docqa server is reachable.

Use this to verify the connection between the host and this server.

search_documentsA

Search the indexed document corpus.

Returns the k best-matching text chunks, each with its source metadata: doc_id, chunk_index, title, url, the chunk text, and a relevance score (higher is better; scores are comparable within one response, not across modes). Results may include multiple chunks from the same document. Use fetch_document with a result's doc_id to read the full source document.

Args: query: A natural-language question or search phrase. k: How many chunks to return (default 5, max 25). mode: 'hybrid' (default) fuses semantic and keyword search — best for most questions. 'vector' is semantic-only — best for paraphrased or conceptual questions. 'lexical' is keyword-only — best when the exact term must appear (identifiers, drug names, error codes).

fetch_documentA

Fetch one full source document by its id.

Use this after search_documents to read a promising source in full instead of reasoning from a chunk. Returns id, title, url, and the complete text.

Args: doc_id: The document id exactly as returned by search_documents.

corpus_statsA

Describe the indexed corpus: document/chunk counts, storage backend, and which embedding model built the index.

Call this first if you are unsure whether the corpus is relevant to the user's question or whether anything has been indexed at all.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.6/5.0

Scored across 4 tools

Disambiguation5/5

Each tool serves a unique, clearly defined purpose: ping for health check, corpus_stats for corpus metadata, search_documents for querying, and fetch_document for retrieving full documents. No functional overlap exists.

Naming Consistency4/5

Three tools follow the verb_noun pattern (corpus_stats, fetch_document, search_documents), while 'ping' is a standalone verb. This minor deviation is acceptable as ping is a standard health check command.

Tool Count5/5

With 4 tools, the server is well-scoped for a document QA system: health check, corpus statistics, search, and document retrieval. Each tool is essential and none are extraneous.

Completeness4/5

The tool set covers the core workflow of searching and fetching documents. A minor gap is the absence of a tool to list or browse documents, but for the stated purpose of answering questions via search, it is sufficient.

Maintenance

ActivitySlowing
ResponsivenessNo issues