MCP server for managing web projects with git-based version control, file operations, branching, publishing, and team collaboration
Kotoji demonstrates solid tool design with 11 well-named, verb-prefixed tools covering a complete Git-like workflow (list, read, write, commit, publish, branch, diff, log, rollback). All tools have descriptions (avg 95 chars) and input schemas with typed parameters. However, output schemas are not documented in the source, parameter descriptions lack format/constraint details (e.g., what constitutes a valid 'handle' or 'branch' name?), and error handling guidance is absent. The optimistic locking pattern (base_sha) is sophisticated but underdocumented. No tool annotations (readOnlyHint/destructiveHint) despite clear risk stratification.
Create a new branch in a project (site) from an existing branch or commit.
Create a NEW project (disabled unless the token AND your account allow creating sites).
Diff two refs in a project (site), or a commit vs its parent.
Return commit history for a project (site) branch (paginated).
List files in a project (site) at a branch or commit.
List the projects you are a member of, with your effective scope on each.
Output schemas not documented. LLMs cannot infer what list_sites, read_file, get_diff, or get_log return, forcing them to guess field names and types for downstream tool chaining.
Parameter descriptions lack format constraints. 'handle' and 'branch' accept free-form strings with no stated length, character, or pattern rules. LLMs will hallucinate invalid values (spaces, special chars, etc.).
No tool annotations (readOnlyHint/destructiveHint/idempotentHint). Tools are clearly stratified by risk (READ_ONLY vs WRITE), but this is not exposed in the MCP schema, forcing LLMs to infer safety from descriptions alone.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | 2026-07-28+ | v2 |
Promote a project (site) branch to the live published site (base_sha REQUIRED).
Read a file from a project (site); returns the commit SHA to pass back as base_sha.
Forward-revert a project (site) branch to a previous commit's tree (base_sha REQUIRED).
Commit the working set on a project (site) branch (base_sha REQUIRED).
Write a file to a project (site) (base_sha REQUIRED; stale base_sha is rejected as conflict).
Error handling guidance absent. No documentation of what errors write_file, save, publish, or rollback return when base_sha conflicts, or how LLMs should recover (retry, ask user, abort).
Optimistic locking (base_sha) is sophisticated but underdocumented. Descriptions do not explain what 'stale base_sha is rejected as conflict' means operationally or how LLMs should handle conflict errors.