Skip to main content
Glama
kushkillerjsixx66

canonical-vault-mcp-server

canonical-vault-mcp-server

MCP server that exposes the canonical-vault GitHub repo to any MCP client — GitHub Copilot, Claude, Grok, ChatGPT, or anything else that speaks Streamable HTTP MCP.

Five read-only tools, always available, scoped to kushkillerjsixx66/canonical-vault:

Tool

Purpose

vault_list_directory

List files/dirs at a path

vault_get_file

Fetch a file's decoded text content

vault_get_file_history

Lineage — commit history for a path

vault_get_commit

Full detail + diff stats for one commit

vault_search_files

Code search across the repo

Plus two write tools, registered only when GITHUB_WRITE_TOKEN is set — otherwise they don't exist on the server at all:

Tool

Purpose

vault_propose_change

Create/update one file on a governed branch (never main, never a prohibited path)

vault_open_pr

Open a PR from a governed branch into main — never merges

Scope is fixed by the Model Contribution Contract (00_governance/contracts/model-contribution.md) and canonical_merge_authority: false: no direct writes to the canonical branch, no path in a prohibited zone, no merge tool anywhere in this server.


1. Deploy to Vercel

npm install -g vercel
cd canonical-vault-mcp-server
vercel login
vercel --prod

MCP endpoint:

https://canonical-vault-mcp-server.vercel.app/api/mcp

Environment variables

Variable

Required

Default

Notes

GITHUB_TOKEN

Strongly recommended

none

Read PAT (or public_repo). Raises rate limit to 5000/hr.

GITHUB_OWNER

No

kushkillerjsixx66

GITHUB_REPO

No

canonical-vault

GITHUB_DEFAULT_REF

No

main

GITHUB_WRITE_TOKEN

No — write tools off without it

none

Sensitive. Fine-grained PAT: Contents R/W on canonical-vault only.

GITHUB_WRITE_BRANCH_ALLOWLIST

No

grok,claude,chatgpt,gemini,copilot

Shared multi-model surface. Must never include main.

MODEL_WRITE_SCOPE

No

unset

Hard lock. e.g. grok → this deployment may only write to branch grok. Overrides the multi-model allowlist. Use one deployment per model for true isolation.

After changing env vars, redeploy production.


Related MCP server: github-mcp-tool

1b. Write tools — branch sovereignty

Enforcement layers:

  1. MODEL_WRITE_SCOPE (recommended per model) — Set MODEL_WRITE_SCOPE=grok on the Grok deployment, =claude on Claude’s, etc. Client cannot pick another branch.

  2. Path/branch coherence — Paths under vault/<model>/, runtime/<model>/, or 00_governance/<model>/ require branch === <model>. Blocks e.g. writing vault/claude/... while targeting branch grok.

  3. Allowlist — Without MODEL_WRITE_SCOPE, only listed model branches are writable; main is never writable.

  4. Path denylist — Constitution, IP/legal, protected manifests.

  5. No merge toolvault_open_pr opens only; humans merge on GitHub.

Recommended production config (Grok endpoint):

GITHUB_WRITE_TOKEN=<secret>
MODEL_WRITE_SCOPE=grok
GITHUB_WRITE_BRANCH_ALLOWLIST=grok

Setup:

  1. Fine-grained PAT: Contents: Read and write on canonical-vault only → GITHUB_WRITE_TOKEN (Sensitive).

  2. Set MODEL_WRITE_SCOPE to the model this URL serves.

  3. Protect main on GitHub: require PR, no force-push, exclude write PAT from bypass.

  4. Redeploy.


2. Connect clients

{
  "servers": {
    "canonical-vault": {
      "type": "http",
      "url": "https://canonical-vault-mcp-server.vercel.app/api/mcp"
    }
  }
}

Always pass branch / head matching the model when the deployment is not hard-locked.


3. Local testing

npm install && npm run build
npx @modelcontextprotocol/inspector node dist/index.js
# or
vercel dev   # http://localhost:3000/api/mcp

Notes

  • Stateless per-request Streamable HTTP (api/mcp.ts).

  • Lineage tools map to GitHub commit history.

  • GitHub code search indexes the default branch only (propagation delay possible).

Available Tools

5 tools
vault_get_commitGet Vault Commit DetailA
Read-onlyIdempotent

Get full detail for a single commit in canonical-vault: message, author, stats, and the list of files it changed (with per-file diff stats).

Args:

  • sha (string): Full or abbreviated commit SHA (get one from vault_get_file_history)

  • response_format ('markdown' | 'json'): Output format (default: 'markdown')

