Skip to content

git: the git_diff tools return undecodable text for non-UTF-8 file content #5193

Closed

Description

@cliffhall

Problem

git_diff_unstaged, git_diff_staged and git_diff in src/git/src/mcp_server_git/server.py return GitPython's diff output unchanged. GitPython decodes with surrogateescape, so a diff of a non-UTF-8 text file (Latin-1, for example) contains lone surrogates, which cannot be encoded as UTF-8 when the tool result is serialized. Reproduced on v2/main. git_show already decodes with replacement characters.

Expected

The diff tools replace undecodable bytes with U+FFFD, as git_show does, and return a normal result.

Prior work

The PR(s) above targeted the pre-refactor code and are closed as part of the backlog triage in #4875; this issue is where the work continues, with the PR(s) as a prototype. Thank you to their authors.

Activity

  1. added
    bugSomething isn't working
    server-gitReference implementation for the Git MCP server - src/git
    on Oct 20, 2026
  2. cliffhall commented on Oct 20, 2026

    @cliffhall
    MemberAuthor

    Triage: Priority Medium (total 6)

    • Severity 3: the diff tools fail on non-UTF-8 files
    • Urgency 2: wanted eventually
    • Bonuses:
    • +1 bug label

    Filed from the PR backlog triage (#4877). Board: Servers V2 (#43), Status Incoming, awaiting maintainer review (no milestone yet).

  3. added this to the v2.2.0 milestone on Oct 25, 2026
  4. self-assigned this
    on Oct 27, 2026
  5. cliffhall commented on Oct 27, 2026

    @cliffhall
    MemberAuthor

    Shipped in #5312.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingserver-gitReference implementation for the Git MCP server - src/gitv2

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions