{"_id":"@danielsimonjr/math-mcp","_rev":"11-d2daacbc70d9f762058afee208ba82b4","name":"@danielsimonjr/math-mcp","dist-tags":{"latest":"4.3.0"},"versions":{"2.0.0":{"name":"@danielsimonjr/math-mcp","version":"2.0.0","keywords":["mcp","model-context-protocol","mathjs","mathematics","calculator","wasm","webassembly","performance","statistics","linear-algebra","matrix","calculus"],"author":{"name":"math-mcp contributors"},"license":"ISC","_id":"@danielsimonjr/math-mcp@2.0.0","maintainers":[{"name":"danielsimonjr","email":"danielsimonjr@yahoo.com"}],"homepage":"https://github.com/danielsimonjr/math-mcp#readme","bugs":{"url":"https://github.com/danielsimonjr/math-mcp/issues"},"bin":{"math-mcp":"dist/index-wasm.js"},"dist":{"shasum":"f196f87d60b2404cb9aeb506b02acfafb42fa382","tarball":"https://registry.npmjs.org/@danielsimonjr/math-mcp/-/math-mcp-2.0.0.tgz","fileCount":49,"integrity":"sha512-UaxeWqZfh/2d4GZim7gAJSM9dcpUGm6yPIDugspbYaVXu2+WlhMg3gohn3oKDDs0ft4hD+ywZe2aH42OHsW3mg==","signatures":[{"sig":"MEYCIQDAW2Aj1tzviyeoWlQwdsANbv03RGOLNSHSSpKsqEb4YwIhAPpp5myrWRWS0WrbpAzfqDyQ9M0XZFlm4FHerpLOGNqK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":441285},"main":"dist/index-wasm.js","type":"module","types":"./dist/index-wasm.d.ts","engines":{"node":">=18.0.0"},"gitHead":"179370d23a4b7ba7d0b4295bb1606adae029dc21","scripts":{"dev":"tsc && node dist/index-wasm.js","test":"node test/integration-test.js","build":"tsc","start":"node dist/index-wasm.js","build:all":"npm run build && npm run build:wasm","build:wasm":"cd wasm && npx gulp"},"_npmUser":{"name":"danielsimonjr","email":"danielsimonjr@yahoo.com"},"repository":{"url":"git+https://github.com/danielsimonjr/math-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for mathematical computations with WASM acceleration - up to 42x faster","directories":{},"_nodeVersion":"25.0.0","dependencies":{"mathjs":"^15.0.0","@modelcontextprotocol/sdk":"^1.20.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^24.9.1"},"_npmOperationalInternal":{"tmp":"tmp/math-mcp_2.0.0_1762116386417_0.060312352636516575","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@danielsimonjr/math-mcp","version":"2.0.1","keywords":["mcp","model-context-protocol","mathjs","mathematics","calculator","wasm","webassembly","performance","statistics","linear-algebra","matrix","calculus"],"author":{"name":"math-mcp contributors"},"license":"ISC","_id":"@danielsimonjr/math-mcp@2.0.1","maintainers":[{"name":"danielsimonjr","email":"danielsimonjr@yahoo.com"}],"homepage":"https://github.com/danielsimonjr/math-mcp#readme","bugs":{"url":"https://github.com/danielsimonjr/math-mcp/issues"},"bin":{"math-mcp":"dist/index-wasm.js"},"dist":{"shasum":"7c6923bea78518594bac72a5114f10c4a4f9ab4c","tarball":"https://registry.npmjs.org/@danielsimonjr/math-mcp/-/math-mcp-2.0.1.tgz","fileCount":53,"integrity":"sha512-Dqrr8hysyDn6hvQlQF1BMFnILh0Bp4tqTzM5iF8r7z/4UNxDCKaSJcHNI5g9AttF2kjAfpNdozzPerxz4oa+wQ==","signatures":[{"sig":"MEUCIHGHFmKHLSmwJYKFXXVRk7IaDRm+0Sdi6HVDM8X59CJFAiEAyDzOgFv8bH9Iwjdv1pzpeeTSRsus9yXrwzbUKe7SiJA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":474197},"main":"dist/index-wasm.js","type":"module","types":"./dist/index-wasm.d.ts","engines":{"node":">=18.0.0"},"gitHead":"461488e4b0a73eaa1f9c0c8316b1b5e9e9d9f618","scripts":{"dev":"tsc && node dist/index-wasm.js","test":"node test/integration-test.js","build":"tsc","start":"node dist/index-wasm.js","build:all":"npm run build && npm run build:wasm","build:wasm":"cd wasm && npx gulp"},"_npmUser":{"name":"danielsimonjr","email":"danielsimonjr@yahoo.com"},"repository":{"url":"git+https://github.com/danielsimonjr/math-mcp.git","type":"git"},"_npmVersion":"11.4.2","description":"MCP server for mathematical computations with WASM acceleration - up to 42x faster","directories":{},"_nodeVersion":"25.1.0","dependencies":{"mathjs":"^15.0.0","@modelcontextprotocol/sdk":"^1.20.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^24.9.1"},"_npmOperationalInternal":{"tmp":"tmp/math-mcp_2.0.1_1762470754254_0.941293012887704","host":"s3://npm-registry-packages-npm-production"}},"3.2.2":{"name":"@danielsimonjr/math-mcp","version":"3.2.2","keywords":["mcp","model-context-protocol","mathjs","mathematics","calculator","wasm","webassembly","performance","statistics","linear-algebra","matrix","calculus"],"author":{"name":"math-mcp contributors"},"license":"ISC","_id":"@danielsimonjr/math-mcp@3.2.2","maintainers":[{"name":"danielsimonjr","email":"danielsimonjr@yahoo.com"}],"homepage":"https://github.com/danielsimonjr/math-mcp#readme","bugs":{"url":"https://github.com/danielsimonjr/math-mcp/issues"},"bin":{"math-mcp":"dist/index-wasm.js"},"dist":{"shasum":"8ab133f9be630dc52dbc8917072f178bb77ab05c","tarball":"https://registry.npmjs.org/@danielsimonjr/math-mcp/-/math-mcp-3.2.2.tgz","fileCount":170,"integrity":"sha512-7wkpGQY/Uf3glmcq7qZaR6vxZWf2j0Wh3K3SxmUEFDa9D+AUHoRtLZNDCK29SfUhIGa2XgqJuEIIVoOejx+eBg==","signatures":[{"sig":"MEYCIQCGK0XXX5+FWm/TiosEaOK/9WH/m9lYOo3XEXIgG8h/JQIhAOvPcdcf+Mpj7E1E8RGsAsftxTvko8vRXlBYMeMsHafJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1674732},"main":"dist/index-wasm.js","type":"module","types":"./dist/index-wasm.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a785ba8ab4c2ddcc0ccc7ae8791b9770e3a52407","scripts":{"dev":"tsc && node dist/index-wasm.js","lint":"eslint src/**/*.ts","test":"node test/integration-test.js","build":"tsc","start":"node dist/index-wasm.js","format":"prettier --write \"src/**/*.ts\"","prepare":"husky install","lint:fix":"eslint src/**/*.ts --fix","test:all":"npm test && npm run test:correctness","build:all":"npm run build && npm run build:wasm","test:unit":"vitest","build:wasm":"cd wasm && npm run asbuild","check:deps":"node scripts/check-dependencies.js","type-check":"tsc --noEmit","verify:dist":"test -d dist && test -f dist/index-wasm.js || (echo 'Error: dist/ directory missing or incomplete' && exit 1)","verify:wasm":"test -f wasm/build/release.wasm && test -f wasm/build/debug.wasm || (echo 'Error: WASM modules not built' && exit 1)","build:verify":"npm run verify:dist && npm run verify:wasm && npm run verify:hashes","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"vitest --coverage","test:security":"vitest run test/security/","verify:hashes":"test -f wasm-hashes.json || (echo 'Error: wasm-hashes.json missing' && exit 1)","prepublishOnly":"npm run type-check && npm run build:all && npm run generate:hashes && npm test && npm run build:verify","generate:hashes":"node scripts/generate-wasm-hashes.js","test:correctness":"node test/correctness-tests.js"},"_npmUser":{"name":"danielsimonjr","email":"danielsimonjr@yahoo.com"},"repository":{"url":"git+https://github.com/danielsimonjr/math-mcp.git","type":"git"},"_npmVersion":"11.4.2","description":"MCP server for mathematical computations with WASM acceleration - up to 42x faster, with comprehensive input validation, security features, rate limiting, and expression caching","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_nodeVersion":"25.2.1","dependencies":{"mathjs":"15.0.0","prom-client":"^15.1.3","@modelcontextprotocol/sdk":"1.20.2"},"_hasShrinkwrap":false,"devDependencies":{"husky":"9.1.7","eslint":"8.57.0","vitest":"1.6.0","prettier":"3.6.2","typescript":"5.9.3","@types/node":"24.10.1","lint-staged":"15.2.2","@vitest/coverage-v8":"1.6.0","eslint-plugin-jsdoc":"48.2.0","eslint-config-prettier":"9.1.0","@typescript-eslint/parser":"6.21.0","@typescript-eslint/eslint-plugin":"6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/math-mcp_3.2.2_1764174586590_0.6626544567009875","host":"s3://npm-registry-packages-npm-production"}},"3.5.1":{"name":"@danielsimonjr/math-mcp","version":"3.5.1","keywords":["mcp","model-context-protocol","mathjs","mathematics","calculator","wasm","webassembly","performance","statistics","linear-algebra","matrix","calculus"],"author":{"name":"math-mcp contributors"},"license":"ISC","_id":"@danielsimonjr/math-mcp@3.5.1","maintainers":[{"name":"danielsimonjr","email":"danielsimonjr@yahoo.com"}],"homepage":"https://github.com/danielsimonjr/math-mcp#readme","bugs":{"url":"https://github.com/danielsimonjr/math-mcp/issues"},"bin":{"math-mcp":"dist/index-wasm.js"},"dist":{"shasum":"8d96e313448c2031f12300cae33396c760e06585","tarball":"https://registry.npmjs.org/@danielsimonjr/math-mcp/-/math-mcp-3.5.1.tgz","fileCount":210,"integrity":"sha512-+4++E+4XYd+xaxBpgbQi7ZKYebqgUrY8nJpRMvXffjZ1xqJse7nVKp0lR7xZ22jSx5m/szfr0M1tYF+tbbt4xQ==","signatures":[{"sig":"MEUCIFQZ4w+WFdEvLW6oa7o4+S8BkXTTmXcU3vMPlwH3OwU4AiEA7cxbswQ7lfWY0BGGGu2+fby8pJd9lka1VM7TYqPSkpE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13772374},"main":"dist/index-wasm.js","type":"module","types":"./dist/index-wasm.d.ts","engines":{"node":">=18.0.0"},"gitHead":"0b3f2c5033e54b5029819065e16944d0f31d5ce6","scripts":{"dev":"tsc && node dist/index-wasm.js","lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"node test/integration-test.js","build":"tsc","graph":"tsx tools/generate-dependency-graph.ts","start":"node dist/index-wasm.js","format":"prettier --write \"src/**/*.ts\"","prepare":"husky install","lint:fix":"eslint \"src/**/*.ts\" \"test/**/*.ts\" --fix","test:all":"npm test && npm run test:correctness","build:all":"npm run build && npm run build:wasm","test:unit":"vitest","build:wasm":"cd wasm && npm run asbuild","check:deps":"node scripts/check-dependencies.js","type-check":"tsc --noEmit","verify:dist":"test -d dist && test -f dist/index-wasm.js || (echo 'Error: dist/ directory missing or incomplete' && exit 1)","verify:wasm":"test -f wasm/build/release.wasm && test -f wasm/build/debug.wasm || (echo 'Error: WASM modules not built' && exit 1)","build:verify":"npm run verify:dist && npm run verify:wasm && npm run verify:hashes","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"vitest --coverage","test:security":"vitest run test/security/","verify:hashes":"test -f wasm-hashes.json || (echo 'Error: wasm-hashes.json missing' && exit 1)","prepublishOnly":"npm run type-check && npm run build:all && npm run generate:hashes && npm test && npm run build:verify","generate:hashes":"node scripts/generate-wasm-hashes.js","test:correctness":"node test/correctness-tests.js"},"_npmUser":{"name":"danielsimonjr","email":"danielsimonjr@yahoo.com"},"overrides":{"esbuild":"^0.28.1","ip-address":"^10.1.1","minimatch@^10.0.0":{"brace-expansion":"^5.0.6"}},"repository":{"url":"git+https://github.com/danielsimonjr/math-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"MCP server for mathematical computations with WASM acceleration - up to 42x faster, with comprehensive input validation, security features, rate limiting, and expression caching","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"mathjs":"file:./vendor/mathjs-15.2.0.tgz","prom-client":"^15.1.3","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","husky":"9.1.7","eslint":"9.39.1","vitest":"^4.1.5","globals":"^15.15.0","prettier":"3.8.3","@eslint/js":"^9.39.4","typescript":"5.9.3","@babel/core":"^7.29.0","@types/node":"24.10.1","lint-staged":"16.2.7","@vitest/coverage-v8":"^4.1.5","eslint-plugin-jsdoc":"61.4.1","eslint-config-prettier":"10.1.8","@babel/preset-typescript":"^7.28.5","@typescript-eslint/parser":"^8.48.0","@typescript-eslint/eslint-plugin":"^8.48.0"},"_npmOperationalInternal":{"tmp":"tmp/math-mcp_3.5.1_1781461150227_0.24143680273859136","host":"s3://npm-registry-packages-npm-production"}},"4.1.3":{"name":"@danielsimonjr/math-mcp","version":"4.1.3","keywords":["mcp","model-context-protocol","mathjs","mathematics","calculator","wasm","webassembly","performance","statistics","linear-algebra","matrix","calculus"],"author":{"name":"math-mcp contributors"},"license":"ISC","_id":"@danielsimonjr/math-mcp@4.1.3","maintainers":[{"name":"danielsimonjr","email":"danielsimonjr@yahoo.com"}],"homepage":"https://github.com/danielsimonjr/math-mcp#readme","bugs":{"url":"https://github.com/danielsimonjr/math-mcp/issues"},"bin":{"math-mcp":"dist/index.js"},"dist":{"shasum":"41f3e50638c589c6311456d4b57ea18eec163f24","tarball":"https://registry.npmjs.org/@danielsimonjr/math-mcp/-/math-mcp-4.1.3.tgz","fileCount":158,"integrity":"sha512-CJSwMalqsppZjO4IEP05BicszkLxLuanN2S7tHZCFBx2CZiHhdcbUqILd9EGtNfKpQJUjc1uhCkFsFIN0Aqh3A==","signatures":[{"sig":"MEUCIBCDzDJi00Oz3blr/mkSLw66CGNVAE+5OuBFldkkvY4UAiEArlqM+n7i5IhDn4ncfcgGJ/c+zaTSCneyENlT4vaHh9E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4272534},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f32dd68d35d0a52033bdc380adc7d0b5493a4092","scripts":{"dev":"tsc && node dist/index.js","lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"node test/integration-test.js","build":"tsc","graph":"tsx tools/generate-dependency-graph.ts","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","prepare":"husky install","lint:fix":"eslint \"src/**/*.ts\" \"test/**/*.ts\" --fix","test:all":"npm test && npm run test:correctness","test:unit":"vitest","check:deps":"node scripts/check-dependencies.js","type-check":"tsc --noEmit","verify:dist":"test -d dist && test -f dist/index.js || (echo 'Error: dist/ directory missing or incomplete' && exit 1)","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"vitest --coverage","test:security":"vitest run test/security/","prepublishOnly":"npm run type-check && npm run build && npm test && npm run test:correctness","test:correctness":"node test/correctness-tests.js"},"_npmUser":{"name":"danielsimonjr","email":"danielsimonjr@yahoo.com"},"overrides":{"esbuild":"^0.28.1","ip-address":"^10.1.1","minimatch@^10.0.0":{"brace-expansion":"^5.0.6"}},"repository":{"url":"git+https://github.com/danielsimonjr/math-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"MCP server for mathematical computations powered by MathTS (TypeScript rewrite of mathjs with native WASM/parallel acceleration), with comprehensive input validation, security features, rate limiting, and expression caching","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"prom-client":"^15.1.3","@modelcontextprotocol/sdk":"^1.29.0","@danielsimonjr/mathts-compat":"^0.1.9","@danielsimonjr/mathts-matrix":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","husky":"9.1.7","eslint":"9.39.1","vitest":"^4.1.5","globals":"^15.15.0","prettier":"3.8.3","@eslint/js":"^9.39.4","typescript":"5.9.3","@babel/core":"^7.29.0","@types/node":"24.10.1","lint-staged":"16.2.7","@vitest/coverage-v8":"^4.1.5","eslint-plugin-jsdoc":"61.4.1","eslint-config-prettier":"10.1.8","@babel/preset-typescript":"^7.28.5","@typescript-eslint/parser":"^8.48.0","@typescript-eslint/eslint-plugin":"^8.48.0"},"_npmOperationalInternal":{"tmp":"tmp/math-mcp_4.1.3_1782299093621_0.7373817152029667","host":"s3://npm-registry-packages-npm-production"}},"4.1.6":{"name":"@danielsimonjr/math-mcp","version":"4.1.6","keywords":["mcp","model-context-protocol","mathjs","mathematics","calculator","performance","statistics","linear-algebra","matrix","calculus"],"author":{"name":"math-mcp contributors"},"license":"ISC","_id":"@danielsimonjr/math-mcp@4.1.6","maintainers":[{"name":"danielsimonjr","email":"danielsimonjr@yahoo.com"}],"homepage":"https://github.com/danielsimonjr/math-mcp#readme","bugs":{"url":"https://github.com/danielsimonjr/math-mcp/issues"},"bin":{"math-mcp":"dist/index.js"},"dist":{"shasum":"184ef3c85e0bbe93810200140f647c552812509c","tarball":"https://registry.npmjs.org/@danielsimonjr/math-mcp/-/math-mcp-4.1.6.tgz","fileCount":161,"integrity":"sha512-Kxi+Smnz+xaEsjEHpQKa+ogCfGekCKB7Qba6QybwDZ6Ip0VV3rHvbExz2oCFCZ4h4rUF+ThnYzAIdi7MCychzw==","signatures":[{"sig":"MEQCIByxGpjdiVvQ5vHairJV9Kv9sERLF263B6OAXyGMGIiWAiB9JGUHN03fx9zo5hj/pJotvWSclzKX9frfO5yASZoOrQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7931642},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3e50980eeac864687e5ff67d2a5573cba58bf428","scripts":{"dev":"tsc && node dist/index.js","lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"node test/integration-test.js","build":"tsc","graph":"tsx tools/generate-dependency-graph.ts","start":"node dist/index.js","bundle":"node scripts/bundle.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"husky install","lint:fix":"eslint \"src/**/*.ts\" \"test/**/*.ts\" --fix","test:all":"npm test && npm run test:correctness","test:unit":"vitest","check:deps":"node scripts/check-dependencies.js","type-check":"tsc --noEmit","verify:dist":"test -d dist && test -f dist/index.js || (echo 'Error: dist/ directory missing or incomplete' && exit 1)","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"vitest --coverage","test:security":"vitest run test/security/","prepublishOnly":"npm run type-check && npm run build && npm test && npm run test:correctness","test:correctness":"node test/correctness-tests.js"},"_npmUser":{"name":"danielsimonjr","email":"danielsimonjr@yahoo.com"},"overrides":{"esbuild":"^0.28.1","ip-address":"^10.1.1","minimatch@^10.0.0":{"brace-expansion":"^5.0.6"}},"repository":{"url":"git+https://github.com/danielsimonjr/math-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server for mathematical computations powered by MathTS (a mathjs-compatible TypeScript engine), with comprehensive input validation, security features, rate limiting, and expression caching","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"prom-client":"^15.1.3","@modelcontextprotocol/sdk":"^1.29.0","@danielsimonjr/mathts-compat":"^0.4.18","@danielsimonjr/mathts-matrix":"^0.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","husky":"9.1.7","eslint":"10.8.0","vitest":"^4.1.5","globals":"^17.8.0","prettier":"3.9.6","@eslint/js":"^10.0.1","typescript":"6.0.3","@babel/core":"^8.0.1","@types/node":"26.1.1","lint-staged":"17.2.0","@vitest/coverage-v8":"^4.1.10","eslint-plugin-jsdoc":"63.3.1","eslint-config-prettier":"10.1.8","@babel/preset-typescript":"^8.0.1","@typescript-eslint/parser":"^8.48.0","@typescript-eslint/eslint-plugin":"^8.65.0"},"_npmOperationalInternal":{"tmp":"tmp/math-mcp_4.1.6_1785693176101_0.15196228644589804","host":"s3://npm-registry-packages-npm-production"}},"4.1.7":{"name":"@danielsimonjr/math-mcp","version":"4.1.7","keywords":["mcp","model-context-protocol","mathjs","mathematics","calculator","performance","statistics","linear-algebra","matrix","calculus"],"author":{"name":"math-mcp contributors"},"license":"ISC","_id":"@danielsimonjr/math-mcp@4.1.7","maintainers":[{"name":"danielsimonjr","email":"danielsimonjr@yahoo.com"}],"homepage":"https://github.com/danielsimonjr/math-mcp#readme","bugs":{"url":"https://github.com/danielsimonjr/math-mcp/issues"},"bin":{"math-mcp":"dist/index.js"},"dist":{"shasum":"7e0cdd50d34213626729accd7459b1cd77e9355d","tarball":"https://registry.npmjs.org/@danielsimonjr/math-mcp/-/math-mcp-4.1.7.tgz","fileCount":148,"integrity":"sha512-g4AOK+v2E2nIMH9/Zj3Ji5vNg2Tz6iel2Mz6/QlOlSd/XKf7daiWV7rQNc2m+b+8K/wdFa5HUNkKFco3giwnkw==","signatures":[{"sig":"MEUCIFMbQMGk2vWKsYM5iL/dU/4aEIGNoajmLTjDKTSnwEZUAiEAk1CIRxmzCvXlZjLlmeRtbG1BudaAPEvAbQQe1Ysmilg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":787644},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e3234905c0aef7306242c238bdc4bd1a75bbb583","scripts":{"dev":"tsc && node dist/index.js","lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"node test/integration-test.js","build":"tsc","graph":"tsx tools/generate-dependency-graph.ts","start":"node dist/index.js","bundle":"node scripts/bundle.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"husky install","lint:fix":"eslint \"src/**/*.ts\" \"test/**/*.ts\" --fix","test:all":"npm test && npm run test:correctness","test:unit":"vitest","check:deps":"node scripts/check-dependencies.js","type-check":"tsc --noEmit","verify:dist":"test -d dist && test -f dist/index.js || (echo 'Error: dist/ directory missing or incomplete' && exit 1)","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"vitest --coverage","test:security":"vitest run test/security/","prepublishOnly":"npm run type-check && npm run build && npm test && npm run test:correctness","test:correctness":"node test/correctness-tests.js"},"_npmUser":{"name":"danielsimonjr","email":"danielsimonjr@yahoo.com"},"overrides":{"esbuild":"^0.28.1","ip-address":"^10.1.1","minimatch@^10.0.0":{"brace-expansion":"^5.0.6"}},"repository":{"url":"git+https://github.com/danielsimonjr/math-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server for mathematical computations powered by MathTS (a mathjs-compatible TypeScript engine), with comprehensive input validation, security features, rate limiting, and expression caching","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"prom-client":"^15.1.3","@modelcontextprotocol/sdk":"^1.30.0","@danielsimonjr/mathts-compat":"^0.4.18","@danielsimonjr/mathts-matrix":"^0.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","husky":"9.1.7","eslint":"10.8.0","vitest":"^4.1.5","globals":"^17.8.0","prettier":"3.9.6","@eslint/js":"^10.0.1","typescript":"6.0.3","@babel/core":"^8.0.1","@types/node":"26.1.1","lint-staged":"17.2.0","@vitest/coverage-v8":"^4.1.10","eslint-plugin-jsdoc":"63.3.1","eslint-config-prettier":"10.1.8","@babel/preset-typescript":"^8.0.1","@typescript-eslint/parser":"^8.48.0","@typescript-eslint/eslint-plugin":"^8.65.0"},"_npmOperationalInternal":{"tmp":"tmp/math-mcp_4.1.7_1785723366231_0.1475935451450303","host":"s3://npm-registry-packages-npm-production"}},"4.1.8":{"name":"@danielsimonjr/math-mcp","version":"4.1.8","keywords":["mcp","model-context-protocol","mathjs","mathematics","calculator","performance","statistics","linear-algebra","matrix","calculus"],"author":{"name":"math-mcp contributors"},"license":"ISC","_id":"@danielsimonjr/math-mcp@4.1.8","maintainers":[{"name":"danielsimonjr","email":"danielsimonjr@yahoo.com"}],"homepage":"https://github.com/danielsimonjr/math-mcp#readme","bugs":{"url":"https://github.com/danielsimonjr/math-mcp/issues"},"bin":{"math-mcp":"dist/index.js"},"dist":{"shasum":"1095d53c048efefa77fd1f1df0417eb6320d7b88","tarball":"https://registry.npmjs.org/@danielsimonjr/math-mcp/-/math-mcp-4.1.8.tgz","fileCount":148,"integrity":"sha512-GDTDvarF4S+6+4/oL2NH5metwEvqaMz7Olpb/qlfMrTEl3a6UDaraWX+sMpDbOCHxjubB2fSOdb+SOEFlJ89XA==","signatures":[{"sig":"MEQCIBA/alDLWoIJP7jtVGTfZnhdswIdDeMWig/LCHP7DWecAiBcFAFG22cojy0IQmabpJytVI8TdGoED41ztEK+a6JIJQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":792427},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8d9633297e3f9a9cec7292343f5278e29aeca13e","scripts":{"dev":"tsc && node dist/index.js","lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"node test/integration-test.js","build":"tsc","graph":"tsx tools/generate-dependency-graph.ts","start":"node dist/index.js","bundle":"node scripts/bundle.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"husky install","lint:fix":"eslint \"src/**/*.ts\" \"test/**/*.ts\" --fix","test:all":"npm test && npm run test:correctness","test:unit":"vitest","check:deps":"node scripts/check-dependencies.js","type-check":"tsc --noEmit","verify:dist":"test -d dist && test -f dist/index.js || (echo 'Error: dist/ directory missing or incomplete' && exit 1)","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"vitest --coverage","test:security":"vitest run test/security/","prepublishOnly":"npm run type-check && npm run build && npm test && npm run test:correctness","test:correctness":"node test/correctness-tests.js"},"_npmUser":{"name":"danielsimonjr","email":"danielsimonjr@yahoo.com"},"overrides":{"esbuild":"^0.28.1","ip-address":"^10.1.1","minimatch@^10.0.0":{"brace-expansion":"^5.0.6"}},"repository":{"url":"git+https://github.com/danielsimonjr/math-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"MCP server for mathematical computations powered by MathTS (a mathjs-compatible TypeScript engine), with comprehensive input validation, security features, rate limiting, and expression caching","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"prom-client":"^15.1.3","@modelcontextprotocol/sdk":"^1.30.0","@danielsimonjr/mathts-compat":"^0.4.18","@danielsimonjr/mathts-matrix":"^0.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","husky":"9.1.7","eslint":"10.8.0","vitest":"^4.1.5","globals":"^17.8.0","prettier":"3.9.6","@eslint/js":"^10.0.1","typescript":"6.0.3","@babel/core":"^8.0.1","@types/node":"26.1.2","lint-staged":"17.3.0","@vitest/coverage-v8":"^4.1.10","eslint-plugin-jsdoc":"63.3.3","eslint-config-prettier":"10.1.8","@babel/preset-typescript":"^8.0.1","@typescript-eslint/parser":"^8.48.0","@typescript-eslint/eslint-plugin":"^8.65.0"},"_npmOperationalInternal":{"tmp":"tmp/math-mcp_4.1.8_1786594212343_0.10005749255948215","host":"s3://npm-registry-packages-npm-production"}},"4.1.10":{"name":"@danielsimonjr/math-mcp","version":"4.1.10","keywords":["mcp","model-context-protocol","mathjs","mathematics","calculator","performance","statistics","linear-algebra","matrix","calculus"],"author":{"name":"math-mcp contributors"},"license":"ISC","_id":"@danielsimonjr/math-mcp@4.1.10","maintainers":[{"name":"danielsimonjr","email":"danielsimonjr@yahoo.com"}],"homepage":"https://github.com/danielsimonjr/math-mcp#readme","bugs":{"url":"https://github.com/danielsimonjr/math-mcp/issues"},"bin":{"math-mcp":"dist/index.js"},"dist":{"shasum":"658e5a4a802609b9eb6f2fc60f6ef3544497eed2","tarball":"https://registry.npmjs.org/@danielsimonjr/math-mcp/-/math-mcp-4.1.10.tgz","fileCount":148,"integrity":"sha512-uQK0T0Aemw7v6uIRwyVfE8/JvjdnhfSeV7op7wslc4yXMdtqIdM4+5HhyZPheoJYA4vgfbgB9928q71W+SpUjw==","signatures":[{"sig":"MEUCIQDElnvChm9XhnNL4KqW0rJt8VVBbrtM3Eybb/Df4TwSpgIgHHcPU3QJlPw75f4qsvs//IbmoS9nfDksUFLUGYyT3uU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":795234},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1dcf3a2a49ee79d3084c08a23dc68b2926c0ee11","scripts":{"dev":"tsc && node dist/index.js","lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"node test/integration-test.js","build":"tsc","graph":"tsx tools/generate-dependency-graph.ts","start":"node dist/index.js","bundle":"node scripts/bundle.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"husky install","lint:fix":"eslint \"src/**/*.ts\" \"test/**/*.ts\" --fix","test:all":"npm test && npm run test:correctness","test:unit":"vitest","check:deps":"node scripts/check-dependencies.js","type-check":"tsc --noEmit","verify:dist":"test -d dist && test -f dist/index.js || (echo 'Error: dist/ directory missing or incomplete' && exit 1)","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"vitest --coverage","test:security":"vitest run test/security/","prepublishOnly":"npm run type-check && npm run build && npm test && npm run test:correctness","test:correctness":"node test/correctness-tests.js"},"_npmUser":{"name":"danielsimonjr","email":"danielsimonjr@yahoo.com"},"overrides":{"esbuild":"^0.28.1","ip-address":"^10.1.1","minimatch@^10.0.0":{"brace-expansion":"^5.0.6"}},"repository":{"url":"git+https://github.com/danielsimonjr/math-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"MCP server for mathematical computations powered by MathTS (a mathjs-compatible TypeScript engine), with comprehensive input validation, security features, rate limiting, and expression caching","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"prom-client":"^15.1.3","@modelcontextprotocol/sdk":"^1.30.0","@danielsimonjr/mathts-compat":"^0.4.18","@danielsimonjr/mathts-matrix":"^0.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","husky":"9.1.7","eslint":"10.8.1","vitest":"^4.1.5","globals":"^17.8.0","prettier":"3.9.6","@eslint/js":"^10.0.1","typescript":"6.0.3","@babel/core":"^8.0.1","@types/node":"26.2.0","lint-staged":"17.3.0","@vitest/coverage-v8":"^4.1.10","eslint-plugin-jsdoc":"64.2.1","eslint-config-prettier":"10.1.8","@babel/preset-typescript":"^8.0.1","@typescript-eslint/parser":"^8.48.0","@typescript-eslint/eslint-plugin":"^8.65.0"},"_npmOperationalInternal":{"tmp":"tmp/math-mcp_4.1.10_1787653598213_0.14755869753697137","host":"s3://npm-registry-packages-npm-production"}},"4.2.0":{"name":"@danielsimonjr/math-mcp","version":"4.2.0","keywords":["mcp","model-context-protocol","mathjs","mathematics","calculator","performance","statistics","linear-algebra","matrix","calculus"],"author":{"name":"math-mcp contributors"},"license":"ISC","_id":"@danielsimonjr/math-mcp@4.2.0","maintainers":[{"name":"danielsimonjr","email":"danielsimonjr@yahoo.com"}],"homepage":"https://github.com/danielsimonjr/math-mcp#readme","bugs":{"url":"https://github.com/danielsimonjr/math-mcp/issues"},"bin":{"math-mcp":"dist/index.js"},"dist":{"shasum":"3e371db3eaef16b9568e536dfaa668e6720c49bb","tarball":"https://registry.npmjs.org/@danielsimonjr/math-mcp/-/math-mcp-4.2.0.tgz","fileCount":152,"integrity":"sha512-DqlBQTRRmsDtvxqfzTfOhEoGpvZ3ZZjilbwxSODa09d59dEUCjqiNUW8YSABCIqgY017EGMma7OBl2nQIIECsg==","signatures":[{"sig":"MEQCIEpAPuU+0ZWRLHqSefmBB4Fa3l/iUJM2cy3uSUOBa0CuAiB9Gl4hN9+k7hCogtFVRnC/qciGZV4etaPA4cpMeiZIvQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":792485},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ee99721f811866638370e10a1c21d41900e65b3c","scripts":{"dev":"tsc && node dist/index.js","lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"node test/integration-test.js","build":"tsc","graph":"tsx tools/generate-dependency-graph.ts","start":"node dist/index.js","bundle":"node scripts/bundle.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"husky install","lint:fix":"eslint \"src/**/*.ts\" \"test/**/*.ts\" --fix","test:all":"npm test && npm run test:correctness","test:mcp":"node test/mcp-protocol-test.js","test:unit":"vitest","check:deps":"node scripts/check-dependencies.js","type-check":"tsc --noEmit","verify:dist":"test -d dist && test -f dist/index.js || (echo 'Error: dist/ directory missing or incomplete' && exit 1)","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"vitest --coverage","test:security":"vitest run test/security/","prepublishOnly":"npm run type-check && npm run build && npm test && npm run test:correctness","test:correctness":"node test/correctness-tests.js"},"_npmUser":{"name":"danielsimonjr","email":"danielsimonjr@yahoo.com"},"overrides":{"esbuild":"^0.28.1","ip-address":"^10.1.1","minimatch@^10.0.0":{"brace-expansion":"^5.0.6"}},"repository":{"url":"git+https://github.com/danielsimonjr/math-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"MCP server for mathematical computations powered by MathTS (a mathjs-compatible TypeScript engine), with comprehensive input validation, security features, rate limiting, and expression caching","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.2.0","prom-client":"^15.1.3","@danielsimonjr/mathts-compat":"^0.4.18","@danielsimonjr/mathts-matrix":"^0.7.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","husky":"9.1.7","eslint":"10.9.1","vitest":"^4.1.5","globals":"^17.8.0","prettier":"3.9.6","@eslint/js":"^10.0.1","typescript":"6.0.3","@babel/core":"^8.0.1","@types/node":"26.4.0","lint-staged":"17.4.1","@vitest/coverage-v8":"^4.1.10","eslint-plugin-jsdoc":"64.2.1","eslint-config-prettier":"10.1.8","@babel/preset-typescript":"^8.0.1","@typescript-eslint/parser":"^8.48.0","@typescript-eslint/eslint-plugin":"^8.65.0"},"_npmOperationalInternal":{"tmp":"tmp/math-mcp_4.2.0_1788345118361_0.07143111243955014","host":"s3://npm-registry-packages-npm-production"}},"4.3.0":{"_id":"@danielsimonjr/math-mcp@4.3.0","bin":{"math-mcp":"dist/index.js"},"bugs":{"url":"https://github.com/danielsimonjr/math-mcp/issues"},"dist":{"shasum":"dd0fcb830d8f7763bcde4684a97d3a9f982e3489","tarball":"https://registry.npmjs.org/@danielsimonjr/math-mcp/-/math-mcp-4.3.0.tgz","fileCount":152,"integrity":"sha512-7t/NmWGuMqveTW/wjSGNvqESICUZFSE40KGKKUb28hnA6b7pOmujR+FXXcbpI5cDt/AkCRzwcUb7MPDPQd1AaQ==","signatures":[{"sig":"MEYCIQD91VwpeXimioPABmQzY/nj2irHRj3SN15KMrUzpl8gDgIhAIgSaFWkkH988SH2m2nyCkC2ppuRQdP7MoqVtX5Oalhf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDSMWfv76RzlhAX4PW9z1rjqoGNOjNYfDTELtUsN7eWnAiAZMn6cMDm+uJgllz8VIjmBdJoa4RA3MFACybWFfOMKOw=="}],"unpackedSize":798880},"main":"dist/index.js","name":"@danielsimonjr/math-mcp","type":"module","types":"./dist/index.d.ts","author":{"name":"math-mcp contributors"},"engines":{"bun":">=1.4.2","node":">=22.0.0"},"gitHead":"8b72a9a9045c4daf0a10cb7fb2be56ab86fc4850","license":"ISC","scripts":{"dev":"tsc && node dist/index.js","lint":"oxlint src test","test":"node test/integration-test.js","build":"tsc","graph":"tsx tools/generate-dependency-graph.ts","start":"node dist/index.js","bundle":"node scripts/bundle.mjs","format":"prettier --write \"src/**/*.ts\"","prepare":"husky install","lint:fix":"eslint \"src/**/*.ts\" \"test/**/*.ts\" --fix","test:all":"bun run test && bun run test:correctness","test:mcp":"node test/mcp-protocol-test.js","test:unit":"vitest","check:deps":"node scripts/check-dependencies.js","type-check":"tsc --noEmit","verify:dist":"test -d dist && test -f dist/index.js || (echo 'Error: dist/ directory missing or incomplete' && exit 1)","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"vitest --coverage","test:security":"vitest run test/security/","prepublishOnly":"bun run type-check && bun run build && bun run test && bun run test:correctness","test:correctness":"node test/correctness-tests.js"},"version":"4.3.0","_npmUser":{"name":"danielsimonjr","email":"danielsimonjr@yahoo.com"},"homepage":"https://github.com/danielsimonjr/math-mcp#readme","keywords":["mcp","model-context-protocol","mathjs","mathematics","calculator","performance","statistics","linear-algebra","matrix","calculus"],"overrides":{"esbuild":"^0.28.1","ip-address":"^10.1.1","minimatch@^10.0.0":{"brace-expansion":"^5.0.6"}},"repository":{"url":"git+https://github.com/danielsimonjr/math-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"MCP server for mathematical computations powered by MathTS (a mathjs-compatible TypeScript engine), with comprehensive input validation, security features, rate limiting, and expression caching","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"maintainers":[{"name":"danielsimonjr","email":"danielsimonjr@yahoo.com"}],"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.2.0","prom-client":"^15.1.3","@danielsimonjr/mathts-compat":"^0.4.18","@danielsimonjr/mathts-matrix":"^0.7.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"tsx":"^4.23.1","husky":"9.1.7","oxlint":"^1.82.0","vitest":"^5.0.0","prettier":"3.9.8","typescript":"^7.0.2","@babel/core":"^8.0.1","@types/node":"26.6.1","lint-staged":"17.5.1","oxlint-tsgolint":"^7.0.2001","@vitest/coverage-v8":"^5.0.0","@babel/preset-typescript":"^8.0.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/math-mcp_4.3.0_1790183576291_0.6750484192406903"}}},"time":{"created":"2025-11-02T20:46:26.213Z","modified":"2026-09-23T17:12:56.553Z","2.0.0":"2025-11-02T20:46:26.660Z","2.0.1":"2025-11-06T23:12:34.605Z","3.2.2":"2025-11-26T16:29:46.822Z","3.5.1":"2026-06-14T18:19:10.511Z","4.1.3":"2026-06-24T11:04:53.786Z","4.1.6":"2026-08-02T17:52:56.311Z","4.1.7":"2026-08-03T02:16:06.370Z","4.1.8":"2026-08-13T04:10:12.482Z","4.1.10":"2026-08-25T10:26:38.378Z","4.2.0":"2026-09-02T10:31:58.517Z","4.3.0":"2026-09-23T17:12:56.389Z"},"bugs":{"url":"https://github.com/danielsimonjr/math-mcp/issues"},"author":{"name":"math-mcp contributors"},"license":"ISC","homepage":"https://github.com/danielsimonjr/math-mcp#readme","keywords":["mcp","model-context-protocol","mathjs","mathematics","calculator","performance","statistics","linear-algebra","matrix","calculus"],"repository":{"url":"git+https://github.com/danielsimonjr/math-mcp.git","type":"git"},"description":"MCP server for mathematical computations powered by MathTS (a mathjs-compatible TypeScript engine), with comprehensive input validation, security features, rate limiting, and expression caching","maintainers":[{"name":"danielsimonjr","email":"danielsimonjr@yahoo.com"}],"readme":"# Math MCP Server\r\n\r\n[![CI](https://github.com/danielsimonjr/math-mcp/workflows/CI/badge.svg)](https://github.com/danielsimonjr/math-mcp/actions)\r\n[![License: ISC](https://img.shields.io/badge/License-ISC-blue.svg)](https://opensource.org/licenses/ISC)\r\n[![Node.js Version](https://img.shields.io/badge/node-%3E%3D22.0.0-brightgreen)](https://nodejs.org/)\r\n[![Bun](https://img.shields.io/badge/bun-%3E%3D1.4.0-f9f1e1)](https://bun.sh/)\r\n\r\nA secure, production-ready MCP (Model Context Protocol) server exposing seven\r\nmathematical tools — expression evaluation, symbolic calculus (derivative,\r\nsimplify), equation solving, matrix algebra, statistics, and unit conversion.\r\n\r\nComputation is powered by **[MathTS](https://www.npmjs.com/package/@danielsimonjr/mathts-compat)**\r\n(`@danielsimonjr/mathts-*`), a TypeScript computer-algebra engine with a\r\n**mathjs-compatible** API. The server layers input validation, expression\r\nsandboxing, rate limiting, and Prometheus/health observability on top of it.\r\n\r\n> **Engine note (v4):** As of v4.0.0 the compute engine is MathTS, not mathjs.\r\n> The tool I/O contracts are unchanged; only the internals differ. The earlier\r\n> multi-tier acceleration stack (WASM / WebWorkers / WebGPU) was removed in the\r\n> v4 cutover — MathTS handles its own internal dispatch, and large-input safety\r\n> is enforced by size limits rather than a fallback chain. See\r\n> [CHANGELOG.md](CHANGELOG.md).\r\n\r\n## Companion skill\r\n\r\nThe plugin also ships a `math` skill (`math-mcp:math`, `/math`) — a playbook\r\nthat steers Claude to offload computation to these tools instead of doing\r\nmental math, with composed workflows for solving, calculus, matrices,\r\nstatistics, and units. See [plugin/skills/math/SKILL.md](plugin/skills/math/SKILL.md).\r\n\r\n## ✨ Features\r\n\r\n### 7 mathematical tools\r\n1. **evaluate** — evaluate expressions, with optional variables (`scope`)\r\n2. **simplify** — symbolic simplification of algebraic expressions\r\n3. **derivative** — symbolic differentiation\r\n4. **solve** — solve equations for a variable\r\n5. **matrix_operations** — multiply, inverse, determinant, transpose, eigenvalues, add, subtract\r\n6. **statistics** — mean, median, mode, std, variance, min, max, sum, product\r\n7. **unit_conversion** — convert a value between units\r\n\r\n### Security\r\n- **Expression sandboxing:** AST validation blocks code injection, dangerous functions, and assignments (`src/validation.ts`).\r\n- **Input & size limits:** length, nesting-depth, matrix-dimension, and array-length caps prevent resource exhaustion. Oversized inputs are rejected up front (synchronous JS can't be interrupted, so protection is by **size limit**, not timeout).\r\n- **Rate limiting:** token-bucket limiter with configurable per-window, concurrency, and queue limits (`src/rate-limiter.ts`).\r\n\r\n### Performance & reliability\r\n- **Expression cache:** LRU cache for parsed/evaluated expressions (`src/expression-cache.ts`).\r\n- **Observability (optional):** set `ENABLE_TELEMETRY=true` to start an HTTP endpoint (default port 9090, `src/telemetry/`) exposing Prometheus metrics and Kubernetes-style health probes: `GET /metrics`, `GET /health`, `GET /health/live`, `GET /health/ready`.\r\n\r\n### Example usage\r\n```javascript\r\n// Matrix operations — matrices are JSON strings\r\nmatrix_operations(\"determinant\", \"[[1,2],[3,4]]\")                 // -2\r\nmatrix_operations(\"multiply\", \"[[1,2],[3,4]]\", \"[[5,6],[7,8]]\")   // [[19,22],[43,50]]\r\n\r\n// Statistics — data is a JSON string; mode returns an array\r\nstatistics(\"mean\", \"[1,2,3,4,5]\")   // 3\r\nstatistics(\"mode\", \"[1,2,2,3,4]\")   // [2]\r\n\r\n// Symbolic math\r\nderivative(\"x^2\", \"x\")   // \"2 * x\"\r\nsimplify(\"2 * x + x\")    // \"3 * x\"\r\n\r\n// Unit conversion (use compound forms like mi/h — not mph)\r\nunit_conversion(\"5 inches\", \"cm\")   // \"12.7 cm\"\r\n```\r\n\r\n## 📦 Installation\r\n\r\n### Requirements\r\n- **Bun** ≥ 1.4.0 — install/script toolchain (`bun.lock` is authoritative)\r\n- **Node.js** ≥ 22.0.0 — shipped MCP runtime (`node dist/index.js`)\r\n- **Platform:** Windows, macOS, or Linux\r\n\r\n### Quick start\r\n```bash\r\ngit clone https://github.com/danielsimonjr/math-mcp.git\r\ncd math-mcp\r\nbun install\r\nbun run build      # tsc — the only build step\r\nbun run test       # integration tests\r\n```\r\n\r\n### Verify installation\r\n```bash\r\nbun --version      # v1.4.0 or higher\r\nnode --version     # v22.0.0 or higher\r\nbun run type-check # completes without errors\r\nbun run test       # integration tests pass\r\n```\r\n\r\n### Integration with Claude Desktop\r\nAdd to your Claude Desktop config (`%APPDATA%\\Claude\\claude_desktop_config.json`\r\non Windows; `~/Library/Application Support/Claude/claude_desktop_config.json` on\r\nmacOS; `~/.config/Claude/claude_desktop_config.json` on Linux):\r\n\r\n```json\r\n{\r\n  \"mcpServers\": {\r\n    \"math-mcp\": {\r\n      \"command\": \"node\",\r\n      \"args\": [\"/path/to/math-mcp/dist/index.js\"]\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n### Integration with Claude CLI\r\n```bash\r\nclaude mcp add --transport stdio math-mcp node /path/to/math-mcp/dist/index.js\r\n```\r\n\r\n## 🧮 Tools documentation\r\n\r\n### 1. evaluate\r\nEvaluate a mathematical expression, optionally with variables.\r\n- `expression` (string) — the expression\r\n- `scope` (object, optional) — variable values, e.g. `{x: 5}`\r\n```javascript\r\nevaluate(\"2 + 2\")                // 4\r\nevaluate(\"sqrt(16)\")             // 4\r\nevaluate(\"x^2 + 2*x\", {x: 5})    // 35\r\nevaluate(\"derivative(x^2, x)\")   // \"2 * x\"\r\n```\r\n\r\n### 2. simplify\r\nSimplify an expression.\r\n- `expression` (string)\r\n```javascript\r\nsimplify(\"2 * x + x\")   // \"3 * x\"\r\nsimplify(\"(x + 2)^2\")   // \"x^2 + 4*x + 4\"\r\n```\r\n\r\n### 3. derivative\r\nDifferentiate symbolically.\r\n- `expression` (string), `variable` (string)\r\n```javascript\r\nderivative(\"x^2\", \"x\")     // \"2 * x\"\r\nderivative(\"sin(x)\", \"x\")  // \"cos(x)\"\r\n```\r\n\r\n### 4. solve\r\nSolve an equation for a variable. Returns **exact roots (including complex) for\r\npolynomials of degree ≤ 3**; for **degree ≥ 4 or transcendental** equations it\r\nfalls back to **numeric, real roots only**.\r\n- `equation` (string), `variable` (string)\r\n```javascript\r\nsolve(\"x^2 - 4 = 0\", \"x\")   // roots of x\r\nsolve(\"2*x + 3 = 7\", \"x\")   // x = 2\r\n```\r\n\r\n### 5. matrix_operations\r\nMatrix algebra. Matrices are passed as **JSON strings**.\r\n- `operation` (string) — `multiply`, `inverse`, `determinant`, `transpose`, `eigenvalues`, `add`, `subtract`\r\n- `matrix_a` (string) — e.g. `\"[[1,2],[3,4]]\"`\r\n- `matrix_b` (string, optional) — for binary operations\r\n```javascript\r\nmatrix_operations(\"determinant\", \"[[1,2],[3,4]]\")                  // -2\r\nmatrix_operations(\"multiply\", \"[[1,2],[3,4]]\", \"[[5,6],[7,8]]\")    // [[19,22],[43,50]]\r\nmatrix_operations(\"transpose\", \"[[1,2,3],[4,5,6]]\")                // [[1,4],[2,5],[3,6]]\r\n```\r\n\r\n### 6. statistics\r\nDataset statistics. Data is passed as a **JSON string**. Note: `mode` returns an\r\n**array** (single mode `[value]`, multiple modes `[v1, v2]`).\r\n- `operation` (string) — `mean`, `median`, `mode`, `std`, `variance`, `min`, `max`, `sum`, `product`\r\n- `data` (string) — e.g. `\"[1,2,3,4,5]\"`\r\n```javascript\r\nstatistics(\"mean\", \"[1,2,3,4,5]\")          // 3\r\nstatistics(\"std\", \"[2,4,4,4,5,5,7,9]\")      // 2\r\nstatistics(\"mode\", \"[1,2,2,3,4,4,4,5]\")     // [4]\r\n```\r\n\r\n### 7. unit_conversion\r\nConvert a value between units.\r\n- `value` (string) — value with unit, e.g. `\"5 inches\"`\r\n- `target_unit` (string) — e.g. `\"cm\"`\r\n\r\nUse compound forms for speeds (`mi/h`, `km/h`, `m/s`); the shorthands `mph` /\r\n`kph` / `knot` are not recognized units. Some astronomical/nautical units\r\n(`lightyear`, `parsec`, `AU`, `nauticalMile`, …) are not in the unit set.\r\n```javascript\r\nunit_conversion(\"5 inches\", \"cm\")             // \"12.7 cm\"\r\nunit_conversion(\"100 fahrenheit\", \"celsius\")  // \"37.78 celsius\"\r\nunit_conversion(\"50 mi/h\", \"km/h\")            // \"80.47 km/h\"\r\n```\r\n\r\n## 🏗️ Architecture\r\n\r\n```\r\nMCP client (stdio)\r\n      ↓\r\nsrc/index.ts — MCP server + 7 tool definitions  (→ dist/index.js, the bin)\r\n      ↓\r\nsrc/tool-handlers.ts — validate → compute → format, per tool\r\n      ↓\r\nsrc/math-engine.ts — MathTS instance (create(all), mathjs-compatible)\r\n```\r\n\r\n- **Compute:** MathTS (`@danielsimonjr/mathts-compat`, `@danielsimonjr/mathts-matrix`). No acceleration router / WASM / worker / GPU tier — those were removed in v4; MathTS does its own internal dispatch.\r\n- **Safety:** input validation and size limits (`src/validation.ts`), token-bucket rate limiting (`src/rate-limiter.ts`), expression cache (`src/expression-cache.ts`).\r\n- **Observability:** Prometheus metrics + health probes on port 9090 (`src/telemetry/`).\r\n\r\n### Project structure\r\n```\r\nmath-mcp/\r\n├── src/\r\n│   ├── index.ts            # MCP server + 7 tool definitions (→ dist/index.js, bin)\r\n│   ├── math-engine.ts      # Builds the MathTS instance (create(all))\r\n│   ├── tool-handlers.ts    # Business logic for the 7 tools\r\n│   ├── handler-utils.ts    # Shared handler helpers\r\n│   ├── validation.ts       # Input validation, sandboxing, size limits\r\n│   ├── rate-limiter.ts     # Token-bucket rate limiting\r\n│   ├── expression-cache.ts # LRU cache for parsed/evaluated expressions\r\n│   ├── health.ts           # Health-check system\r\n│   ├── errors.ts / types.ts\r\n│   ├── shared/             # constants.ts, logger.ts\r\n│   └── telemetry/          # metrics.ts (Prometheus), server.ts (HTTP :9090)\r\n├── test/\r\n│   ├── integration-test.js # Integration tests\r\n│   ├── correctness-tests.js\r\n│   ├── unit/               # Vitest unit tests\r\n│   └── security/           # Security tests (injection, DoS, fuzzing, bounds)\r\n├── dist/                   # Compiled JavaScript (dist/index.js is the entry)\r\n├── plugin/skills/math/            # Companion `math` skill (math-mcp:math, /math)\r\n├── docs/                   # Documentation\r\n├── CHANGELOG.md · CONTRIBUTING.md · SECURITY.md · LICENSE · package.json\r\n```\r\n\r\n## 🧪 Development\r\n\r\nBun is the TypeScript-on-Bun toolchain; Node runs the shipped server.\r\n\r\n```bash\r\nbun run build         # tsc\r\nbun start             # node dist/index.js\r\nbun run dev           # tsc && node dist/index.js\r\n\r\nbun run test          # integration tests\r\nbun run test:correctness\r\nbun run test:unit     # Vitest\r\nbun run test:security # Vitest security suite\r\nbun run test:coverage\r\n\r\nbun run type-check    # tsc --noEmit\r\nbun run lint          # ESLint\r\nbun run lint:fix\r\nbun run format        # Prettier\r\nbun run format:check\r\n```\r\n\r\n## 🔧 Configuration\r\n\r\nEnvironment variables read by the server:\r\n\r\n```bash\r\n# Logging\r\nLOG_LEVEL=debug|info|warn|error   # verbosity (default: debug; info when NODE_ENV=production)\r\nENABLE_PERF_LOGGING=true          # per-call performance logging (default: off)\r\nDISABLE_PERF_TRACKING=true        # disable internal perf tracking (default: tracking on)\r\n\r\n# Rate limiting\r\nMAX_REQUESTS_PER_WINDOW=100       # requests per window (default: 100)\r\nRATE_LIMIT_WINDOW_MS=60000        # window length, ms (default: 60000)\r\nMAX_CONCURRENT_REQUESTS=10        # max in-flight operations (default: 10)\r\nMAX_QUEUE_SIZE=50                 # max queued requests (default: 50)\r\nOPERATION_TIMEOUT=30000           # per-operation timeout, ms (default: 30000)\r\n\r\n# Cache & telemetry\r\nEXPRESSION_CACHE_SIZE=1000        # LRU expression-cache entries (default: 1000)\r\nENABLE_TELEMETRY=true             # start the metrics/health HTTP server (default: off)\r\nTELEMETRY_PORT=9090               # metrics/health port (default: 9090)\r\n```\r\n\r\nInput **size limits** are fixed constants in `src/validation.ts` (not\r\nenvironment-configurable): max matrix dimension 1000×1000, max array length\r\n100000, max expression length 10000, max nesting depth 50.\r\n\r\n## 🐛 Troubleshooting\r\n\r\n- **`Unit \"X\" not found.`** — the unit isn't in MathTS's set. Use compound speed forms (`mi/h`, not `mph`); some astronomical/nautical units aren't available.\r\n- **`Undefined symbol x`** — an expression left a free variable (e.g. mixing a symbolic term with a numeric one in `evaluate`). Supply `scope`, or keep symbolic and numeric parts separate.\r\n- **Input rejected as too large** — inputs above the size limits (matrix 1000×1000, array 100000, expression 10000 chars, nesting depth 50) are refused by design. These limits are fixed constants in `src/validation.ts`.\r\n- **Build/test issues** — ensure Bun ≥ 1.4 and Node ≥ 22, then `bun install && bun run build && bun run test`.\r\n\r\n## 📚 Documentation\r\n\r\n- **[CHANGELOG.md](CHANGELOG.md)** — version history\r\n- **[CONTRIBUTING.md](CONTRIBUTING.md)** — contribution guidelines\r\n- **[SECURITY.md](SECURITY.md)** — security policy\r\n- **[plugin/skills/math/SKILL.md](plugin/skills/math/SKILL.md)** — the `math` companion skill playbook\r\n\r\n## 🤝 Contributing\r\n\r\nContributions welcome — see [CONTRIBUTING.md](CONTRIBUTING.md). Fork, branch,\r\nmake changes, `bun run test`, commit with a conventional-commit message, and open a\r\npull request.\r\n\r\n## 📄 License\r\n\r\nISC License — see [LICENSE](LICENSE).\r\n\r\n## 🙏 Acknowledgments\r\n\r\n- **[MathTS](https://www.npmjs.com/package/@danielsimonjr/mathts-compat)** — the TypeScript compute engine (mathjs-compatible API)\r\n- **[MCP SDK](https://github.com/modelcontextprotocol)** — Model Context Protocol implementation\r\n\r\n---\r\n\r\nMade with ❤️ by the math-mcp contributors\r\n","readmeFilename":"README.md"}