A comprehensive MCP server providing file system operations, code analysis, build workflows, version control, and graph database tools for code navigation and manipulation
faCtMCP exposes 31 tools with explicit JSON schemas and descriptions in ToolDefinitions.cpp. However, quality is inconsistent. Most tools have adequate naming (verb_noun pattern) and descriptions (50-300 chars), but critical gaps emerge: (1) Many parameter descriptions are minimal or missing context. E.g., 'bash' tool has no 'required' array despite 'command' being conditionally required; 'terminal' lacks session_id description for 'create' command. (2) Output schemas are completely undocumented, no tool declares what fields it returns, forcing LLMs to guess. (3) Error handling is absent, no guidance on retryability, user-fixable vs fatal errors, or recovery paths. (4) High-risk tools (bash, terminal, delete_*) lack confirmation patterns or dry-run support. (5) Knowledge graph tools (create_entities, delete_entities) have vague array schemas with no field documentation. Baseline: 100% of A+ tools document return types; this server documents zero. Average param description length baseline is 72 chars; many here are 10-30 chars.
Add observations to entities in the knowledge graph.
Code analysis. Commands: complexity, dead_code, unused, cycles, long, duplicate, naming, ast, preprocessor, include_graph.
Run shell commands through WinuxCmd. Supported subcommands: execute (default if omitted), set_cwd, get_cwd, run_background, kill_background, list_background. For common case, send {"cmd":"..."} and it will execute command even if "command" is missing. Use {"command":"set_cwd","path":"..."} to change working directory, or {"command":"get_cwd"} to read it back. Background processes support && and ; command chaining.
Build, test, and lint workflows. Commands: diagnostics, build, log, test, run, lint, format.
Create a directory path, including parents, and return the resolved path.
Create entities in the knowledge graph.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields. Baseline: 100% of A+ tools document return types.
Knowledge graph tools (create_entities, delete_entities, add_observations, etc.) have vague array schemas with no field documentation. E.g., 'entities' is described as 'List of entities to create' but no schema for entity structure (id, name, type, properties).
Destructive tools (bash, terminal, delete_*) lack confirmation patterns or dry-run support. Agents can execute irreversible operations without safeguards.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
Create relations between entities in the knowledge graph.
Delete entities from the knowledge graph.
Delete observations from the knowledge graph.
Delete relations from the knowledge graph.
Recursively build a tree of files and directories.
Open or focus a file in the live editor, find the exact oldtext, replace it by typing newtext in place, then wait for the human user to Save or Revert before returning. A .bak-XX backup copy of the original file is created first for safety. Large inputs may be inserted instantly to avoid client timeouts, but still require Save or Revert.
Live editor state queries. Commands: state, tabs, cursor, selection, outline, recent_symbols, hotspots, activity.
Return metadata for a file or directory.
Version control queries. Commands: diff, status, log, blame, branch, commit_files.
Find files matching a POSIX-like glob pattern. Supports * (any chars in segment), ? (single char), and ** (recursive directory traversal). Returns relative paths sorted alphabetically. Limited to 500 results.
Search file contents using a regex pattern across all files in a directory tree. Skips binary files automatically. Returns file path, line number, and matching line text for each hit. Limited to 100 results by default (max 10000).
List files and directories directly inside a path.
List a directory with file sizes and modification times.
Move or rename a file or directory.
Open or expand nodes in the knowledge graph for detailed inspection.
File and workspace structure. Commands: list, info, tree, root, config, diff, recent, workspace.
Read a file from disk
Read the entire knowledge graph or query specific nodes.
Code transformation previews. Commands: extract, variable, inline, signature, move_file, split, merge.
Recursively search for matching files and directories by name.
Search for nodes in the knowledge graph by name or properties.
Extended thinking for complex reasoning tasks.
Code navigation. Commands: get (list symbols in file), def (find definition), ref (find references), signature, doc, type, inherit, hierarchy.
Interactive terminal session management. Commands: create, send, read, close, list.
Create or focus a file in the live editor, type the provided content into the tab, then wait for the human user to Save or Revert before returning. If the target file already exists, a .bak-XX backup copy is created first for safety. Large inputs may be inserted instantly to avoid client timeouts, but still require Save or Revert.
Multi-command tools (symbols, git, project, build, analyze, refactor, bash, terminal, editor) lack clear subcommand documentation. Parameter descriptions do not explain which subcommands require which parameters or what each returns.
No error handling guidance. Tools do not indicate which errors are retryable, user-fixable, or fatal. No recovery paths provided (e.g., 'If file not found, try search_files() first').