{"_id":"@aristeuroriz/mcp-katex-validator","_rev":"3-b6cbb922e39481291ab24ccfa0393ad0","name":"@aristeuroriz/mcp-katex-validator","dist-tags":{"latest":"3.0.2"},"versions":{"3.0.0":{"name":"@aristeuroriz/mcp-katex-validator","version":"3.0.0","author":{"name":"Aristeu Roriz Neto","email":"aristeuroriz@gmail.com"},"license":"MIT","_id":"@aristeuroriz/mcp-katex-validator@3.0.0","maintainers":[{"name":"aristeuroriz","email":"aristeuroriz@gmail.com"}],"homepage":"https://github.com/aristeuroriz/falcon-mcp/tree/main/packages/mcp-katex-validator","bugs":{"url":"https://github.com/aristeuroriz/falcon-mcp/issues"},"bin":{"mcp-katex-validator":"dist/index.js"},"dist":{"shasum":"98ba4b8e1228db4054031ff240789100360a381b","tarball":"https://registry.npmjs.org/@aristeuroriz/mcp-katex-validator/-/mcp-katex-validator-3.0.0.tgz","fileCount":14,"integrity":"sha512-GcHy2XpRg4HrznC4T9OdEEtlVuRBrob3kMWw9VyA2gDvQGouSrmg/La4HqXPwE9lx0J5YBrvBYnVcJzja1TDhw==","signatures":[{"sig":"MEUCIQCms+nyH1dUk9XxiFrugH8/Hqn8udSA7hSbPQe/lVUGHwIgRA65bIfCaIYpmHEzoevRvOzRsxiD7j5LLE3JD2+kVZM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14722},"main":"./dist/index.js","type":"module","_from":"file:aristeuroriz-mcp-katex-validator-3.0.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":"./dist/index.js","./schemas":"./dist/schemas.js","./validate":"./dist/validate.js"},"scripts":{"dev":"tsx watch src/index.ts","lint":"eslint --config ../eslint-config/base.js .","test":"vitest run --coverage","build":"tsc && chmod +x dist/index.js","test:watch":"vitest --coverage","check-types":"tsc --noEmit"},"_npmUser":{"name":"aristeuroriz","email":"aristeuroriz@gmail.com"},"_resolved":"/private/var/folders/sk/4t6tpq4n26v_5d_m9f0z265r0000gn/T/ed18ebd5d1887869ae12dc2cd879edcb/aristeuroriz-mcp-katex-validator-3.0.0.tgz","_integrity":"sha512-GcHy2XpRg4HrznC4T9OdEEtlVuRBrob3kMWw9VyA2gDvQGouSrmg/La4HqXPwE9lx0J5YBrvBYnVcJzja1TDhw==","repository":{"url":"git+https://github.com/aristeuroriz/falcon-mcp.git","type":"git","directory":"packages/mcp-katex-validator"},"_npmVersion":"11.6.2","description":"MCP server that validates KaTeX/LaTeX expression syntax","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^3.25.0","katex":"^0.16.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.0","eslint":"^9.39.1","vitest":"^3.2.0","typescript":"^5.9.2","@types/node":"^22.15.0","@vitest/coverage-v8":"^3.2.7","@falcon-mcp/eslint-config":"0.0.0","@falcon-mcp/typescript-config":"0.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-katex-validator_3.0.0_1785526539572_0.5175299895840908","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@aristeuroriz/mcp-katex-validator","version":"3.0.1","author":{"name":"Aristeu Roriz Neto","email":"aristeuroriz@gmail.com"},"license":"MIT","_id":"@aristeuroriz/mcp-katex-validator@3.0.1","maintainers":[{"name":"aristeuroriz","email":"aristeuroriz@gmail.com"}],"homepage":"https://github.com/aristeuroriz/falcon-mcp/tree/main/packages/mcp-katex-validator","bugs":{"url":"https://github.com/aristeuroriz/falcon-mcp/issues"},"bin":{"mcp-katex-validator":"dist/index.js"},"dist":{"shasum":"4c90404ad24b7aa307607039efef0e7533552296","tarball":"https://registry.npmjs.org/@aristeuroriz/mcp-katex-validator/-/mcp-katex-validator-3.0.1.tgz","fileCount":13,"integrity":"sha512-m87nAEVF+8eJ54J73iSk81f3SY+71xZjjdd+RLSlwOwQEkwY3jmnkjXvfp54BEPLijARr27r0kGmDGuzzzEjhQ==","signatures":[{"sig":"MEUCIHALYNaBKq6GsQPcLiCc4vJcoKtVSocYBUp+gZBTeE3IAiEA8y1HYDiwos3GC9HUZb78ocKAJqstXOtHybVqdCNDy6Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aristeuroriz%2fmcp-katex-validator@3.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13633},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":"./dist/index.js","./schemas":"./dist/schemas.js","./validate":"./dist/validate.js"},"gitHead":"a659418a62ee760d287d2e213d4d17aa61f1f87e","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint --config ../eslint-config/base.js .","test":"vitest run --coverage","build":"tsc && chmod +x dist/index.js","test:watch":"vitest --coverage","check-types":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ea6b92b1-4eac-44fe-b513-5a641e67e8a7"}},"repository":{"url":"git+https://github.com/aristeuroriz/falcon-mcp.git","type":"git","directory":"packages/mcp-katex-validator"},"_npmVersion":"12.0.2","description":"MCP server that validates KaTeX/LaTeX expression syntax","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.25.0","katex":"^0.16.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.0","eslint":"^9.39.1","vitest":"^3.2.0","typescript":"^5.9.2","@types/node":"^22.15.0","@vitest/coverage-v8":"^3.2.7","@falcon-mcp/eslint-config":"workspace:*","@falcon-mcp/typescript-config":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/mcp-katex-validator_3.0.1_1785530447145_0.804310756016106","host":"s3://npm-registry-packages-npm-production"}},"3.0.2":{"name":"@aristeuroriz/mcp-katex-validator","version":"3.0.2","description":"MCP server that validates KaTeX/LaTeX expression syntax","type":"module","license":"MIT","author":{"name":"Aristeu Roriz Neto","email":"aristeuroriz@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/aristeuroriz/falcon-mcp.git","directory":"packages/mcp-katex-validator"},"homepage":"https://github.com/aristeuroriz/falcon-mcp/tree/main/packages/mcp-katex-validator","bugs":{"url":"https://github.com/aristeuroriz/falcon-mcp/issues"},"publishConfig":{"access":"public"},"bin":{"mcp-katex-validator":"dist/index.js"},"main":"./dist/index.js","exports":{".":"./dist/index.js","./validate":"./dist/validate.js","./schemas":"./dist/schemas.js"},"scripts":{"build":"tsc && chmod +x dist/index.js","check-types":"tsc --noEmit","dev":"tsx watch src/index.ts","lint":"eslint --config ../eslint-config/base.js .","test":"vitest run --coverage","test:watch":"vitest --coverage"},"engines":{"node":">=20"},"dependencies":{"@modelcontextprotocol/sdk":"^1.0.0","katex":"^0.16.0","zod":"^3.25.0"},"devDependencies":{"@falcon-mcp/eslint-config":"workspace:*","@falcon-mcp/typescript-config":"workspace:*","@types/node":"^22.15.0","@vitest/coverage-v8":"^3.2.7","eslint":"^9.39.1","tsx":"^4.20.0","typescript":"^5.9.2","vitest":"^3.2.0"},"gitHead":"c57e6d28cbcadbce871fe0c72ad1cc9c9ad19ca0","types":"./dist/index.d.ts","_id":"@aristeuroriz/mcp-katex-validator@3.0.2","_nodeVersion":"24.18.0","_npmVersion":"12.0.2","dist":{"integrity":"sha512-GxuzHKC7ZLAOUyEaSIx9YV+WEICDBtjx4TIaA1W1fjVRKOBwQhgAQYPWkKDsyfNA4CEOp24/gYmSMKWuk3HgMg==","shasum":"dd262fc0a634b884428fd08ca9d10bc6d18a46db","tarball":"https://registry.npmjs.org/@aristeuroriz/mcp-katex-validator/-/mcp-katex-validator-3.0.2.tgz","fileCount":14,"unpackedSize":17393,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aristeuroriz%2fmcp-katex-validator@3.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDRh8BWt8w0G1t3NR2f22J95icRuYS6guuYbkcENe1cpAIhAKPjTGf4g04Ssl65yQ95mY8rBgtpEIaIPpTfAORqOkeP"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ea6b92b1-4eac-44fe-b513-5a641e67e8a7"}},"directories":{},"maintainers":[{"name":"aristeuroriz","email":"aristeuroriz@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-katex-validator_3.0.2_1785531105149_0.5696638991891314"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-31T19:35:39.455Z","modified":"2026-07-31T20:51:45.595Z","3.0.0":"2026-07-31T19:35:39.703Z","3.0.1":"2026-07-31T20:40:47.304Z","3.0.2":"2026-07-31T20:51:45.277Z"},"bugs":{"url":"https://github.com/aristeuroriz/falcon-mcp/issues"},"author":{"name":"Aristeu Roriz Neto","email":"aristeuroriz@gmail.com"},"license":"MIT","homepage":"https://github.com/aristeuroriz/falcon-mcp/tree/main/packages/mcp-katex-validator","repository":{"type":"git","url":"git+https://github.com/aristeuroriz/falcon-mcp.git","directory":"packages/mcp-katex-validator"},"description":"MCP server that validates KaTeX/LaTeX expression syntax","maintainers":[{"name":"aristeuroriz","email":"aristeuroriz@gmail.com"}],"readme":"# @aristeuroriz/mcp-katex-validator\n\n[![npm version](https://img.shields.io/npm/v/@aristeuroriz/mcp-katex-validator.svg)](https://www.npmjs.com/package/@aristeuroriz/mcp-katex-validator)\n[![Node.js](https://img.shields.io/node/v/@aristeuroriz/mcp-katex-validator.svg)](https://nodejs.org)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nMCP (Model Context Protocol) server that validates **KaTeX / LaTeX** expression syntax over stdio.\n\nUse it from Cursor, VS Code (GitHub Copilot), Claude Desktop/Code, or any MCP client so agents can check math markup before rendering or saving it.\n\n## Features\n\n- Single MCP tool: `validate_katex`\n- Batch validation: pass one or many expressions in one call\n- Strict KaTeX mode (`throwOnError` + `strict: \"error\"`)\n- Structured results with 0-based failure indexes\n- Works via `npx` — no global install required\n\n## Requirements\n\n- **Node.js** `>= 20`\n\n## Install\n\n```bash\nnpm install -g @aristeuroriz/mcp-katex-validator\n```\n\nOr run without installing:\n\n```bash\nnpx -y @aristeuroriz/mcp-katex-validator\n```\n\n## MCP client setup\n\nAdd the server to your client's MCP config, then restart the client (or reload MCP servers).\n\n### Cursor\n\nPaste into `.cursor/mcp.json` (project) or `~/.cursor/mcp.json` (global):\n\n```json\n{\n  \"mcpServers\": {\n    \"mcp-katex-validator\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@aristeuroriz/mcp-katex-validator\"]\n    }\n  }\n}\n```\n\n### Claude Desktop / Claude Code\n\nSame `mcpServers` shape as Cursor (Claude Desktop config or project `.mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"mcp-katex-validator\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@aristeuroriz/mcp-katex-validator\"]\n    }\n  }\n}\n```\n\n### VS Code (GitHub Copilot)\n\nPaste into `.vscode/mcp.json`:\n\n```json\n{\n  \"servers\": {\n    \"mcp-katex-validator\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@aristeuroriz/mcp-katex-validator\"]\n    }\n  }\n}\n```\n\n## Tool: `validate_katex`\n\nValidates one or more LaTeX strings with KaTeX in strict mode.\n\n### Input\n\n| Field | Type | Required | Description |\n| --- | --- | --- | --- |\n| `expressions` | `string[]` | yes | One or more LaTeX formulas (`minItems: 1`) |\n\nExample arguments:\n\n```json\n{\n  \"expressions\": [\"E = mc^2\", \"\\\\frac{1}{\", \"\\\\sum_{i=1}^{n} i\"]\n}\n```\n\n### Output\n\nReturned as JSON text content and as `structuredContent`.\n\nWhen every expression is valid:\n\n```json\n{\n  \"allValid\": true,\n  \"total\": 2,\n  \"invalidCount\": 0,\n  \"failures\": []\n}\n```\n\nWhen some fail, only failures are listed (0-based `index`):\n\n```json\n{\n  \"allValid\": false,\n  \"total\": 3,\n  \"invalidCount\": 1,\n  \"failures\": [\n    {\n      \"index\": 1,\n      \"expression\": \"\\\\frac{1}{\",\n      \"error\": \"Expected '}', got 'EOF' ...\"\n    }\n  ]\n}\n```\n\nIf any expression is invalid, the MCP tool response sets `isError: true`.\n\n## Programmatic API\n\nYou can also import the validators in Node.js (without starting the MCP server):\n\n```ts\nimport {\n  validateKatex,\n  validateKatexBatch,\n} from \"@aristeuroriz/mcp-katex-validator/validate\";\n\nvalidateKatex(\"E = mc^2\");\n// → { valid: true, expression: \"E = mc^2\" }\n\nvalidateKatexBatch([\"a^2\", \"\\\\frac{1}{\"]);\n// → { allValid: false, total: 2, invalidCount: 1, failures: [...] }\n```\n\nZod schemas are available from `@aristeuroriz/mcp-katex-validator/schemas`.\n\n## Links\n\n- [npm package](https://www.npmjs.com/package/@aristeuroriz/mcp-katex-validator)\n- [Source](https://github.com/aristeuroriz/falcon-mcp/tree/main/packages/mcp-katex-validator)\n- [Issues](https://github.com/aristeuroriz/falcon-mcp/issues)\n- [Changelog](https://github.com/aristeuroriz/falcon-mcp/blob/main/packages/mcp-katex-validator/CHANGELOG.md)\n\n## License\n\nMIT © Aristeu Roriz Neto\n","readmeFilename":"README.md"}