Skip to main content
Glama

diff-mcp

by benjamine
index.html19.6 kB
<!doctype html> <html lang="en"> <head> <title>JsonDiffPatch</title> <meta name="description" content="JsonDiffPatch is a free online json diff tool and npm library to compare json and get a json diff" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="canonical" href="https://jsondiffpatch.com/" /> <link rel="icon" href="logo.svg" type="image/svg+xml" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:creator" content="@beneidel" /> <meta name="twitter:title" content="JsonDiffPatch" /> <meta name="twitter:description" content="JsonDiffPatch is a free online json diff tool and npm library to compare json and get a json diff." /> <meta name="twitter:image" content="https://jsondiffpatch.com/jsondiffpatch-visual-diff.png" /> <meta property="og:type" content="website" /> <meta property="og:title" content="JsonDiffPatch" /> <meta property="og:description" content="JsonDiffPatch is a free online json diff tool and npm library to compare json and get a json diff." /> <meta property="og:locale" content="en_US" /> <meta property="og:url" content="http://jsondiffpatch/" /> <meta property="og:image" content="https://jsondiffpatch.com/jsondiffpatch-visual-diff.png" /> <meta property="og:image:type" content="image/png" /> <meta property="og:image:width" content="774" /> <meta property="og:image:height" content="774" /> <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'report-sample' 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com/ajax/libs/codemirror/6.65.7/codemirror.min.js https://cdnjs.cloudflare.com/ajax/libs/codemirror/6.65.7/mode/javascript/javascript.min.js https://www.google-analytics.com/analytics.js https://www.googletagmanager.com/gtag/js http://www.google-analytics.com/analytics.js; style-src 'report-sample' 'self' 'unsafe-inline' https://cdnjs.cloudflare.com; object-src 'none'; base-uri 'self'; connect-src 'self' https://api.github.com https://www.google-analytics.com; font-src 'self'; frame-src 'self'; img-src 'self' https://img.shields.io; manifest-src 'self'; media-src 'self'; worker-src 'none';" /> <meta name="color-scheme" content="dark light" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="utf-8" http-equiv="encoding" /> <meta content="text/html;charset=utf-8" http-equiv="Content-Type" /> <!-- Google tag (gtag.js) --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-F2ZTFWQ8CL" ></script> <script> window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } gtag('js', new Date()); gtag('config', 'G-F2ZTFWQ8CL'); </script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/1.0.3/css/bulma.min.css" integrity="sha512-4EnjWdm80dyWrJ7rh/tlhNt6fJL52dSDSHNEqfdVmBLpJLPrRYnFa+Kn4ZZL+FRkDL5/7lAXuHylzJkpzkSM2A==" crossorigin="anonymous" referrerpolicy="no-referrer" /> <link rel="stylesheet" href="style.css" type="text/css" media="screen" /> <link rel="stylesheet" href="./build/demo.css" type="text/css" media="screen" /> <!-- codemirror with javascript support and monokai for darkmode --> <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/6.65.7/codemirror.min.js" integrity="sha512-8RnEqURPUc5aqFEN04aQEiPlSAdE0jlFS/9iGgUyNtwFnSKCXhmB6ZTNl7LnDtDWKabJIASzXrzD0K+LYexU9g==" crossorigin="anonymous" referrerpolicy="no-referrer" ></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/6.65.7/codemirror.min.css" integrity="sha512-uf06llspW44/LZpHzHT6qBOIVODjWtv4MxCricRxkzvopAlSWnTf6hpZTFxuuZcuNE9CBQhqE0Seu1CoRk84nQ==" crossorigin="anonymous" referrerpolicy="no-referrer" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/6.65.7/theme/monokai.min.css" integrity="sha512-R6PH4vSzF2Yxjdvb2p2FA06yWul+U0PDDav4b/od/oXf9Iw37zl10plvwOXelrjV2Ai7Eo3vyHeyFUjhXdBCVQ==" crossorigin="anonymous" referrerpolicy="no-referrer" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/6.65.7/mode/javascript/javascript.min.js" integrity="sha512-I6CdJdruzGtvDyvdO4YsiAq+pkWf2efgd1ZUSK2FnM/u2VuRASPC7GowWQrWyjxCZn6CT89s3ddGI+be0Ak9Fg==" crossorigin="anonymous" referrerpolicy="no-referrer" ></script> </head> <body> <script> (function () { const darkModeOverride = localStorage.getItem('color-scheme'); if (darkModeOverride === 'dark' || darkModeOverride === 'light') { document .querySelector('meta[name="color-scheme"]') .setAttribute( 'content', darkModeOverride === 'dark' ? 'only dark' : 'only light', ); } const darkMode = darkModeOverride === 'dark' || (darkModeOverride !== 'light' && window.matchMedia('(prefers-color-scheme: dark)').matches); document.documentElement.setAttribute( 'data-theme', darkMode ? 'dark' : 'light', ); })(); </script> <a href="https://github.com/benjamine/jsondiffpatch" class="github-corner" target="_blank" ><svg width="80" height="80" viewBox="0 0 250 250" style="position: fixed; top: 0; border: 0; right: 0" > <path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path> <path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px" class="octo-arm" ></path> <path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body" ></path></svg ></a> <style> .github-corner:hover .octo-arm { animation: octocat-wave 560ms ease-in-out; } .github-corner svg { fill: #340000; color: white; } [data-theme='dark'] .github-corner svg { fill: #b9ffe3; color: black; } @keyframes octocat-wave { 0%, 100% { transform: rotate(0); } 20%, 60% { transform: rotate(-25deg); } 40%, 80% { transform: rotate(10deg); } } @media (max-width: 500px) { .github-corner:hover .octo-arm { animation: none; } .github-corner .octo-arm { animation: octocat-wave 560ms ease-in-out; } } </style> <header> <div> <h1>JsonDiffPatch</h1> <div aria-hidden="true" id="diffed-h1"> Js<span class="jsondiffpatch-textdiff-deleted"><span>on</span></span ><span class="jsondiffpatch-textdiff-added"><span>Diff</span></span >Patch </div> <span id="description"></span> <a id="external-link" style="display: none" target="_blank">source</a> </div> <nav> <div class="dropdown is-hoverable"> <div class="dropdown-trigger"> <button class="button" aria-haspopup="true" aria-controls="dropdown-menu" > <span>Examples</span> <span class="icon is-small"> <i class="fas fa-angle-down" aria-hidden="true"></i> </span> </button> </div> <div class="dropdown-menu" id="dropdown-menu" role="menu"> <div class="dropdown-content"> <a href="?example=default" class="dropdown-item">default</a> <a href="?example=text" class="dropdown-item">text</a> <a href="?example=moving" class="dropdown-item" >moving items around</a > <a href="?benjamine/9188826" class="dropdown-item" >from a <svg width="1rem" height="1rem" style=" margin: 0 0.2rem; display: inline-block; max-width: 16px; max-height: 16px; " viewBox="0 0 98 96" fill="currentColor" xmlns="http://www.w3.org/2000/svg" > <path fill-rule="evenodd" clip-rule="evenodd" d="M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z" /> </svg> gist </a> <a href="?example=query" class="dropdown-item">query params</a> </div> </div> </div> <button id="color-scheme-toggle" title="Toggle theme"> <svg class="go-dark-icon" width="24" height="24" viewBox="0 0 24 24" stroke="currentColor" fill="none" stroke-width="3" stroke-linejoin="round" title="Dark mode" > <path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z" /> </svg> <svg class="go-light-icon" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" title="Light mode" > <circle cx="12" cy="12" r="4" /> <path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41" /> </svg> </button> <script> (function () { document .querySelector('#color-scheme-toggle') .addEventListener('click', () => { const systemColorSchema = window.matchMedia( '(prefers-color-scheme: dark)', ).matches ? 'dark' : 'light'; const newColorScheme = document.documentElement.getAttribute('data-theme') === 'dark' ? 'light' : 'dark'; const resetToSystem = newColorScheme === systemColorSchema; document.documentElement.setAttribute( 'data-theme', newColorScheme, ); document .querySelector('meta[name="color-scheme"]') .setAttribute( 'content', resetToSystem ? 'dark light' : newColorScheme === 'dark' ? 'only dark' : 'only light', ); localStorage.setItem( 'color-scheme', resetToSystem ? 'system' : newColorScheme, ); }); })(); </script> </nav> </header> <div class="editors-toolbar"> <div> <button id="swap" type="button" class="button">Swap</button> <button id="clear" type="button" class="button">Clear</button> </div> </div> <div class="json-input"> <div id="json-panel-left"> <label for="json-input-left"> <h2>JSON Left</h2> </label> <button class="reformat button" type="button" title="Pretty print"> { } </button> <textarea id="json-input-left"> loading... </textarea > <span class="error-message"></span> </div> <div id="json-panel-right"> <label for="json-input-right"> <h2>JSON Right</h2> </label> <button class="reformat button" type="button" title="Pretty print"> { } </button> <textarea id="json-input-right"> loading... </textarea > <span class="error-message"></span> </div> </div> <section id="results" data-delta-type="visual"> <div class="tabs is-boxed"> <ul class="delta-type-switch"> <li class="is-active"><a href="#delta-visual">Visual Diff</a></li> <li><a href="#delta-json">JSON</a></li> <li><a href="#delta-annotated">JSON (Annotated)</a></li> <li><a href="#delta-jsonpatch">JSONPatch (RFC 6902)</a></li> </ul> </div> <div id="delta-panel-visual" class="delta-panel"> <div class="header-options"> <label class="checkbox"> <input type="checkbox" id="showunchanged" /> Show unchanged values </label> </div> <p id="visualdiff"></p> </div> <div id="delta-panel-annotated" class="delta-panel"> <p id="annotateddiff"></p> </div> <div id="delta-panel-json" class="delta-panel"> <p> (<span id="jsondifflength"></span> KB) </p> <textarea id="json-delta" readonly> </textarea> <span class="error-message"></span> </div> <div id="delta-panel-jsonpatch" class="delta-panel"> <p> (<span id="jsonpatchlength"></span> KB) </p> <textarea id="jsonpatch" readonly> </textarea> <span class="error-message"></span> </div> </section> <section id="features" class="content"> <h2>Features</h2> <ul> <li> compare 2 json. this tool also supports json5, json with comments, or plain text </li> <li> output visual diff, json (see <a href="https://github.com/benjamine/jsondiffpatch/blob/master/docs/deltas.md" rel="nofollow" target="_blank" >delta format</a >), or json patch (<a href="https://datatracker.ietf.org/doc/html/rfc6902" target="_blank" rel="nofollow" >RFC 6902</a >) </li> <li> smart diff arrays/lists. if items are objects a "key", "id", or "name" is automatically used to match </li> <li> text diff. for long string or text, a text diff is done at characther level (using <a href="https://github.com/google/diff-match-patch" target="_blank" >google/diff-match-patch</a >) </li> <li> use on your terminal (local files or http urls): <pre class="terminal"> <code> npx jsondiffpatch https://jsondiffpatch.com/demo/left.json https://jsondiffpatch.com/demo/right.json </code> </pre> </li> <li> compare json from a <svg width="1rem" height="1rem" style=" margin: 0 0.2rem; display: inline-block; max-width: 16px; max-height: 16px; " viewBox="0 0 98 96" fill="currentColor" xmlns="http://www.w3.org/2000/svg" > <path fill-rule="evenodd" clip-rule="evenodd" d="M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z" /> </svg> gist (see <a href="/?benjamine/9188826">example</a>)<br /> <ol> <li> <a href="https://gist.github.com/" rel="nofollow" >create a gist</a > </li> <li>add 2 json files on the gist</li> <li> paste the gist url here: <input id="gist_url" type="text" name="gist_url" /> </li> </ol> </li> </ul> </section> <footer> <p> powered by the <a class="library-link" href="https://github.com/benjamine/jsondiffpatch" >jsondiffpatch</a > library </p> <p align="center"> <a href="https://twitter.com/beneidel" rel="nofollow" ><img src="https://img.shields.io/badge/created%20by-@beneidel-BACABA.svg" alt="Created by Benjamin Eidelman" /></a> <a href="https://opensource.org/licenses/MIT" rel="nofollow" ><img src="https://img.shields.io/github/license/benjamine/jsondiffpatch" alt="License" /></a> <a href="https://www.npmjs.com/package/jsondiffpatch" rel="nofollow" ><img src="https://img.shields.io/npm/dw/jsondiffpatch.svg" alt="npm" /></a> <a href="https://github.com/benjamine/jsondiffpatch" rel="nofollow" ><img src="https://img.shields.io/github/stars/benjamine/jsondiffpatch" alt="stars" /></a> </p> </footer> <script src="build/demo.js" type="module"></script> </body> </html>

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/benjamine/jsondiffpatch'

If you have feedback or need assistance with the MCP directory API, please join our Discord server