Skip to main content
Glama
TanNhatCMS

github-binary-mcp

by TanNhatCMS

push_binary_file

Pushes a single binary file (image, audio, PDF, ZIP) to an allowed GitHub repository using base64 content, preserving binary data where text-based GitHub tools fail.

Instructions

Push one binary file (image, audio, PDF, zip, ...) to a GitHub repo. content_base64 is forwarded verbatim to the GitHub API — unlike the official GitHub MCP tool, which treats content as plain text. Repo must be in GITHUB_BINARY_ALLOWED_REPOS, path must be under GITHUB_BINARY_ALLOWED_PATHS, max 10 MB.

Input Schema

NameRequiredDescriptionDefault
pathYes
repoYes
ownerYes
branchNo
messageNo
content_base64Yes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose real operational constraints: repo allowlist, path allowlist, and a 10 MB size cap. However, it omits the mutation semantics an agent most needs — whether an existing file at that path is overwritten, whether a commit is created and on which branch by default, and what authorization beyond the allowlist is required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences with no filler: purpose first, the differentiating behavior second, hard constraints last. Every clause carries information an agent needs before calling.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-annotation write tool with no output schema and an undocumented schema, the allowlist and size limits are valuable but not sufficient. Missing is what happens on success (a commit on which ref), overwrite semantics for an existing path, and failure modes — all of which the agent would need to call safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate; it clarifies the riskiest parameter by stating content_base64 is forwarded verbatim (implying raw base64, not plain text). The remaining five parameters — owner, repo, path, branch, message — get no explanation at all, and message as a commit message is left guessable from convention.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Push one binary file (image, audio, PDF, zip, ...) to a GitHub repo") and the "one" makes it distinguishable from sibling push_binary_files. It also positions itself against the official GitHub MCP tool, so an agent knows exactly what kind of write this is.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for selection: use this for binary payloads whose base64 must pass through untouched, as opposed to the official GitHub MCP tool that treats content as plain text. It does not explicitly contrast with push_binary_files (batch) or state when not to use it, but the single-vs-many framing is implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.