Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 57 additions & 0 deletions mcp-registry/servers/orphograph.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
{
"name": "orphograph",
"display_name": "Orphograph",
"description": "Anchor a file, folder, or agent-generated output to the Bitcoin blockchain via OpenTimestamps and get a receipt anyone can verify independently. Hashing is local — only the fingerprint crosses the wire, never the file.",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

Correct the privacy claim for folder anchoring.

Folder anchoring transmits a manifest containing relative paths, SHA-256 digests, and the Merkle root—not only a fingerprint. Update this description so users understand that filenames/path metadata may also leave the device. (raw.githubusercontent.com)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@mcp-registry/servers/orphograph.json` at line 4, Update the description value
in orphograph.json to remove the claim that only a fingerprint crosses the wire
and explicitly state that folder anchoring may transmit a manifest containing
relative paths, SHA-256 digests, and the Merkle root, so users understand that
filename and path metadata may leave the device.

"repository": {
"type": "git",
"url": "https://github.com/Orphograph/Orphograph"
},
"homepage": "https://orphograph.com/mcp",
"author": {
"name": "Orphograph"
},
"license": "MIT",
"categories": [
"Dev Tools"
],
"tags": [
"provenance",
"timestamping",
"opentimestamps",
"bitcoin",
"audit-trail",
"integrity"
],
"installations": {
"custom": {
"type": "python",
"command": "python3",
"args": [
"orphograph_mcp.py"
],
Comment on lines +27 to +31
Comment on lines +26 to +31

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remediation recommended

2. Non-portable python3 command 🐞 Bug ☼ Reliability

The manifest hardcodes command: "python3", which is not consistently available across
platforms/environments (notably many Windows setups), so even if the script is present the server
may not start. Other Python-based registry entries use python (or alternative methods like uvx)
instead of python3.
Agent Prompt
## Issue description
`python3` is not a universally-available executable name (commonly missing on Windows or when only `python`/`py` is installed). Since MCPM spawns the configured command directly (no shell aliasing), this can prevent the server from starting.

## Issue Context
Other Python-based server manifests in this registry use `python` (or `uvx`) rather than `python3`.

## Fix Focus Areas
- mcp-registry/servers/orphograph.json[26-31]

## Suggested change
Switch to `command: "python"` and/or provide multiple installation methods (e.g., a Windows-friendly `py -3` method) with one marked `recommended: true`.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

"description": "Single file, Python >=3.9 standard library only, no dependencies. Download with: curl -sSL https://orphograph.com/mcp/orphograph_mcp.py -o orphograph_mcp.py"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift

Pin or integrity-check the downloaded executable.

This instruction downloads mutable Python code that runs with local filesystem access, without a release pin, checksum, or signature. Publish an immutable artifact and verification procedure before recommending this installation path. (github.com)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@mcp-registry/servers/orphograph.json` at line 32, Update the installation
guidance in the server description to reference an immutable, release-pinned
Orphograph artifact and provide its checksum or signature verification procedure
before execution; do not continue recommending the mutable unverified download
URL.

}
Comment on lines +25 to +33

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

1. Missing runnable server artifact 🐞 Bug ≡ Correctness

The manifest configures MCPM to execute python3 orphograph_mcp.py, but the registry entry provides
no install mechanism that ensures orphograph_mcp.py exists at runtime, so mcpm run orphograph
will typically fail with “file not found”. MCPM only records the command/args into config and then
spawns that command later; it does not run the described curl step.
Agent Prompt
## Issue description
The registry entry sets the runtime command to `python3 orphograph_mcp.py`, but nothing in MCPM or the manifest downloads/installs `orphograph_mcp.py`. As a result, users who install from the registry will get a broken server command unless they manually place the script where the process can find it.

## Issue Context
MCPM selects an installation method from `installations`, then stores its `command`/`args` as the server’s execution configuration. At runtime, MCPM/FastMCP spawns exactly that `command` + `args`.

## Fix Focus Areas
- mcp-registry/servers/orphograph.json[25-33]

## Expected fix direction
Update the installation method so that it is runnable without out-of-band manual steps, e.g.:
- Prefer a distributable method (publish a pip package / uvx-compatible package) and use `python -m <module>` or `uvx <package>` like other registry entries.
- Or, if it must remain single-file, change the command to a self-contained launcher (e.g., `python -c "..."`) that downloads to a deterministic cache location and then `runpy.run_path(...)` to start the server in the same process (so STDIO remains available).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines +31 to +33

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remediation recommended

3. No integrity check for download 🐞 Bug ⛨ Security

The installation description instructs downloading an executable Python script via curl with no
checksum/signature verification, so users cannot detect tampering if the hosting endpoint or
delivery path is compromised. This is a supply-chain integrity gap in the recommended install flow.
Agent Prompt
## Issue description
The manifest’s install guidance tells users to download an executable Python file but provides no integrity verification step (e.g., SHA-256 checksum or signature verification).

## Issue Context
Even with HTTPS, publishing a pinned checksum/signature materially reduces supply-chain risk for “curl to a script” installs.

## Fix Focus Areas
- mcp-registry/servers/orphograph.json[31-33]

## Suggested change
Update the installation description (or add an additional installation method) to include a pinned SHA-256 (or signature) and a concrete verification command before execution.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

},
"examples": [
{
"title": "Prove a file existed before a deadline",
"description": "Anchor a contract draft so its existence-by-date can be checked later by someone who does not trust either party's filesystem.",
"prompt": "_Anchor ~/contracts/draft-v3.pdf and give me the receipt id_"
},
{
"title": "Anchor an agent's output at the moment it is produced",
"description": "Commit the fingerprint of a generated result so the record cannot be revised after the fact.",
"prompt": "_Anchor the report you just generated, then tell me its receipt id_"
},
{
"title": "Anchor a whole dataset under one root",
"description": "Build an RFC-6962 Merkle manifest over a directory so a single anchored root covers every file in it.",
"prompt": "_Anchor the folder ~/datasets/training-set-v2 and show me the Merkle root_"
},
{
"title": "Verify a receipt someone showed you",
"description": "Check a receipt against the OpenTimestamps calendars and the Bitcoin chain.",
"prompt": "_Verify Orphograph receipt XwTULwlh76PcCst9_"
}
]
}
Loading