Returns: For JSON format: { "sha": string, "message": string, "author": string, "date": string, "stats": {...}, "files": [{ "filename": string, "status": string, "additions": number, "deletions": number }] }

Examples:

  • Use when: "What exactly changed in commit a1b2c3d?" -> sha="a1b2c3d"

  • Don't use when: You just want the commit list for a path (use vault_get_file_history instead)

Error Handling:

  • Returns "Error: ... not found" if the SHA doesn't exist in this repo

ParametersJSON Schema
NameRequiredDescriptionDefault
shaYesFull or abbreviated commit SHA
response_formatNoOutput format: 'markdown' for human-readable or 'json' for machine-readablemarkdown

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the operation as read-only, idempotent, and non-destructive. The description adds valuable behavioral details beyond those: the exact JSON return structure, the default response format, and the error handling when a SHA is not found. This goes beyond simple scoping and genuinely helps an agent anticipate tool behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (Args, Returns, Examples, Error Handling) and front-loads the core purpose. Every sentence earns its place—no fluff. It is longer than a single sentence, but the length is justified by the need to document output format and error behavior given the absence of an output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema, the description fully documents the return format (both markdown and JSON structures), error handling, and usage examples. It also clarifies the scope ('in canonical-vault') and sources the sha from a sibling tool. An agent has everything needed to invoke it correctly, and nothing is left to inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents both parameters. The description adds extra meaning by providing a concrete example of how to obtain a sha (from vault_get_file_history) and by illustrating the response_format usage. While not essential, this context adds value beyond the schema's bare parameter definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear, specific verb-resource statement: 'Get full detail for a single commit in canonical-vault: message, author, stats, and the list of files it changed (with per-file diff stats).' This precisely defines the tool's function and distinguishes it from siblings like vault_get_file_history (which returns commit lists) and vault_get_file (which retrieves file content).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit usage guidance is provided: a 'Use when' example ('What exactly changed in commit a1b2c3d?') and a 'Don't use when' case that names the alternative tool (vault_get_file_history). This leaves no ambiguity about when to select this tool over its siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vault_get_fileGet Vault FileA
Read-onlyIdempotent

Fetch the decoded text content of a single file from the canonical-vault repository (kushkillerjsixx66/canonical-vault).

Args:

  • path (string): File path relative to repo root, e.g. 'governance/CONSTITUTION.md'

  • ref (string): Branch, tag, or commit SHA (default: 'main')

Returns: The raw file text, prefixed with a small header (path, ref, sha, size). Binary or oversized files (> 500000 bytes) return an error instead of garbled content.

Examples:

  • Use when: "Read me the current Constitution" -> path="governance/CONSTITUTION.md"

  • Use when: "What does vara.py look like right now?" -> path="vara.py"

  • Don't use when: You just want to know if a file exists or how big it is (use vault_list_directory instead)

Error Handling:

  • Returns "Error: ... not found" if the path doesn't exist on that ref

  • Returns an error for directories (use vault_list_directory instead) or binary files

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoBranch, tag, or commit SHA to read from (default: 'main')main
pathYesFile path within the repo, relative to root, e.g. 'governance/CONSTITUTION.md'

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable behavioral detail beyond these: it explains the returned format (header with path, ref, sha, size), imposes a size limit (>500000 bytes returns error), and specifies error messages for missing files and directories. This goes beyond the annotation baseline, though it doesn't describe potential rate limits or exhaustive edge cases, which is acceptable for a read-only file fetch.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but highly structured: a one-sentence purpose, then separate 'Args', 'Returns', 'Examples', and 'Error Handling' sections. The most critical info (purpose and primary use case) is front-loaded, and every section adds distinct value. It is not rambling; it is comprehensive yet organized. Minor redundancy exists between the error handling and the 'Don't use when' note, but not enough to lower the score further.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Without an output schema, the description fully explains the return format (raw text with a small header) and error cases (not found, directory, binary, oversized). It covers both required and optional parameters, provides examples, and names the relevant sibling tools. For a tool of this complexity, nothing essential is missing—an agent can call it correctly and interpret results without additional information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both 'path' and 'ref'. The description adds meaning beyond the schema by providing an example for path ('governance/CONSTITUTION.md'), clarifying that paths are relative to repo root, and listing allowed ref values. This enriches the baseline of 3 for full schema coverage, making the parameters more intuitively usable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb-resource pair: 'Fetch the decoded text content of a single file from the canonical-vault repository'. It clearly distinguishes from siblings like vault_list_directory (which lists) and vault_search_files (which searches), and the scope is explicitly limited to a single file. This leaves no ambiguity about the operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use and when-not-to-use guidance. It provides concrete natural-language examples (e.g., 'Read me the current Constitution' → path='governance/CONSTITUTION.md') and directly tells the agent to use vault_list_directory for existence/size checks. It also covers the case of directories and binary files, routing them to the sibling. This is exemplary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vault_get_file_historyGet Vault File/Path LineageA
Read-onlyIdempotent

