An MCP server that monitors and logs tool usage, providing file operations, directory management, and git integration with comprehensive event tracking and dashboard visualization.
Vigilo presents 14 well-named file/git/command tools with consistent verb-noun naming (read_file, write_file, delete_file, etc.). All tools have descriptions (averaging ~60 chars), which is slightly terse but adequate. Input schemas are visible and properly typed in src/server/tools.rs. However, several critical gaps reduce the score: (1) Parameter descriptions are minimal or absent, most params lack detail about format, constraints, or expected values; (2) Output schemas are undocumented, callers cannot predict what fields are returned; (3) Error handling lacks recovery guidance, errors are raw strings with no indication of retry-ability or next steps; (4) No tool descriptions indicate idempotency, side effects, or destructiveness, forcing LLMs to guess about retry safety; (5) The run_command tool exposes dangerous shell execution with minimal safety guidance.
Create a directory and all parent directories
Delete a file
Get metadata about a file or directory
Create a git commit with all changes
Get git diff output
Get git commit history
Get git status of a repository
List all entries in a directory
Parameter descriptions are minimal or missing detail about format, constraints, and valid ranges. E.g., 'path' in read_file lacks guidance on absolute vs. relative paths; 'pattern' in search_files does not explain regex syntax or substring matching rules; 'count' in git_log is unbounded (could accept absurd values).
Output schemas are undocumented. Tool descriptions state what they return (e.g., 'Get git status of a repository') but do not specify the structure of the response (field names, types, nested objects). Callers cannot predict what data to extract or chain to downstream tools.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 58 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 54 | - | v1 |
Move or rename a file
Apply a patch to a file
Read file contents, optionally with line range selection
Execute a shell command
Search for files matching a pattern in a directory
Write content to a file, creating parent directories as needed
Destructive/mutating tools (delete_file, write_file, move_file, git_commit, patch_file) lack explicit warnings about side effects and irreversibility in descriptions. LLMs cannot infer retry safety, they may retry a delete operation, causing data loss. Descriptions must clearly state 'DESTRUCTIVE' or 'IRREVERSIBLE'.
Error handling provides no recovery guidance. E.g., execute_run_command returns raw stderr and exit codes; execute_delete_file returns generic 'deleted {path}' or an unadorned system error. No indication of whether the error is retryable, user-fixable, or fatal. LLMs cannot plan recovery.
run_command tool description lacks safety warnings and usage constraints. It exposes arbitrary shell execution with no mention of sandboxing, injection risks, or command restrictions. Description is only 28 characters ('Execute a shell command'). LLMs will pass malicious payloads without guidance.
git_log 'count' parameter is unbounded. An LLM could request 1,000,000 commits, causing timeout/memory exhaustion. No min/max constraints specified in schema or description. Numeric parameters should always declare bounds.
search_files 'regex' parameter defaults to false and is not declared as required, but description does not explain what happens when regex=true. Pattern syntax, syntax errors, and performance implications are undocumented. LLMs may pass invalid regexes with no guidance.
No tool descriptions include examples of when to call each tool vs. similar ones. E.g., when to use search_files vs. list_directory, or git_diff vs. git_log. Ambiguity forces LLMs to guess, increasing misuse.