{"_id":"@ablukis/conventions-mcp","_rev":"8-3ab6a701aed90b9c68ce0a9e13622f96","name":"@ablukis/conventions-mcp","dist-tags":{"latest":"1.1.2"},"versions":{"0.3.0":{"name":"@ablukis/conventions-mcp","version":"0.3.0","keywords":["mcp","model-context-protocol","conventions","coding-standards","best-practices","enterprise","community","claude","cursor","ai"],"author":{"name":"Andis A. Blukis"},"license":"MIT","_id":"@ablukis/conventions-mcp@0.3.0","maintainers":[{"name":"ablukis","email":"andis.blukis@gmail.com"}],"homepage":"https://github.com/andisab/conventions-mcp#readme","bugs":{"url":"https://github.com/andisab/conventions-mcp/issues"},"bin":{"conventions-mcp":"dist/index.js"},"dist":{"shasum":"d6d92ccdb5c97f8b47b8f0ed658593ba2b9d79b1","tarball":"https://registry.npmjs.org/@ablukis/conventions-mcp/-/conventions-mcp-0.3.0.tgz","fileCount":34,"integrity":"sha512-GhhZbVWEMYUvhoVK4PcCQ6jy4pVoQhGQXDthLBY7zTcxv809Tj0OcLt9e3rUfgsY6+sxYZgy8ui9OeFy/2CBGw==","signatures":[{"sig":"MEUCIHgWnfm0fRP6H+Cjr3/bf8dFWbwcUCvobu5RqzRrzlFeAiEAy2pOYevR9WnJHjwYZqXK0cV990ktEKrzszER5B4D1t8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88648},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"87203b0ad385b33ed82e4de799a095ffad6d94be","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src/**/*.ts","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"ablukis","email":"andis.blukis@gmail.com"},"repository":{"url":"git+https://github.com/andisab/conventions-mcp.git","type":"git"},"_npmVersion":"11.6.0","description":"MCP server for accessing coding conventions and standards from community and enterprise repositories","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zod":"^3.23.8","yaml":"^2.3.4","fuse.js":"^7.0.0","gray-matter":"^4.0.3","@modelcontextprotocol/sdk":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.0","typescript":"^5.4.0","@types/node":"^20.14.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/conventions-mcp_0.3.0_1761257103472_0.05796623332866879","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@ablukis/conventions-mcp","version":"1.0.1","keywords":["mcp","model-context-protocol","conventions","coding-standards","best-practices","enterprise","community","claude","cursor","ai"],"author":{"name":"Andis A. Blukis"},"license":"MIT","_id":"@ablukis/conventions-mcp@1.0.1","maintainers":[{"name":"ablukis","email":"andis.blukis@gmail.com"}],"homepage":"https://github.com/andisab/conventions-mcp#readme","bugs":{"url":"https://github.com/andisab/conventions-mcp/issues"},"bin":{"conventions-mcp":"dist/index.js"},"dist":{"shasum":"893677085487a6011baaac8eb1970bacd7688168","tarball":"https://registry.npmjs.org/@ablukis/conventions-mcp/-/conventions-mcp-1.0.1.tgz","fileCount":133,"integrity":"sha512-Y/Gfw4ro6IZLe074a7m6+Rxa6cwpT5BZMJYC3LAxj8hri9OLh3Lmn2ApUDMuUX16HcwnXoyyGgC9phfjqJWtog==","signatures":[{"sig":"MEUCIQDXw03y0epcz//5mUFdBf66T9LXLJi4h2Dl2fP5GOLWdgIgZzo/r3T+xp56b0tzJiW2oNX++gqoPylGy3LEtGNkOkM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1123735},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"91300ae419ba56e2708402021c96abbdb704f763","scripts":{"dev":"npm run index && concurrently \"tsx watch src/index.ts\" \"npm run index:watch\"","lint":"eslint src/**/*.ts","build":"npm run index && tsc","clean":"rm -rf dist","index":"tsx scripts/generate-index.ts","start":"node dist/index.js","test:all":"npm run test:integration && npm run test:services","typecheck":"tsc --noEmit","index:watch":"tsx scripts/watch-index.ts","test:phase1":"npm run build && node tests/integration/test-mcp-tools.js && tsx tests/services/test-cache-manager.ts && node tests/integration/test-error-handling.js","test:phase2":"npm run test:phase1 && tsx tests/services/test-git-operations.ts && tsx tests/services/test-search-engine.ts && node tests/integration/test-ssh-auth.js","test:services":"npm run build && tsx tests/services/test-cache-manager.ts && tsx tests/services/test-git-operations.ts && tsx tests/services/test-search-engine.ts","prepublishOnly":"npm run build","test:integration":"npm run build && node tests/integration/test-token-counting.js && node tests/integration/test-token-warnings.js && node tests/integration/test-relevance-filter.js && node tests/integration/test-multi-repo.js && node tests/integration/test-local-directories.js && node tests/integration/test-index-generation.js && node tests/integration/test-mcp-tools.js && node tests/integration/test-error-handling.js && node tests/integration/test-ssh-auth.js"},"_npmUser":{"name":"ablukis","email":"andis.blukis@gmail.com"},"repository":{"url":"git+https://github.com/andisab/conventions-mcp.git","type":"git"},"_npmVersion":"11.6.0","description":"MCP server for accessing coding conventions and standards from community and enterprise repositories","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zod":"^3.23.8","yaml":"^2.3.4","fuse.js":"^7.0.0","tiktoken":"^1.0.18","simple-git":"3.28.0","gray-matter":"^4.0.3","@modelcontextprotocol/sdk":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.0","chokidar":"^3.5.3","typescript":"^5.4.0","@types/node":"^20.14.0","concurrently":"^8.2.2","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/conventions-mcp_1.0.1_1761430063597_0.17365464172293055","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@ablukis/conventions-mcp","version":"1.0.2","keywords":["mcp","model-context-protocol","conventions","coding-standards","best-practices","enterprise","community","claude","cursor","ai"],"author":{"name":"Andis A. Blukis"},"license":"MIT","_id":"@ablukis/conventions-mcp@1.0.2","maintainers":[{"name":"ablukis","email":"andis.blukis@gmail.com"}],"homepage":"https://github.com/andisab/conventions-mcp#readme","bugs":{"url":"https://github.com/andisab/conventions-mcp/issues"},"bin":{"conventions-mcp":"dist/index.js"},"dist":{"shasum":"764f7db5cdc091dfcde361b6a422536a43d6e2e0","tarball":"https://registry.npmjs.org/@ablukis/conventions-mcp/-/conventions-mcp-1.0.2.tgz","fileCount":133,"integrity":"sha512-GhVx6neDsANrhYCK/RFXP+AyujWxPt2/bmoUIpKhn2dv+MW6vDf1c1RBGW8wiSDhXSnsBDNrjtS341DWKZkkMQ==","signatures":[{"sig":"MEYCIQDw63R0ZRnLNg5FVL4WUQbGYPhVszJPmCa6xjJWemCEvwIhAM+FbylJ9WGUIi5akZ4u22bRafxQfyb4SsTmRcuIFBUN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1123602},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a76ccfa416095a62849d0581dce1abf328b977b9","scripts":{"dev":"npm run index && concurrently \"tsx watch src/index.ts\" \"npm run index:watch\"","lint":"eslint src/**/*.ts","build":"npm run index && tsc","clean":"rm -rf dist","index":"tsx scripts/generate-index.ts","start":"node dist/index.js","test:all":"npm run test:integration && npm run test:services","typecheck":"tsc --noEmit","index:watch":"tsx scripts/watch-index.ts","test:phase1":"npm run build && node tests/integration/test-mcp-tools.js && tsx tests/services/test-cache-manager.ts && node tests/integration/test-error-handling.js","test:phase2":"npm run test:phase1 && tsx tests/services/test-git-operations.ts && tsx tests/services/test-search-engine.ts && node tests/integration/test-ssh-auth.js","test:services":"npm run build && tsx tests/services/test-cache-manager.ts && tsx tests/services/test-git-operations.ts && tsx tests/services/test-search-engine.ts","prepublishOnly":"npm run build","test:integration":"npm run build && node tests/integration/test-token-counting.js && node tests/integration/test-token-warnings.js && node tests/integration/test-relevance-filter.js && node tests/integration/test-multi-repo.js && node tests/integration/test-local-directories.js && node tests/integration/test-index-generation.js && node tests/integration/test-mcp-tools.js && node tests/integration/test-error-handling.js && node tests/integration/test-ssh-auth.js"},"_npmUser":{"name":"ablukis","email":"andis.blukis@gmail.com"},"repository":{"url":"git+https://github.com/andisab/conventions-mcp.git","type":"git"},"_npmVersion":"11.6.0","description":"MCP server for accessing coding conventions and standards from community and enterprise repositories","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zod":"^3.23.8","yaml":"^2.3.4","fuse.js":"^7.0.0","tiktoken":"^1.0.18","simple-git":"3.28.0","gray-matter":"^4.0.3","@modelcontextprotocol/sdk":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.0","chokidar":"^3.5.3","typescript":"^5.4.0","@types/node":"^20.14.0","concurrently":"^8.2.2","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/conventions-mcp_1.0.2_1761430575371_0.42027886704817874","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@ablukis/conventions-mcp","version":"1.1.0","keywords":["mcp","model-context-protocol","conventions","coding-standards","best-practices","enterprise","community","claude","cursor","ai"],"author":{"name":"Andis A. Blukis"},"license":"MIT","_id":"@ablukis/conventions-mcp@1.1.0","maintainers":[{"name":"ablukis","email":"andis.blukis@gmail.com"}],"homepage":"https://github.com/andisab/conventions-mcp#readme","bugs":{"url":"https://github.com/andisab/conventions-mcp/issues"},"bin":{"conventions-mcp":"dist/index.js"},"dist":{"shasum":"9ac2ae0f3610ba86990664983f8bc826a00ed182","tarball":"https://registry.npmjs.org/@ablukis/conventions-mcp/-/conventions-mcp-1.1.0.tgz","fileCount":154,"integrity":"sha512-27CvJ2nNSjSNC5uI4VChEFVm6sbymeINjguqVP4E63eCcz1k+SyulBHCMUleGGdR7fmEFEWK6w02nJuN8iacDQ==","signatures":[{"sig":"MEQCIA96QKaBQ91N1oWv5csuVlUKdtCMXJbOH5KEKOxnqz6vAiBDzqWW2/CNGXexLQnfZ54ZOT0p8cPAx6jtHq172lcxOg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1574374},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"55c48fd6c25ffb235005f1f450dc656bb8fe861b","scripts":{"dev":"npm run index && concurrently \"tsx watch src/index.ts\" \"npm run index:watch\"","lint":"eslint src/**/*.ts","build":"npm run index && tsc","clean":"rm -rf dist","index":"tsx scripts/generate-index.ts","start":"node dist/index.js","test:all":"npm run test:integration && npm run test:services","typecheck":"tsc --noEmit","index:watch":"tsx scripts/watch-index.ts","test:phase1":"npm run build && node tests/integration/test-mcp-tools.js && tsx tests/services/test-cache-manager.ts && node tests/integration/test-error-handling.js","test:phase2":"npm run test:phase1 && tsx tests/services/test-git-operations.ts && tsx tests/services/test-search-engine.ts && node tests/integration/test-ssh-auth.js","test:services":"npm run build && tsx tests/services/test-cache-manager.ts && tsx tests/services/test-git-operations.ts && tsx tests/services/test-search-engine.ts","prepublishOnly":"npm run build","test:integration":"npm run build && node tests/integration/test-token-counting.js && node tests/integration/test-token-warnings.js && node tests/integration/test-relevance-filter.js && node tests/integration/test-multi-repo.js && node tests/integration/test-local-directories.js && node tests/integration/test-index-generation.js && node tests/integration/test-extended-structures.js && node tests/integration/test-phase2-structures.js && node tests/integration/test-mcp-tools.js && node tests/integration/test-error-handling.js && node tests/integration/test-ssh-auth.js"},"_npmUser":{"name":"ablukis","email":"andis.blukis@gmail.com"},"repository":{"url":"git+https://github.com/andisab/conventions-mcp.git","type":"git"},"_npmVersion":"11.6.0","description":"MCP server for accessing coding conventions and standards from community and enterprise repositories","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zod":"^3.23.8","yaml":"^2.3.4","fuse.js":"^7.0.0","tiktoken":"^1.0.18","simple-git":"3.28.0","gray-matter":"^4.0.3","@modelcontextprotocol/sdk":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.0","chokidar":"^3.5.3","typescript":"^5.4.0","@types/node":"^20.14.0","concurrently":"^8.2.2","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/conventions-mcp_1.1.0_1763254215222_0.36299392388168705","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@ablukis/conventions-mcp","version":"1.1.1","keywords":["mcp","model-context-protocol","conventions","coding-standards","best-practices","enterprise","community","claude","cursor","ai"],"author":{"name":"Andis A. Blukis"},"license":"MIT","_id":"@ablukis/conventions-mcp@1.1.1","maintainers":[{"name":"ablukis","email":"andis.blukis@gmail.com"}],"homepage":"https://github.com/andisab/conventions-mcp#readme","bugs":{"url":"https://github.com/andisab/conventions-mcp/issues"},"bin":{"conventions-mcp":"dist/index.js"},"dist":{"shasum":"ba5867bb5ec88946c276c71323ac006bfc7d65d1","tarball":"https://registry.npmjs.org/@ablukis/conventions-mcp/-/conventions-mcp-1.1.1.tgz","fileCount":158,"integrity":"sha512-UI4K7/QiDkHsOq/2XgQXvVb9yTepeqllZZe/cH+URFtbq9XFN/QjnfPSDHwDo8vmyqYSel1a494UWx6tvmM/kQ==","signatures":[{"sig":"MEUCIQCSUZ/+CS7/jSROif03w6Ox371Mk+tLxzTWPlBAlOJEsgIgFWYajzbo3wM02Ev/XzsgMicpvC6JAAxLRxYXpGUcij0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1627951},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"769580cba03bf3a4febc2df1e1ba72c0ba42716a","scripts":{"dev":"npm run index && concurrently \"tsx watch src/index.ts\" \"npm run index:watch\"","lint":"eslint src/**/*.ts","build":"npm run index && tsc","clean":"rm -rf dist","index":"tsx scripts/generate-index.ts","start":"node dist/index.js","test:all":"npm run test:integration && npm run test:services","typecheck":"tsc --noEmit","index:watch":"tsx scripts/watch-index.ts","test:phase1":"npm run build && node tests/integration/test-mcp-tools.js && tsx tests/services/test-cache-manager.ts && node tests/integration/test-error-handling.js","test:phase2":"npm run test:phase1 && tsx tests/services/test-git-operations.ts && tsx tests/services/test-search-engine.ts && node tests/integration/test-ssh-auth.js","test:services":"npm run build && tsx tests/services/test-cache-manager.ts && tsx tests/services/test-git-operations.ts && tsx tests/services/test-search-engine.ts","prepublishOnly":"npm run build","test:integration":"npm run build && node tests/integration/test-token-counting.js && node tests/integration/test-token-warnings.js && node tests/integration/test-token-budgets.js && node tests/integration/test-relevance-filter.js && node tests/integration/test-multi-repo.js && node tests/integration/test-local-directories.js && node tests/integration/test-index-generation.js && node tests/integration/test-extended-structures.js && node tests/integration/test-phase2-structures.js && node tests/integration/test-mcp-tools.js && node tests/integration/test-error-handling.js && node tests/integration/test-ssh-auth.js"},"_npmUser":{"name":"ablukis","email":"andis.blukis@gmail.com"},"repository":{"url":"git+https://github.com/andisab/conventions-mcp.git","type":"git"},"_npmVersion":"11.6.0","description":"MCP server for accessing coding conventions and standards from community and enterprise repositories","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zod":"^3.23.8","yaml":"^2.3.4","fuse.js":"^7.0.0","tiktoken":"^1.0.18","simple-git":"3.28.0","gray-matter":"^4.0.3","@modelcontextprotocol/sdk":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.0","chokidar":"^3.5.3","typescript":"^5.4.0","@types/node":"^20.14.0","concurrently":"^8.2.2","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/conventions-mcp_1.1.1_1763343717401_0.06979470721347814","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@ablukis/conventions-mcp","version":"1.1.2","description":"MCP server for accessing coding conventions and standards from community and enterprise repositories","main":"dist/index.js","type":"module","bin":{"conventions-mcp":"dist/index.js"},"repository":{"type":"git","url":"git+https://github.com/andisab/conventions-mcp.git"},"homepage":"https://github.com/andisab/conventions-mcp#readme","bugs":{"url":"https://github.com/andisab/conventions-mcp/issues"},"scripts":{"index":"tsx scripts/generate-index.ts","index:watch":"tsx scripts/watch-index.ts","build":"npm run index && tsc","dev":"npm run index && concurrently \"tsx watch src/index.ts\" \"npm run index:watch\"","start":"node dist/index.js","clean":"rm -rf dist","lint":"eslint src/**/*.ts","typecheck":"tsc --noEmit","test:services":"npm run build && tsx tests/services/test-cache-manager.ts && tsx tests/services/test-git-operations.ts && tsx tests/services/test-search-engine.ts","test:integration":"npm run build && node tests/integration/test-token-counting.js && node tests/integration/test-token-warnings.js && node tests/integration/test-token-budgets.js && node tests/integration/test-relevance-filter.js && node tests/integration/test-multi-repo.js && node tests/integration/test-local-directories.js && node tests/integration/test-index-generation.js && node tests/integration/test-extended-structures.js && node tests/integration/test-phase2-structures.js && node tests/integration/test-mcp-tools.js && node tests/integration/test-error-handling.js && node tests/integration/test-ssh-auth.js","test:phase1":"npm run build && node tests/integration/test-mcp-tools.js && tsx tests/services/test-cache-manager.ts && node tests/integration/test-error-handling.js","test:phase2":"npm run test:phase1 && tsx tests/services/test-git-operations.ts && tsx tests/services/test-search-engine.ts && node tests/integration/test-ssh-auth.js","test:all":"npm run test:integration && npm run test:services","prepublishOnly":"npm run build"},"keywords":["mcp","model-context-protocol","conventions","coding-standards","best-practices","enterprise","community","claude","cursor","ai"],"author":{"name":"Andis A. Blukis"},"license":"MIT","dependencies":{"@modelcontextprotocol/sdk":"^0.6.0","fuse.js":"^7.0.0","gray-matter":"^4.0.3","simple-git":"3.28.0","tiktoken":"^1.0.18","yaml":"^2.3.4","zod":"^3.23.8"},"devDependencies":{"@types/node":"^20.14.0","@typescript-eslint/eslint-plugin":"^7.0.0","@typescript-eslint/parser":"^7.0.0","chokidar":"^3.5.3","concurrently":"^8.2.2","eslint":"^8.57.0","jest":"^29.7.0","ts-jest":"^29.1.0","tsx":"^4.7.0","typescript":"^5.4.0"},"engines":{"node":">=18.0.0"},"_id":"@ablukis/conventions-mcp@1.1.2","gitHead":"9c6f4035aac349611150374cb758fbd8c8bb2c72","types":"./dist/index.d.ts","_nodeVersion":"24.10.0","_npmVersion":"11.6.0","dist":{"integrity":"sha512-Fu44PdpbYjJggl/BCdSFbobZ3zGWlEwe2FtPeVLEsQfZR4AkrJ4CSUwbpxbT5TU3c1YDOAzqDF8z48R05dh14Q==","shasum":"e251864fd4dd7eb4dd3370a7996b5536f13d86d7","tarball":"https://registry.npmjs.org/@ablukis/conventions-mcp/-/conventions-mcp-1.1.2.tgz","fileCount":158,"unpackedSize":1627957,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCzq34EfqwaImPQP0HJTuSENu1DYGTradK4fBpTPfliEAIgC9Mx5a+McdQeIf75+yxcG9gfGaoCAhX7OiYh2dJGx10="}]},"_npmUser":{"name":"ablukis","email":"andis.blukis@gmail.com"},"directories":{},"maintainers":[{"name":"ablukis","email":"andis.blukis@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/conventions-mcp_1.1.2_1763344093993_0.7016452220637768"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-23T22:05:03.409Z","modified":"2025-11-17T01:48:14.421Z","0.3.0":"2025-10-23T22:05:03.670Z","1.0.0":"2025-10-25T21:55:45.274Z","1.0.1":"2025-10-25T22:07:43.814Z","1.0.2":"2025-10-25T22:16:15.642Z","1.1.0":"2025-11-16T00:50:15.525Z","1.1.1":"2025-11-17T01:41:57.635Z","1.1.2":"2025-11-17T01:48:14.219Z"},"bugs":{"url":"https://github.com/andisab/conventions-mcp/issues"},"author":{"name":"Andis A. Blukis"},"license":"MIT","homepage":"https://github.com/andisab/conventions-mcp#readme","keywords":["mcp","model-context-protocol","conventions","coding-standards","best-practices","enterprise","community","claude","cursor","ai"],"repository":{"type":"git","url":"git+https://github.com/andisab/conventions-mcp.git"},"description":"MCP server for accessing coding conventions and standards from community and enterprise repositories","maintainers":[{"name":"ablukis","email":"andis.blukis@gmail.com"}],"readme":"# Conventions MCP\n\n> 🎯 Access coding conventions and best practices from community and enterprise repositories\n\n[![npm version](https://img.shields.io/npm/v/@ablukis/conventions-mcp)](https://www.npmjs.com/package/@ablukis/conventions-mcp)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nA Model Context Protocol (MCP) server that provides AI assistants like Claude with access to coding conventions, best practices, and standards from both open-source community repositories and private enterprise sources.\n\n## Vision\n\nCreate the definitive platform for coding conventions that serves both open-source community collaboration and enterprise security needs, establishing a standard for how AI coding tools receive contextual guidance.\n\n## Architecture\n\n![Conventions MCP Architecture](docs/assets/ClaudeAgentSDK_MCP.png)\n\nConventions MCP connects Claude to multiple convention sources (built-in, local directories, and Git repositories) through the Model Context Protocol, enabling dynamic access to coding conventions, agent definitions, workflows, and best practices.\n\n## Quick Start\n\n### Install with Claude Desktop\n\nAdd to your Claude Desktop configuration (`~/Library/Application Support/Claude/claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"conventions\": {\n      \"command\": \"npx\",\n      \"args\": [\"@ablukis/conventions-mcp\"]\n    }\n  }\n}\n```\n\n### Search for Conventions\n\n```\nYou: \"Search for fastapi patterns\"\n\nClaude: Found 2 conventions:\n\n1. **FastAPI Architect** (100% match)\n   Type: agent | Tokens: 767\n   Tags: fastapi, python, api, async, backend\n   Match: \"Expert in building production FastAPI applications...\"\n   Path: agents/web-fastapi-architect.md\n```\n\n## Configuration\n\nConventions MCP works out-of-the-box with built-in conventions. You can optionally configure additional sources.\n\n### Configuration File\n\n**Location**: `~/.config/conventions-mcp/config.yaml` (optional)\n\n**Create from template**:\n```bash\nmkdir -p ~/.config/conventions-mcp\ncp config.example.yaml ~/.config/conventions-mcp/config.yaml\n```\n\n**Example**:\n```yaml\n# Local filesystem directories\nlocalDirectories:\n  - id: company-standards\n    path: ~/company-conventions\n    enabled: true\n    priority: 1\n\n# Git repositories\nrepositories:\n  - id: awesome-subagents\n    url: https://github.com/VoltAgent/awesome-claude-code-subagents.git\n    type: public\n    authMethod: none\n    enabled: true\n    autoSync: true\n    cacheTTL: 3600\n```\n\n### Configuration Fields\n\n**Common Fields**:\n- `id` - Unique identifier for the source\n- `enabled` - Set to `false` to temporarily disable a source\n- `priority` - Lower numbers = scanned first (built-in conventions are priority 0)\n- `description` - Optional description of the source\n\n**Local Directories**:\n- `path` - Filesystem path to directory containing conventions\n\n**Git Repositories**:\n- `url` - Git repository URL (SSH or HTTPS)\n- `type` - `public` or `private`\n- `authMethod` - `none`, `ssh`, or `https-token`\n- `token` - Personal Access Token for `https-token` auth (encrypted at rest with AES-256-CBC)\n- `autoSync` - Automatically sync repository in background (default: `true`)\n- `cacheTTL` - Seconds before auto-sync check (default: `3600` = 1 hour)\n- `customDirectories` - Optional mapping for non-standard directory names (e.g., `{agent: ['categories']}`)\n\n### Environment Variables\n\n**Configuration**:\n- `CONVENTIONS_CONFIG_PATH` - Custom config location (default: `~/.config/conventions-mcp/config.yaml`)\n\n**Token Management**:\n- `CONVENTIONS_MCP_CONTEXT_WINDOW` - Context window size (default: 200000)\n- `CONVENTIONS_MCP_TOKEN_WARNING_THRESHOLD` - Warning threshold (default: 10000)\n- `CONVENTIONS_MCP_MIN_RELEVANCE_SCORE` - Minimum relevance 0.0-1.0 (default: 0.3)\n\n**Repository Sync**:\n- `CONVENTIONS_MCP_SYNC_POLL_INTERVAL_MS` - Background sync interval in milliseconds (default: 10800000 = 3 hours)\n\n## Adding Repositories\n\n### Public Repository\n\n```\nYou: \"Add repository id: awesome-conventions, url: https://github.com/org/repo.git, type: public, authMethod: none\"\n\nClaude: ✅ Repository 'awesome-conventions' added successfully.\n```\n\n### Private Repository (SSH)\n\n**Prerequisites**: SSH key added to your GitHub/GitLab account\n\n```\nYou: \"Add repository id: company-standards, url: git@github.com:company/private-repo.git, type: private, authMethod: ssh\"\n\nClaude: ✅ Repository 'company-standards' added successfully.\n```\n\n### Private Repository (HTTPS Token)\n\n**Prerequisites**: Personal Access Token (PAT) with repo access\n\n```\nYou: \"Add repository id: company-private, url: https://github.com/company/repo.git, type: private, authMethod: https-token, token: ghp_YourToken123\"\n\nClaude: ✅ Repository 'company-private' added successfully.\n```\n\n**Security Note**: Tokens are encrypted at rest using AES-256-CBC\n\n## Automatic Repository Syncing\n\nConventions MCP uses **smart background syncing**:\n\n1. **Startup Sync**: Automatically clones/updates repositories when MCP server starts (non-blocking)\n2. **Background Polling**: Checks for remote changes every 3 hours (configurable), only pulls when new commits detected\n3. **Zero-Impact Searches**: Searches never wait for git operations\n4. **Auto-Index Refresh**: Search index automatically updates after successful sync\n\n**Customize Poll Interval**:\n```bash\nexport CONVENTIONS_MCP_SYNC_POLL_INTERVAL_MS=86400000  # 24 hours\n```\n\n**Manual Sync**:\n```\nYou: \"Sync repository awesome-conventions\"\nClaude: ✅ Repository 'awesome-conventions' synced successfully\n```\n\n## Features\n\n### Multi-Source Support\n- **Built-in conventions**: 76 included conventions (agents, specs, workflows, skills, patterns, templates)\n- **Local directories**: Configure additional filesystem directories\n- **Git repositories**: Clone and sync public/private repositories\n- **Smart background sync**: Zero-impact repository updates with auto-index refresh\n- **Authentication**: SSH keys and HTTPS tokens with AES-256-CBC encryption\n\n### Smart Search\n- **Fuzzy matching**: Typo-tolerant search (\"nexjs\" → \"NextJS Specialist\")\n- **Relevance scoring**: Results ranked 0-100% by match quality\n- **Quality filtering**: Automatically removes low-relevance matches (< 30% by default)\n- **Tag weighting**: Prioritizes tags over descriptions\n- **Progressive disclosure**: Lightweight metadata previews (~60 tokens) before full content (~1000+ tokens)\n\n### Token Management\n- **Accurate counting**: Tiktoken-based (cl100k_base encoding) with ~18.5% accuracy\n- **Warnings**: Automatic warnings when results exceed 10K tokens\n- **Context tracking**: Shows percentage of Claude Sonnet 200K context window used\n- **Budget support**: Token budget parameter with remaining token display\n- **Optimized responses**: Complete workflow < 5000 tokens (scales to 20+ repositories)\n\n### Supported Repository Structures\n\n**Standard directories**:\n```\nyour-repo/\n├── agents/       # AI agent definitions\n├── specs/        # Specifications\n├── workflows/    # Development workflows\n├── commands/     # Scripts\n├── skills/       # Skills\n├── patterns/     # Design patterns\n└── templates/    # Templates\n```\n\n**Claude Code infrastructure** (`.claude/` prefix):\n```\nyour-repo/\n├── .claude/\n│   ├── agents/\n│   ├── skills/\n│   └── hooks/\n```\n\n**Nested plugins** (wshobson/agents pattern):\n```\nyour-repo/\n├── plugins/\n│   ├── plugin-1/\n│   │   ├── agents/\n│   │   └── skills/\n│   └── plugin-2/\n│       └── agents/\n```\n\n**Root-level skill folders** (anthropics/skills pattern):\n```\nyour-repo/\n├── skill-1/\n│   ├── SKILL.md\n│   └── patterns/\n└── skill-2/\n    └── SKILL.md\n```\n\n**Custom directory mapping**: For non-standard structures\n```\nYou: \"Add repository id: custom-repo, url: https://github.com/org/repo.git, type: public, authMethod: none, customDirectories: {agent: ['categories']}\"\n```\n\nType auto-detection works for all structures using SKILL.md detection, directory patterns, filename patterns, and content analysis.\n\n## Available MCP Tools\n\n| Tool | Description | Typical Token Usage |\n|------|-------------|---------------------|\n| `get_conventions_overview` | Get compact hierarchical summary of all conventions | ~500 tokens |\n| `find_conventions` | Search with fuzzy matching and metadata previews | ~60 tokens/result |\n| `list_conventions_by_type` | List all conventions of a specific type (deterministic, paginated) | ~50 tokens/result |\n| `read_convention` | Retrieve full convention content by path | ~1000-2000 tokens |\n| `add_repository` | Add new Git repositories (public or private) | - |\n| `list_repositories` | Show all convention sources with status | - |\n| `sync_repository` | Manually sync repositories | - |\n| `remove_repository` | Remove repository and local files | - |\n| `get_token_stats` | Get token usage statistics | - |\n\n### Progressive Disclosure Workflow\n\nFor optimal token efficiency, use this 3-step workflow:\n\n1. **Start with overview** (`get_conventions_overview`): Get compact summary of what's available (~500 tokens)\n2. **Search or list** (`find_conventions` or `list_conventions_by_type`): Get metadata previews (~60 tokens/result)\n3. **Read specific content** (`read_convention`): Get full convention content only when needed (~1500 tokens)\n\n**Complete workflow**: < 5000 tokens (scales to 10-20 repositories)\n\n## Roadmap\n\n### ✅ v1.1.1 - Token Optimization (Current)\n- Progressive disclosure with compact overview (~500 tokens, down from 130,000)\n- Auto-index refresh on repository sync\n- Renamed tools for clarity (`find_conventions`, `read_convention`)\n- New `list_conventions_by_type` tool for deterministic type listings\n- Token budget compliance: complete workflow < 5000 tokens\n- Scales to 10-20 repositories without context overflow\n\n### ✅ v1.0.0 - Core Functionality\n- Multi-repository management with SSH/HTTPS authentication\n- Local directory configuration\n- Smart search with fuzzy matching and relevance filtering\n- Token management with accurate counting\n- Support for 6 repository structure patterns\n\n### Next Up\n- **v1.2.0**: GitLab and Bitbucket support, air-gapped mode optimization\n- **v1.3.0**: Content expansion (more agents, workflows, framework-specific conventions)\n- **Future**: Enterprise features (audit logging, access control, role-based permissions)\n\n## Contributing\n\nWe welcome contributions! Areas where you can help:\n\n- **Community Standards**: Create and maintain open-source convention repositories\n- **Platform Development**: Improve the MCP server and tools\n- **Documentation**: Help others understand and use Conventions MCP\n- **Integration**: Build connections with IDEs and AI tools\n\n## Local Development\n\n### Prerequisites\n- Node.js 18 or higher\n- npm or yarn\n\n### Setup\n\n```bash\n# Clone and install\ngit clone https://github.com/andisab/conventions-mcp.git\ncd conventions-mcp\nnpm install\n\n# Build\nnpm run build\n\n# Test locally\nnpm run dev\n```\n\n### Configure with Claude Desktop\n\nFor local development, use the built version:\n\n```json\n{\n  \"mcpServers\": {\n    \"conventions\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/conventions-mcp/dist/index.js\"]\n    }\n  }\n}\n```\n\nSee [docs/DEV_GUIDE.md](docs/DEV_GUIDE.md) for detailed testing instructions.\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\n---\n\n**Created by**: [Andis A. Blukis](https://www.linkedin.com/in/andisab)\n**Repository**: [github.com/andisab/conventions-mcp](https://github.com/andisab/conventions-mcp)\n**NPM Package**: [@ablukis/conventions-mcp](https://www.npmjs.com/package/@ablukis/conventions-mcp)\n","readmeFilename":"README.md"}