Skip to content

builtbyproxy/rubyhash-mcp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rubyhash-mcp

MCP server for RubyHash. Gives any MCP-capable agent (Claude Code, Claude Desktop, Cursor, and others) two deterministic Ruby tools:

  • ruby_hash_diff: compare two Ruby hash literals, or paste raw failing Minitest/RSpec output, and get a structured report of exactly what changed: changed values with before and after, added and removed keys, and explicit type changes (nil to String, Integer to Float, symbol keys vs string keys).
  • ruby_to_json: convert a Ruby hash or array literal (hashrockets, symbol keys, shorthand syntax, nesting, nil/true/false) to clean JSON with sorted keys.

Everything runs locally in the server process. Nothing is uploaded, logged, or stored, the same privacy promise as rubyhash.dev.

Tools

  • ruby_hash_diff: Compare two Ruby hash literals, or paste raw failing Minitest/RSpec output, and get a structured report: changed values with before and after, added and removed keys, and explicit type changes (nil to String, Integer to Float, symbol keys vs string keys).
  • ruby_to_json: Convert a Ruby hash or array literal (hashrockets, symbol keys, shorthand syntax, nesting, nil/true/false) to clean JSON with alphabetically sorted keys.

Why an agent would want this

When a Ruby test fails on two large nearly identical hashes, comparing them by reading is slow and error prone, for humans and for language models. A 40-key nested hash diff burns context and invites mistakes. This server does the comparison with a real recursive descent parser and hands back only the differences, deterministically.

Install

{
  "mcpServers": {
    "rubyhash": {
      "command": "npx",
      "args": ["-y", "rubyhash-mcp"]
    }
  }
}

Or for Claude Code:

claude mcp add rubyhash -- npx -y rubyhash-mcp

Example

Input (raw test output):

-{"uid"=>"u@example.test", "role"=>"admin", "seats"=>3}
+{"uid"=>"u@example.test", "role"=>"editor", "seats"=>3.0}

Output:

{
  "equal": false,
  "summary": "2 changed, 0 added, 0 removed, 1 type change",
  "changed": [
    { "path": "role", "before": "admin", "after": "editor", "typeChanged": false },
    { "path": "seats", "before": 3, "after": 3, "beforeType": "Integer", "afterType": "Float", "typeChanged": true }
  ]
}

Also available as an HTTP API

If you cannot run a local MCP server, the same tools are exposed at the RubyHash Agent API, with an OpenAPI description and an x402 machine-payable catalog.

Development

npm install
npm test   # 36 unit tests

License

MIT for this package. The rubyhash.dev site and its browser tool are separate, private, and all rights reserved.

About

MCP server that diffs Ruby hashes for AI coding agents. Paste failing Minitest/RSpec output and get exactly what changed: added, removed, and changed keys with type-change detection. Runs 100% locally, nothing uploaded. From rubyhash.dev

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors