# Unwritten [Health: Active]

**Category:** 🔄 Version Control  
**Repository:** https://github.com/Byggarepop/Unwritten  
**GitHub Stars:** 1  
**Views:** 3  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/unwritten

## Description
Git-history hole detector: flags files and C# members that co-change with your edit but are absent

## Claude Desktop Quick Installation
Heuristic fallback — verify the package name and runner against the repository README before running it. Uses `npx` (confidence: low):

```json
"mcpServers": {
  "unwritten": {
    "command": "npx",
    "args": ["-y","unwritten"]
  }
}
```

## Documentation

## What Unwritten MCP server does

Unwritten analyzes Git history to find files that commonly change together. When an edit changes one member of a known relationship but leaves another untouched, it reports the missing item as a possible hole. Each result includes a confidence score and example commits that support the relationship, helping a developer decide whether the omission is intentional.

File-level detection works across repositories written in any language, including Python, TypeScript, Go, C#, and mixed-language projects. C# repositories receive additional method-level rules and filtering for cosmetic edits. JSON files receive key-level noise filtering.

The Unwritten MCP server is intended for coding agents that need to inspect their own changes during a session. It also supports command-line checks that can run before commits.

## How it works

The tool learns co-change relationships from the repository's Git history. Its index records how often related files or members have changed together. A check compares the current edit with those learned relationships and reports companions that are absent. Results include the observed co-change confidence and commit examples rather than only naming a suspected file.

The index is stored in the repository's `.unwritten/` directory. Commands build the index automatically on first use and keep it current. Running `reindex` can warm the index before the first query. A configured threshold can cause a check to fail when a hole reaches the selected confidence level; the example uses a threshold of 0.70.

## Setup and configuration

Running Unwritten requires the .NET SDK version 10 or newer. From the repository root, the README documents this command to build or refresh the index:

```bash
dotnet tool execute Unwritten --yes -- reindex
```

To register the MCP server with Claude Code, use:

```bash
claude mcp add unwritten -- dotnet tool execute Unwritten --yes -- mcp
```

The project also documents a setup command for a Git pre-commit hook and a Claude Code Stop hook:

```bash
dotnet tool execute Unwritten --yes -- install-hook --git --claude-code
```

The provided material points to a separate configuration reference in the project documentation, but does not include its configuration fields here.

## Tools and capabilities

The documented MCP capability is `check_holes`, which an agent can call after editing. CLI functionality includes index rebuilding, checking for holes, displaying index statistics, and installing hooks. Checks can identify missing companion files and, where supported, C# members. The reported resolution paths include updating the companion, committing despite the warning, or muting a rule.

## Limitations and notes

Unwritten does not require a server process, subscription, or API tokens according to the README. Its runtime dependency is the .NET SDK, even when the analyzed repository uses another programming language. The supplied material documents registration for Claude Code; it does not establish compatibility with Claude Desktop, Cursor, Windsurf, or Cline.

Detection depends on patterns present in Git history, so a repository with limited or unrepresentative history may provide fewer useful relationships. A reported hole is a warning based on co-change evidence, not proof that the omitted file or member must be edited. The README also identifies additional behavior and unfinished areas in the linked documentation, but those details are not included in the supplied excerpt.

_Full upstream README: https://allmcps.com/mcp/unwritten/readme_