Get the commit lineage (history) affecting a file or directory in canonical-vault — i.e. every commit that touched that path, most recent first.

Args:

  • path (string): File or directory path to trace (default: "" for whole-repo history)

  • ref (string): Branch, tag, or commit SHA to start from (default: 'main')

  • limit (number): Max commits to return, 1-100 (default: 20)

  • offset (number): Commits to skip for pagination (default: 0)

  • response_format ('markdown' | 'json'): Output format (default: 'markdown')

Returns: For JSON format: { "path": string, "count": number, "commits": [{ "sha": string, "message": string, "author": string, "date": string, "url": string }], "has_more": boolean }

Examples:

  • Use when: "How has VARA_SPEC_1.0 evolved?" -> path="system-specs/VARA_SPEC_1.0.md"

  • Use when: "What's the recent commit lineage for the whole vault?" -> path=""

  • Don't use when: You need the full diff of one specific commit (use vault_get_commit instead)

Error Handling:

  • Returns "Error: ... not found" if the path or ref doesn't exist

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoBranch, tag, or commit SHA to read from (default: 'main')main
pathNoFile or directory path to trace lineage for. Empty string means whole-repo history.
limitNoMaximum commits to return
offsetNoNumber of most-recent commits to skip, for pagination
response_formatNoOutput format: 'markdown' for human-readable or 'json' for machine-readablemarkdown

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnly, idempotent, and non-destructive behavior, but the description adds substantial behavioral detail: it returns a list of commits with fields, supports pagination via offset, explains response_format options, and lists error handling ('Error: ... not found'). This goes well beyond the annotations by describing the exact behavior and output shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (Args, Returns, Examples, Error Handling) and is front-loaded with the purpose. While it is fairly long, every section serves a purpose: documenting parameters, return format, and usage guidance. It is not bloated, but could be trimmed slightly without losing value, hence 4 rather than 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is no output schema, the description compensates by specifying the exact JSON return structure. It covers all 5 parameters, provides usage examples, error cases, and pagination semantics. Nothing an agent needs to call this tool correctly is missing; it is complete for its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 100% of parameters with descriptions, so baseline is 3. The description adds marginal value by clarifying parameter usage, e.g., that path='' means whole-repo history, offset is for pagination, and response_format controls output. It also gives concrete examples that illuminate parameter semantics. This nudges the score slightly above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a specific action ('Get the commit lineage') on a specific resource ('file or directory in canonical-vault') and immediately clarifies it returns every commit that touched that path, most recent first. It also explicitly differentiates from sibling tools, e.g., 'Don't use when... use vault_get_commit instead.' This makes its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear when-to-use examples ('How has VARA_SPEC_1.0 evolved?') and explicitly states when not to use it, referencing an alternative tool (vault_get_commit). It also notes default behavior for whole-repo history. This gives the agent actionable guidance on selecting this tool over siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vault_list_directoryList Vault DirectoryA
Read-onlyIdempotent

List the files and subdirectories at a given path in the canonical-vault repository (kushkillerjsixx66/canonical-vault).

Args:

  • path (string): Directory path relative to repo root (default: "" for root)

  • ref (string): Branch, tag, or commit SHA (default: 'main')

  • response_format ('markdown' | 'json'): Output format (default: 'markdown')

Returns: For JSON format: { "path": string, "ref": string, "entries": [{ "name": string, "path": string, "type": "file"|"dir", "size": number }] }

Examples:

  • Use when: "What's in the governance directory?" -> path="governance"

  • Use when: "Show me the top-level structure of the vault" -> path=""

  • Don't use when: You need the actual contents of a file (use vault_get_file instead)

