{"_id":"@achmadya-dev/mcp-excel-query","_rev":"4-59985fc6329615625f744c5092cb11b6","name":"@achmadya-dev/mcp-excel-query","dist-tags":{"latest":"0.3.3"},"versions":{"0.3.0":{"name":"@achmadya-dev/mcp-excel-query","version":"0.3.0","keywords":["mcp","model-context-protocol","excel","exceljs","xlsx"],"author":{"name":"achmadya"},"license":"MIT","_id":"@achmadya-dev/mcp-excel-query@0.3.0","maintainers":[{"name":"madyardwn","email":"achmadya.dev@gmail.com"}],"homepage":"https://github.com/achmadya-dev/mcp-excel-query#readme","bugs":{"url":"https://github.com/achmadya-dev/mcp-excel-query/issues"},"bin":{"mcp-excel-query":"dist/index.js"},"dist":{"shasum":"412106fec46779f8fae32e9455cccdc5768244ba","tarball":"https://registry.npmjs.org/@achmadya-dev/mcp-excel-query/-/mcp-excel-query-0.3.0.tgz","fileCount":91,"integrity":"sha512-9xlyIYNA1fOtBtWAInT1VMpdma8SJmCkcOcxCdJg5KHqrPXR3gYrtnIWBbWFfoOIC/tK8ERO+Z0svfdLhdqkVg==","signatures":[{"sig":"MEYCIQC+GJnryJxzzkt+xoCFPacJakooUAa9Y9VD+Jzu2N64ngIhAKULpSVk0HQQSVbXfTmctxcjFOCaW4ihHGmpXUR8R0tl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":158775},"main":"dist/index.js","type":"module","_from":"file:achmadya-dev-mcp-excel-query-0.3.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"scripts":{"test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc -p tsconfig.build.json","start":"node dist/index.js","changeset":"changeset","publish-packages":"pnpm run build && changeset publish","version-packages":"changeset version"},"_npmUser":{"name":"madyardwn","email":"achmadya.dev@gmail.com"},"_resolved":"/tmp/e9fc69b652229e20b787438ceeb5e002/achmadya-dev-mcp-excel-query-0.3.0.tgz","_integrity":"sha512-9xlyIYNA1fOtBtWAInT1VMpdma8SJmCkcOcxCdJg5KHqrPXR3gYrtnIWBbWFfoOIC/tK8ERO+Z0svfdLhdqkVg==","repository":{"url":"git+https://github.com/achmadya-dev/mcp-excel-query.git","type":"git"},"_npmVersion":"11.13.0","description":"Model Context Protocol (MCP) server for local Excel file (.xlsx) reading and manipulation","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"4.3.6","exceljs":"^4.4.0","@achmadya-dev/mcp-core":"^0.3.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"30.4.2","ts-jest":"29.4.11","typescript":"5.7.2","@types/jest":"30.0.0","@types/node":"22.10.0","@jest/globals":"30.4.1","@changesets/cli":"2.29.8"},"_npmOperationalInternal":{"tmp":"tmp/mcp-excel-query_0.3.0_1781402494065_0.47760605115756194","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@achmadya-dev/mcp-excel-query","version":"0.3.1","keywords":["mcp","model-context-protocol","excel","exceljs","xlsx"],"author":{"name":"achmadya"},"license":"MIT","_id":"@achmadya-dev/mcp-excel-query@0.3.1","maintainers":[{"name":"madyardwn","email":"achmadya.dev@gmail.com"}],"homepage":"https://github.com/achmadya-dev/mcp-excel-query#readme","bugs":{"url":"https://github.com/achmadya-dev/mcp-excel-query/issues"},"bin":{"mcp-excel-query":"dist/index.js"},"dist":{"shasum":"ebdc6dd80bbc78cf0a9d13dfd78a302d7baa4524","tarball":"https://registry.npmjs.org/@achmadya-dev/mcp-excel-query/-/mcp-excel-query-0.3.1.tgz","fileCount":91,"integrity":"sha512-9bu8OCelv/kXPO/G1iW3xq48vVUjcymkL8h+xfQjA8T18r1J9LKV7tUKkIbvuebF0PvPXVXlO7JMtjO4nZhzcQ==","signatures":[{"sig":"MEUCIQDXaKCWcnVq+rp5L+v0bLeEahJr0PIidhHRtxfyCDqmzgIgWGD7YFJq57EiKzsick9hBMKHLlWvNfZofnLNZEbnNkI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":158909},"main":"dist/index.js","type":"module","_from":"file:achmadya-dev-mcp-excel-query-0.3.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"scripts":{"test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc -p tsconfig.build.json","start":"node dist/index.js","changeset":"changeset","publish-packages":"pnpm run build && changeset publish","version-packages":"changeset version"},"_npmUser":{"name":"madyardwn","email":"achmadya.dev@gmail.com"},"_resolved":"/tmp/a8b52f2a1d1d0b479af4d1e48fddbf84/achmadya-dev-mcp-excel-query-0.3.1.tgz","_integrity":"sha512-9bu8OCelv/kXPO/G1iW3xq48vVUjcymkL8h+xfQjA8T18r1J9LKV7tUKkIbvuebF0PvPXVXlO7JMtjO4nZhzcQ==","repository":{"url":"git+https://github.com/achmadya-dev/mcp-excel-query.git","type":"git"},"_npmVersion":"11.13.0","description":"Model Context Protocol (MCP) server for local Excel file (.xlsx) reading and manipulation","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"4.3.6","exceljs":"^4.4.0","@achmadya-dev/mcp-core":"^0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"30.4.2","husky":"9.1.7","ts-jest":"29.4.11","typescript":"5.7.2","@types/jest":"30.0.0","@types/node":"22.10.0","@jest/globals":"30.4.1","@changesets/cli":"2.29.8"},"_npmOperationalInternal":{"tmp":"tmp/mcp-excel-query_0.3.1_1781916949341_0.2830690052320728","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@achmadya-dev/mcp-excel-query","version":"0.3.2","keywords":["mcp","model-context-protocol","excel","exceljs","xlsx"],"author":{"name":"achmadya"},"license":"MIT","_id":"@achmadya-dev/mcp-excel-query@0.3.2","maintainers":[{"name":"madyardwn","email":"achmadya.dev@gmail.com"}],"homepage":"https://github.com/achmadya-dev/mcp-excel-query#readme","bugs":{"url":"https://github.com/achmadya-dev/mcp-excel-query/issues"},"bin":{"mcp-excel-query":"dist/index.js"},"dist":{"shasum":"e1846a5b3eadd4b742f38e66587b2b51a9d5a8b0","tarball":"https://registry.npmjs.org/@achmadya-dev/mcp-excel-query/-/mcp-excel-query-0.3.2.tgz","fileCount":91,"integrity":"sha512-OVmgowFOwDsjT1bETBXHeepXmL/R7HWarA4luZak7wIbG4kJ58PN1OuNP5nOqi/1O+TJoXhcRHUp+u+GD87Obw==","signatures":[{"sig":"MEUCID+XGHiJJQgt3gORJCHmosjJnYbUbfEGKW3TIQYkx07RAiEAvKbNz2XOMaSgjov/mMMbL2QSIfGbh2BaSFtxYdM07Zw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":158909},"main":"dist/index.js","type":"module","_from":"file:achmadya-dev-mcp-excel-query-0.3.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"scripts":{"test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc -p tsconfig.build.json","start":"node dist/index.js","changeset":"changeset","publish-packages":"pnpm run build && changeset publish","version-packages":"changeset version"},"_npmUser":{"name":"madyardwn","email":"achmadya.dev@gmail.com"},"_resolved":"/tmp/170427eb83369d1b3bb7933dd1e5304b/achmadya-dev-mcp-excel-query-0.3.2.tgz","_integrity":"sha512-OVmgowFOwDsjT1bETBXHeepXmL/R7HWarA4luZak7wIbG4kJ58PN1OuNP5nOqi/1O+TJoXhcRHUp+u+GD87Obw==","repository":{"url":"git+https://github.com/achmadya-dev/mcp-excel-query.git","type":"git"},"_npmVersion":"11.13.0","description":"Model Context Protocol (MCP) server for local Excel file (.xlsx) reading and manipulation","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"4.3.6","exceljs":"^4.4.0","@achmadya-dev/mcp-core":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"30.4.2","husky":"9.1.7","ts-jest":"29.4.11","typescript":"5.7.2","@types/jest":"30.0.0","@types/node":"22.10.0","@jest/globals":"30.4.1","@changesets/cli":"2.29.8"},"_npmOperationalInternal":{"tmp":"tmp/mcp-excel-query_0.3.2_1782005507352_0.3124858144824443","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@achmadya-dev/mcp-excel-query","version":"0.3.3","description":"Model Context Protocol (MCP) server for local Excel file (.xlsx) reading and manipulation","type":"module","author":{"name":"achmadya"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/achmadya-dev/mcp-excel-query.git"},"keywords":["mcp","model-context-protocol","excel","exceljs","xlsx"],"main":"dist/index.js","bin":{"mcp-excel-query":"dist/index.js"},"publishConfig":{"access":"public"},"engines":{"node":">=20"},"dependencies":{"@achmadya-dev/mcp-core":"^0.8.0","exceljs":"^4.4.0","zod":"4.3.6"},"devDependencies":{"@changesets/cli":"2.29.8","@jest/globals":"30.4.1","@types/jest":"30.0.0","@types/node":"22.10.0","husky":"9.1.7","jest":"30.4.2","ts-jest":"29.4.11","typescript":"5.7.2"},"scripts":{"build":"tsc -p tsconfig.build.json","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","start":"node dist/index.js","changeset":"changeset","version-packages":"changeset version","publish-packages":"pnpm run build && changeset publish"},"types":"./dist/index.d.ts","_id":"@achmadya-dev/mcp-excel-query@0.3.3","bugs":{"url":"https://github.com/achmadya-dev/mcp-excel-query/issues"},"homepage":"https://github.com/achmadya-dev/mcp-excel-query#readme","_integrity":"sha512-AQU9FIfBchy14u5tHGfzq69NgvB17dn0qYJ0ha1X76YcxPPlUHNa+RiLu1rfI0x+0ZuKvU54Zb7jY8K/go8Jow==","_resolved":"/tmp/308067df4f8d3e21fbc68b71559b5bf4/achmadya-dev-mcp-excel-query-0.3.3.tgz","_from":"file:achmadya-dev-mcp-excel-query-0.3.3.tgz","_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-AQU9FIfBchy14u5tHGfzq69NgvB17dn0qYJ0ha1X76YcxPPlUHNa+RiLu1rfI0x+0ZuKvU54Zb7jY8K/go8Jow==","shasum":"59d2fdc76f0c001b27c95670dd1abc2e3f7c3f9a","tarball":"https://registry.npmjs.org/@achmadya-dev/mcp-excel-query/-/mcp-excel-query-0.3.3.tgz","fileCount":91,"unpackedSize":158909,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIE6XkeaP+mkw/XuFRHREmy5iLV+9chlkMC7LjYlLnA31AiBsbOY+NLyIq3vbFjaU8gq6V4i0K+6Mwpfk+7SZCF8VVg=="}]},"_npmUser":{"name":"madyardwn","email":"achmadya.dev@gmail.com"},"directories":{},"maintainers":[{"name":"madyardwn","email":"achmadya.dev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-excel-query_0.3.3_1782027897317_0.6013079965518693"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-14T02:01:33.891Z","modified":"2026-06-21T07:44:57.600Z","0.3.0":"2026-06-14T02:01:34.221Z","0.3.1":"2026-06-20T00:55:49.500Z","0.3.2":"2026-06-21T01:31:47.498Z","0.3.3":"2026-06-21T07:44:57.481Z"},"bugs":{"url":"https://github.com/achmadya-dev/mcp-excel-query/issues"},"author":{"name":"achmadya"},"license":"MIT","homepage":"https://github.com/achmadya-dev/mcp-excel-query#readme","keywords":["mcp","model-context-protocol","excel","exceljs","xlsx"],"repository":{"type":"git","url":"git+https://github.com/achmadya-dev/mcp-excel-query.git"},"description":"Model Context Protocol (MCP) server for local Excel file (.xlsx) reading and manipulation","maintainers":[{"name":"madyardwn","email":"achmadya.dev@gmail.com"}],"readme":"# @achmadya-dev/mcp-excel-query\n\nMCP server for local `.xlsx` files over **stdio**. TypeScript + [ExcelJS](https://github.com/exceljs/exceljs). Read, write, format, and manage workbooks without Microsoft Excel installed.\n\n## Requirements\n\n- Node.js **≥ 20**\n- `.xlsx` files on the local filesystem (paths passed in tool arguments)\n\n## Install from npm\n\n```json\n{\n  \"mcpServers\": {\n    \"excel\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@achmadya-dev/mcp-excel-query\"],\n      \"env\": {\n        \"EXCEL_PAGING_CELLS_LIMIT\": \"4000\"\n      }\n    }\n  }\n}\n```\n\nOr use `envFile` instead of inline `env`.\n\n## Develop from source\n\n```bash\ngit clone https://github.com/achmadya-dev/mcp-excel-query.git\ncd mcp-excel-query\npnpm install\npnpm run build\npnpm test\n```\n\nOpen the repo root in Cursor and register the built server in `.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"excel\": {\n      \"command\": \"node\",\n      \"args\": [\"${workspaceFolder}/dist/index.js\"],\n      \"env\": {\n        \"EXCEL_PAGING_CELLS_LIMIT\": \"4000\"\n      }\n    }\n  }\n}\n```\n\nOr use `envFile` pointing at a `.env` in the repo root.\n\n## Environment variables\n\n| Variable                   | Default              | Description                                            |\n| -------------------------- | -------------------- | ------------------------------------------------------ |\n| `EXCEL_PAGING_CELLS_LIMIT` | _(unset = no limit)_ | Max cells returned per read; prevents huge sheet dumps |\n\n## Tools (17)\n\n| Tool                         | Use for                                                                      |\n| ---------------------------- | ---------------------------------------------------------------------------- |\n| `excel_read_sheet`           | Read rows, formulas (`showFormula`), styles, dates, merged cells, validation |\n| `excel_get_metadata`         | Sheet names, dimensions, date info                                           |\n| `excel_create_file`          | New workbook + optional headers                                              |\n| `excel_write_range`          | Bulk write, append, new sheet, single cell/formula, optional style           |\n| `excel_format_range`         | Font, fill, border, alignment, numFmt, merge                                 |\n| `excel_copy_sheet`           | Duplicate worksheet                                                          |\n| `excel_rename_sheet`         | Rename worksheet                                                             |\n| `excel_delete_sheet`         | Delete worksheet                                                             |\n| `excel_copy_range`           | Copy cells to another location                                               |\n| `excel_delete_range`         | Delete range; `shiftDirection: up` or `left`                                 |\n| `excel_unmerge_cells`        | Unmerge range                                                                |\n| `excel_create_table`         | Native Excel table                                                           |\n| `excel_insert_rows`          | Insert empty rows                                                            |\n| `excel_insert_columns`       | Insert empty columns                                                         |\n| `excel_set_sheet_visibility` | Show, hide, or very-hide a sheet                                             |\n| `excel_set_data_validation`  | Dropdown / validation rules on a range                                       |\n| `excel_set_dimensions`       | Row height, column width, sheet defaults                                     |\n\n### Common patterns\n\n```json\n// Append rows\n{ \"append\": true, \"values\": [[1, \"Alice\", 25]] }\n\n// Write formula to one cell\n{ \"startCell\": \"D2\", \"values\": [[\"=SUM(A2:C2)\"]] }\n\n// New blank sheet\n{ \"newSheet\": true, \"sheetName\": \"Report\" }\n\n// Style one cell\n{ \"startCell\": \"A1\", \"values\": [[\"Title\"]], \"style\": { \"font\": { \"bold\": true } } }\n\n// Merge + format\n{ \"startCell\": \"A1\", \"endCell\": \"C1\", \"mergeCells\": true, \"bold\": true }\n\n// Read dates using each cell's Excel numFmt\n{ \"range\": \"H3:H10\", \"headerRow\": 0, \"dateFormat\": \"cell\" }\n\n// Hide a sheet\n{ \"sheetName\": \"Archive\", \"state\": \"hidden\" }\n\n// Dropdown validation\n{ \"startCell\": \"B2\", \"endCell\": \"B100\", \"type\": \"list\", \"formulae\": [\"\\\"Yes,No,Maybe\\\"\"] }\n```\n\n## Notes\n\n- Formulas are stored, not evaluated server-side.\n- `.xlsx` only (not `.xls` or `.csv`).\n\n## Package scripts\n\n```bash\npnpm run build\npnpm test\npnpm start\n```\n","readmeFilename":"README.md"}