{"_id":"harmony-mcp","_rev":"60-6e7fb7bad13c90325b5dd4b712accf61","name":"harmony-mcp","dist-tags":{"latest":"0.1.6"},"versions":{"0.1.0":{"name":"harmony-mcp","version":"0.1.0","keywords":["mcp","model-context-protocol","code-quality","lint","policy","agents","rules","harmony"],"license":"MIT","_id":"harmony-mcp@0.1.0","maintainers":[{"name":"tawakkul","email":"abdijabarboxer2009@gmail.com"}],"bin":{"harmony-mcp":"src/index.js"},"dist":{"shasum":"bd7ca420d9261dc34c77a2861484b4df9b1893a8","tarball":"https://registry.npmjs.org/harmony-mcp/-/harmony-mcp-0.1.0.tgz","fileCount":3,"integrity":"sha512-gI2UVIJR6q1IzwshFvHPqCevj5DHJ5tofPBWArJc9KkxADYPa89udNYKGplFOeptnlTEnHpuGFS8ycGsIU7geg==","signatures":[{"sig":"MEUCIBi/g6/nokNAVtAUYR2oT4l9CqnR/jF9FWNrTifI3tgxAiEAncJobgLNu48CggegxxXGVQjbTB63GxaxzWJhznGFhcg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10560},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"137dd6a7f470f88f966dab965afe967a8a2f25f0","_npmUser":{"name":"tawakkul","email":"abdijabarboxer2009@gmail.com"},"_npmVersion":"10.9.8","description":"Repo rules enforcement for AI agents. Checks diffs against AGENTS.md conventions and custom policy, and blocks violations before they land.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/harmony-mcp_0.1.0_1789590422571_0.5906872962143792","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"harmony-mcp","version":"0.1.1","keywords":["mcp","model-context-protocol","code-quality","lint","policy","agents","rules","harmony"],"license":"MIT","_id":"harmony-mcp@0.1.1","maintainers":[{"name":"tawakkul","email":"abdijabarboxer2009@gmail.com"}],"bin":{"harmony-mcp":"src/index.js"},"dist":{"shasum":"7dfee2f0b8f7796bf5696ea60f42de773a9fc481","tarball":"https://registry.npmjs.org/harmony-mcp/-/harmony-mcp-0.1.1.tgz","fileCount":3,"integrity":"sha512-XlpLiFjW/1TX4IIEa2cXH2B1pgcb/CF7EVsgubwKJaL8etMvSOotNA6Nz9KvG1PWSw/ZiC4s0wolNRRvdV7feQ==","signatures":[{"sig":"MEQCIEYuDEi0QdZqBB+wvb/bViXdFvOLXYVIaD9feUaemHkaAiAtEbpjG1QecWG/avurY9JHnEwiy67Nc5OqcvvlLPOTKg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICkgqCOpSjBH0S8tid23Shw+iTUsKxgk+Zs5ogM5EBANAiA6UwiDlSCnkrqpu0ijZe8EnmjX29SxgYtuM7AzKv9LKg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10787},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"f968bd92c32c91183740df39b70d4f90e3d783cb","_npmUser":{"name":"tawakkul","email":"abdijabarboxer2009@gmail.com"},"_npmVersion":"10.9.8","description":"Repo rules enforcement for AI agents. Checks diffs against AGENTS.md conventions and custom policy, and blocks violations before they land.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/harmony-mcp_0.1.1_1789591134920_0.4007427683718483","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"harmony-mcp","version":"0.1.2","keywords":["mcp","model-context-protocol","code-quality","lint","policy","agents","rules","harmony"],"license":"MIT","_id":"harmony-mcp@0.1.2","maintainers":[{"name":"tawakkul","email":"abdijabarboxer2009@gmail.com"}],"bin":{"harmony-mcp":"src/index.js"},"dist":{"shasum":"c4c91f0e8b1ba65b2114558a6548379a3b7265d9","tarball":"https://registry.npmjs.org/harmony-mcp/-/harmony-mcp-0.1.2.tgz","fileCount":3,"integrity":"sha512-jBJYiCSLg85Wy/hrggk0hT1TQpuY+6+bmNnwlXrLIhhQVGPOJdKAiODsDk2xQlQRK8tYkheC1Iu6cybZSTNSkA==","signatures":[{"sig":"MEQCIAxB8MD627WNgSQ1SYZreKRrfTB85i0B/xNVAALOeVkYAiBziv+aCLjr01t804JIynQal3D4tvtJXiGWpVRV0Uz2kw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDcHl7tT8cnUVkPo9JzseKL8d8kKcIrt+lEp70aLeieGAiEA5KgKiKR71hZ95Vzmxc8NnnfvG4z6v6EjfOVCzR0DsB8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10787},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"7127bddbe017c94503c0344ed1a947ed53ae340c","_npmUser":{"name":"tawakkul","email":"abdijabarboxer2009@gmail.com"},"_npmVersion":"10.9.8","description":"Repo rules enforcement for AI agents. Checks diffs against AGENTS.md conventions and custom policy, and blocks violations before they land.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/harmony-mcp_0.1.2_1789591219940_0.07415470509028865","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"harmony-mcp","version":"0.1.3","keywords":["mcp","model-context-protocol","code-quality","lint","policy","agents","rules","harmony"],"license":"MIT","_id":"harmony-mcp@0.1.3","maintainers":[{"name":"tawakkul","email":"abdijabarboxer2009@gmail.com"}],"bin":{"harmony-mcp":"src/index.js"},"dist":{"shasum":"34eb6952b2392d93ff1eb0891ff8ea0d32d87530","tarball":"https://registry.npmjs.org/harmony-mcp/-/harmony-mcp-0.1.3.tgz","fileCount":3,"integrity":"sha512-OUNMCo5GN2Jrf3uAhHCuccZTVVDB2XwflApz2bmB3J2e/R+zHh/l7LtSjpeGsmyOqAbhrYFEaHP+R0NRbZZ50g==","signatures":[{"sig":"MEUCIFwfyBGDqsO/3I+tIlClX+Lm0YyH6wuetbM/g14pJAZGAiEAsMVU7AyXZEtJwGMyhCpKpYpOpCMzyrcsqyFlaEy3wkU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCqkcipoaAcnIfxerHXd/wZkVgIwSNz8mW5u1uiLjjNeQIhAP9L039m76BEntV7UgJb38p4E2EWESsfTRzv8qY++Rp7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10918},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"53e07a5f77d9155989027163e5a87abf1bc0b83f","_npmUser":{"name":"tawakkul","email":"abdijabarboxer2009@gmail.com"},"_npmVersion":"10.9.8","description":"Repo rules enforcement for AI agents. Checks diffs against AGENTS.md conventions and custom policy, and blocks violations before they land.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/harmony-mcp_0.1.3_1789594847952_0.7211237237464261","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"harmony-mcp","version":"0.1.4","keywords":["mcp","model-context-protocol","code-quality","lint","policy","agents","rules","harmony"],"license":"MIT","_id":"harmony-mcp@0.1.4","maintainers":[{"name":"tawakkul","email":"abdijabarboxer2009@gmail.com"}],"bin":{"harmony-mcp":"src/index.js"},"dist":{"shasum":"cdd75975cde64b6250dd17c9a81e199a7c692417","tarball":"https://registry.npmjs.org/harmony-mcp/-/harmony-mcp-0.1.4.tgz","fileCount":3,"integrity":"sha512-eSRN+7Fban6akljt3r4cj79hd7pY7U8uB5inAuiQkvCzJPVb/g932bDhRscM5rkz4XLgm7PjzJd7XyOgPygdkw==","signatures":[{"sig":"MEYCIQCgVgFsOTijU99Gn4Pc9j63L4hrFyiCnYkZ254eJPOB4wIhANawGxMqMJsbMK/a1VrSJ424OOtF8yy8PJkp+Hx5eO5i","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIASHMKKlGNedn/ykiKLwyLsGIIxtdeGQZF0VZxEIudXOAiEA8oopMsvW5C8YAwuX/Tfg0SsyX3rYV4kMoik0uGr24ZM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10972},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"53e07a5f77d9155989027163e5a87abf1bc0b83f","mcpName":"io.github.abduljabbarbxr/harmony-mcp","_npmUser":{"name":"tawakkul","email":"abdijabarboxer2009@gmail.com"},"_npmVersion":"10.9.8","description":"Repo rules enforcement for AI agents. Checks diffs against AGENTS.md conventions and custom policy, and blocks violations before they land.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/harmony-mcp_0.1.4_1789596155005_0.5698633611559363","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"harmony-mcp","version":"0.1.5","keywords":["mcp","model-context-protocol","code-quality","lint","policy","agents","rules","harmony"],"license":"MIT","_id":"harmony-mcp@0.1.5","maintainers":[{"name":"tawakkul","email":"abdijabarboxer2009@gmail.com"}],"bin":{"harmony-mcp":"src/index.js"},"dist":{"shasum":"83b037d795ada6ef369a9fc1e4f6fb9b3723d273","tarball":"https://registry.npmjs.org/harmony-mcp/-/harmony-mcp-0.1.5.tgz","fileCount":3,"integrity":"sha512-RpHiV6X4Rxiuw2redBO8KOHE1XxFPouFews0a9/a5+og9mw6cQ++pqwsii5VO8i1GeqBQWzt+oYjC6rA4DbLFw==","signatures":[{"sig":"MEQCIBvy2CcWpvkO/AyW+szrfO7DINQHtNilqWIE4JtDq39yAiA/uXC+HnseaOqJ1tQ66yMnVogUwjXpkhTn5TuV8vKimg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD/xKu//hJOq/dy897HIB/dkpUkWYPzrjf6N8ORfcww6wIhAO9jk4YGqQYrb8GHXoe1pp7qXzl5vTsklCu0Vd68/YEj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10972},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"1dda750509a6abe75a0dac0dae56a1d930a35dd3","mcpName":"io.github.AbduljabbarBXR/harmony-mcp","_npmUser":{"name":"tawakkul","email":"abdijabarboxer2009@gmail.com"},"_npmVersion":"10.9.8","description":"Repo rules enforcement for AI agents. Checks diffs against AGENTS.md conventions and custom policy, and blocks violations before they land.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/harmony-mcp_0.1.5_1789596969394_0.4181589941139492","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"_id":"harmony-mcp@0.1.6","bin":{"harmony-mcp":"src/index.js"},"bugs":{"url":"https://github.com/AbduljabbarBXR/harmony-mcp/issues"},"dist":{"shasum":"1afb1433c36c156ff3dd62e09b3065dd9971ceed","tarball":"https://registry.npmjs.org/harmony-mcp/-/harmony-mcp-0.1.6.tgz","fileCount":3,"integrity":"sha512-W9qQdO+5OsHYAqSC8K/+b1vRswc1SjbKOLNs8x+F6SbXMQvClj7AJnxDXs6KLchXFvGy66C9fSsybtXQ5hU/pQ==","signatures":[{"sig":"MEUCIQDv/GJXe4uvNubuTi0yFoNh0e5zWZbAu9NG4kBaNwEh0wIgV0Lq/zdq6GO6sq22XtnsIXxBPiDZ5j0ti893oLleMvo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIB5D7rU/4s5S33qh4XRUmk2HzVUrb2s4DRItBabwdflpAiEA4WTfM/KFTUOzJDmOqsm9fkKQI6xZH0Q3mHq+PCvn1MU="}],"unpackedSize":11762},"main":"src/index.js","name":"harmony-mcp","type":"module","author":{"name":"AbduljabbarBXR"},"engines":{"node":">=18.0.0"},"gitHead":"127b9ff4df7283b2f250b2dcc9442d91b45893d7","license":"MIT","mcpName":"io.github.AbduljabbarBXR/harmony-mcp","version":"0.1.6","_npmUser":{"name":"tawakkul","email":"abdijabarboxer2009@gmail.com"},"homepage":"https://tawakkul-labs.co.ke","keywords":["mcp","model-context-protocol","code-quality","lint","policy","agents","rules","harmony"],"repository":{"url":"git+https://github.com/AbduljabbarBXR/harmony-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"Repo rules enforcement for AI agents. Checks diffs against AGENTS.md conventions and custom policy, and blocks violations before they land.","directories":{},"maintainers":[{"name":"tawakkul","email":"abdijabarboxer2009@gmail.com"}],"_nodeVersion":"22.22.1","dependencies":{"@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/harmony-mcp_0.1.6_1790096547282_0.6108074481856258"}}},"time":{"created":"2026-09-16T20:27:02.520Z","modified":"2026-09-22T17:02:27.562Z","1.0.0":"2026-01-15T20:51:49.542Z","1.0.1":"2026-01-15T21:12:22.508Z","1.0.2":"2026-01-15T21:25:07.965Z","1.0.3":"2026-01-15T21:41:10.664Z","1.0.4":"2026-01-16T21:15:15.106Z","1.1.0":"2026-01-19T11:00:10.125Z","1.1.1":"2026-01-19T11:32:23.303Z","1.2.0":"2026-01-21T05:14:57.099Z","1.2.1":"2026-01-21T05:17:31.093Z","1.2.2":"2026-01-21T05:24:11.221Z","1.2.3":"2026-01-21T05:25:09.457Z","1.2.4":"2026-01-21T10:44:21.256Z","1.3.0":"2026-01-21T10:54:10.776Z","1.3.1":"2026-01-21T11:42:39.859Z","1.3.2":"2026-01-21T15:19:32.934Z","1.3.3":"2026-01-23T10:21:51.314Z","1.5.0":"2026-01-26T16:34:10.749Z","1.5.1":"2026-01-26T16:42:24.596Z","1.5.2":"2026-01-26T16:54:26.900Z","1.5.3":"2026-01-26T18:05:12.698Z","1.5.4":"2026-01-26T19:08:21.946Z","1.5.5":"2026-01-26T19:48:41.264Z","1.5.8":"2026-01-26T19:55:18.406Z","1.5.9":"2026-01-26T20:05:42.639Z","1.6.0":"2026-01-26T20:11:04.557Z","1.6.1":"2026-01-26T20:45:37.413Z","1.6.2":"2026-01-26T20:46:33.994Z","1.6.3":"2026-01-26T21:31:11.082Z","1.7.0":"2026-02-02T22:19:06.377Z","1.7.1":"2026-02-02T22:41:20.949Z","1.7.2":"2026-02-10T17:28:08.273Z","1.8.0":"2026-02-15T10:42:59.376Z","1.9.0":"2026-02-15T22:23:38.011Z","1.9.1":"2026-02-16T14:08:52.919Z","1.9.2":"2026-02-16T16:58:44.107Z","1.9.3":"2026-02-16T23:09:26.564Z","1.9.4":"2026-02-16T23:19:48.164Z","1.9.5":"2026-02-17T13:06:30.418Z","1.9.6":"2026-02-17T22:32:09.888Z","1.9.7":"2026-02-20T06:57:15.898Z","1.10.0":"2026-02-24T21:03:59.231Z","1.10.2":"2026-02-26T15:44:25.718Z","1.11.0":"2026-02-26T16:07:39.432Z","1.13.0":"2026-03-03T10:15:42.469Z","1.13.1":"2026-03-03T16:09:07.802Z","1.13.2":"2026-03-03T18:47:58.264Z","1.13.3":"2026-03-04T08:04:15.699Z","1.14.0":"2026-03-04T20:51:26.171Z","1.14.1":"2026-03-05T05:56:29.824Z","1.14.2":"2026-03-05T15:21:10.133Z","1.15.0":"2026-03-13T20:03:38.201Z","0.1.0":"2026-09-16T20:27:02.698Z","0.1.1":"2026-09-16T20:38:55.059Z","0.1.2":"2026-09-16T20:40:20.010Z","0.1.3":"2026-09-16T21:40:48.056Z","0.1.4":"2026-09-16T22:02:35.077Z","0.1.5":"2026-09-16T22:16:09.487Z","0.1.6":"2026-09-22T17:02:27.363Z"},"license":"MIT","keywords":["mcp","model-context-protocol","code-quality","lint","policy","agents","rules","harmony"],"description":"Repo rules enforcement for AI agents. Checks diffs against AGENTS.md conventions and custom policy, and blocks violations before they land.","maintainers":[{"name":"tawakkul","email":"abdijabarboxer2009@gmail.com"}],"readme":"# harmony-mcp\n\n[![npm](https://img.shields.io/npm/v/harmony-mcp)](https://www.npmjs.com/package/harmony-mcp) [![license](https://img.shields.io/npm/l/harmony-mcp)](LICENSE) [![MCP](https://img.shields.io/badge/MCP-compatible-blue)](https://modelcontextprotocol.io) [![Tawakkul Labs](https://img.shields.io/badge/by-Tawakkul%20Labs-0f766e)](https://tawakkul-labs.co.ke)\n\nRepo rules enforcement for AI agents. Harmony checks diffs against the repository rule set and returns findings before a change lands. It gives an agent the same guard rails a senior reviewer would: no trailing whitespace, no debug leftovers, no committed secrets, and any custom policy the repo declares.\n\nBuilt as an MCP server, so it works in any platform that speaks Model Context Protocol: CLI agents, Cursor style editors, VS Code extensions, Kilo, and terminals.\n\n## Why\n\nAgents follow instructions inconsistently. A repo declares a convention in AGENTS.md, an agent edits ten files, and the convention is broken on the eleventh. No one notices until a human reviews. Harmony turns declared rules into a check that runs on every diff, before the patch is applied.\n\n## Tools\n\n### rules.load\n\nLoad the rule set for a repository. Returns the built in rules plus any custom rules from `.harmony/rules.json`.\n\n### rules.check\n\nCheck a diff against the rule set. If no diff is provided, the working tree diff of the repository is used. Returns findings with file, line, rule, severity, and the offending content.\n\n## Built in rules\n\n| id | severity | checks |\n| --- | --- | --- |\n| no-trailing-whitespace | warning | lines ending in spaces or tabs |\n| no-debug-leftovers | warning | console.log, console.debug, debugger |\n| no-committed-secrets | blocker | api keys, passwords, tokens, and common secret shapes |\n| no-tabs | info | tab indentation in changed code |\n\n## Custom rules\n\nAdd a `.harmony/rules.json` at the repository root. Each rule declares an id, a regex, a message, matching files, and a severity.\n\n```json\n{\n  \"rules\": [\n    {\n      \"id\": \"no-hyphens-ui\",\n      \"regex\": \"[a-z]-[a-z]\",\n      \"message\": \"No dashes in UI text\",\n      \"files\": [\"**/*.astro\", \"**/*.md\", \"**/*.html\"],\n      \"severity\": \"warning\"\n    },\n    {\n      \"id\": \"no-todo-merge\",\n      \"regex\": \"TODO\\\\s*:\\\\s*(merge|rebase)\",\n      \"message\": \"TODO markers must not reference merge or rebase work\",\n      \"files\": [\"**/*\"],\n      \"severity\": \"blocker\"\n    }\n  ]\n}\n```\n\nFile patterns support `*` and `**` globs.\n\n## Usage\n\nRun the server:\n\n```bash\nharmony-mcp\n```\n\nConfigure it as an MCP server in your client:\n\n```json\n{\n  \"mcpServers\": {\n    \"harmony\": {\n      \"command\": \"harmony-mcp\",\n      \"args\": []\n    }\n  }\n}\n```\n\nThen ask the agent:\n\n* \"Check the current diff against the repo rules.\"\n* \"Block any change that adds a secret.\"\n* \"Does the diff violate AGENTS.md?\"\n\n## Install\n\n```bash\nnpm install -g harmony-mcp\n```\n\n## License\n\nMIT. Part of the Tawakkul Labs open source family alongside HEIDES, Heides Lens, Cornea, and HEIDES VOLT.\n\n---\n\nLinks: [npm](https://www.npmjs.com/package/harmony-mcp) | [GitHub](https://github.com/AbduljabbarBXR/harmony-mcp) | [Tawakkul Labs](https://tawakkul-labs.co.ke)\n","readmeFilename":"README.md","homepage":"https://tawakkul-labs.co.ke","repository":{"url":"git+https://github.com/AbduljabbarBXR/harmony-mcp.git","type":"git"},"author":{"name":"AbduljabbarBXR"},"bugs":{"url":"https://github.com/AbduljabbarBXR/harmony-mcp/issues"}}