Error Handling:

  • Returns "Error: ... not found" if the path doesn't exist on that ref

  • Returns a rate limit message if GitHub's API limit is exceeded (set GITHUB_TOKEN to raise it)

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoBranch, tag, or commit SHA to read from (default: 'main')main
pathNoDirectory path within the repo, relative to root. Empty string means repo root.
response_formatNoOutput format: 'markdown' for human-readable or 'json' for machine-readablemarkdown

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds value beyond that by disclosing error messages ('Error: ... not found'), rate-limit behavior and the GITHUB_TOKEN tip, and the exact JSON return structure. While it repeats some annotation info, it contributes meaningful behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is organized into clear sections (Args, Returns, Examples, Error Handling) with a front-loaded purpose statement. Every sentence contributes: examples clarify usage, the 'Don't use when' routes to a sibling, and error handling preempts common failures. No fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list-directory tool with no output schema, the description provides everything an agent needs: the return format (JSON), error handling, rate-limit advice, and usage examples. It also differentiates from siblings. Open-world concerns like large results are partly addressed by the rate-limit note. Nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are fully documented in the schema (defaults, descriptions, enum). The description repeats this information and adds usage examples ('governance' path) but does not introduce new semantic meaning not already in the schema. Baseline 3 is appropriate; the examples are marginal added value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: 'List the files and subdirectories at a given path in the canonical-vault repository'. It explicitly names the sibling tool it is not (vault_get_file) and provides usage examples that clarify the exact scope. This clearly distinguishes it from the other siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use examples ('What's in the governance directory?') and an explicit when-not-to-use condition ('Don't use when: You need the actual contents of a file (use vault_get_file instead)'). This is the clearest possible guidance, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vault_search_filesSearch Vault FilesA
Read-onlyIdempotent

Search file names and contents across the canonical-vault repository (kushkillerjsixx66/canonical-vault) using GitHub code search.

Args:

  • query (string): Search terms. Supports GitHub code search qualifiers like 'path:governance' or 'extension:md'

  • limit (number): Max results, 1-50 (default: 20)

  • offset (number): Results to skip for pagination (default: 0)

  • response_format ('markdown' | 'json'): Output format (default: 'markdown')

Returns: For JSON format: { "total": number, "count": number, "results": [{ "path": string, "url": string }], "has_more": boolean }

Examples:

  • Use when: "Where is Coherence defined?" -> query="Coherence path:governance"

  • Use when: "Find every mention of vara.py" -> query="vara.py"

  • Don't use when: You already know the exact path (use vault_get_file instead)

Error Handling:

  • Returns "No files found matching ''" if the search returns empty

  • GitHub code search only indexes the default branch and repos under ~size limits; very new commits may lag briefly

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results to return
queryYesSearch terms to match against file contents/names (GitHub code search syntax supported, e.g. 'invariant path:governance')
offsetNoNumber of results to skip for pagination
response_formatNoOutput format: 'markdown' for human-readable or 'json' for machine-readablemarkdown

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint, idempotentHint, etc.), the description discloses meaningful behavioral traits: GitHub code search limitations (only default branch, size limits, indexing lag), the exact error message when no results are found, and the return structure for JSON format. No contradictions with annotations exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (Args, Returns, Examples, Error Handling) and is front-loaded with the core purpose. It repeats some schema details (like parameter defaults) but organizes them efficiently, and every sentence contributes useful information without being verbose or redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is complete for a search tool with pagination, multiple output formats, and external dependencies. It covers search syntax, pagination (offset), format handling, error messages, and known limitations. Since there is no output schema, it explicitly defines the JSON return structure, ensuring the agent knows exactly what to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents each parameter. However, the description adds value beyond the schema by supplying practical examples (e.g., 'path:governance' qualifier), clarifying pagination behavior via offset, and specifying what each response_format yields. This extends the schema's dry definitions with actionable context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Search'), a clear resource ('file names and contents across the canonical-vault repository'), and the method ('using GitHub code search'). This distinguishes it from sibling tools like vault_list_directory or vault_get_file, which serve different actions. The purpose is unambiguous and directly informs the agent when to invoke this tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit 'Use when' and 'Don't use when' examples, including the exact condition for selecting an alternative (already knowing the exact path → use vault_get_file). It also gives concrete query examples and notes error handling, giving the agent clear decision criteria for when to apply this tool versus its siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

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

  1. 5 tool updatesv1.0.0
    • First observedvault_get_commit
    • First observedvault_get_file
    • First observedvault_get_file_history
    • First observedvault_list_directory
    • First observedvault_search_files

TDQS

A4.7/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a distinctly separate purpose: listing a directory, reading a file, tracing commit history, inspecting a single commit, and searching the repository. The descriptions even include explicit 'Don't use when' guidance to prevent confusion.

Naming Consistency5/5

All tools follow a uniform `vault_` prefix with a verb_noun pattern (list_directory, get_file, get_file_history, get_commit, search_files). Naming is idiomatic, consistent, and immediately signals the action and target.

Tool Count5/5

Five tools is a well-scoped set for a read-only repository browsing server. Each tool covers a core operation without redundancy or bloat, making the surface easy to grasp and use.

Completeness5/5

For a read-only vault browsing use case, the set fully covers the necessary operations: navigating (list), reading content (get file), exploring change history (history/commit), and searching. There are no obvious missing capabilities that would block an agent.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers