ekl MCP server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| EKL_ROLE | No | Role used for access-control decisions. Defaults to public (least privilege). | public |
| EKL_USER_ID | No | Demo user identifier used for the caller identity. | |
| EKL_MANIFEST | No | Path to the generated corpus manifest used for integrity checks. | manifest/manifest.json |
| EKL_AUDIT_LOG | No | Path to the hash-chained, append-only audit log. | audit/audit.jsonl |
| EKL_CORPUS_DIR | No | Directory containing the approved corpus documents. | corpus/ |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
Governed access to Maple Harbour Bank (fictional) policies and procedures. Only approved, integrity-checked documents the caller is cleared for are returned; PII is redacted. Always cite the 'citation' field when using a result.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_knowledgeA | Search approved internal knowledge. Returns snippets with doc_id, title, version, classification and a citation. top_k is capped at 10. |
| get_documentA | Fetch the full text of one approved document by doc_id (e.g. MHB-OPS-001). |
| list_sourcesA | List the approved documents the current caller is allowed to see. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 3 tools
search_knowledge (query-based retrieval) and list_sources (permission-scoped enumeration) are both discovery-oriented and could momentarily be confused, but the descriptions clearly separate query search from browsing the allowed corpus. get_document is unambiguously a fetch-by-id operation with a distinct input signature.
All three tools follow the same verb_noun snake_case pattern (search_knowledge, get_document, list_sources) with consistent, predictable verb choices for query/fetch/enumerate semantics.
Three tools is at the low end but each maps to a distinct retrieval need (discover by query, enumerate permitted corpus, fetch full text), so there is no padding. Slightly thin for a document platform, but well-scoped for a read-only knowledge endpoint.
The discovery-to-retrieval lifecycle is covered: list what you can see, search it, then fetch full text by doc_id. Minor gaps exist, such as no way to retrieve multiple documents or inspect version history/related documents, but core workflows are not blocked.