@mcp-z/mcp-sheets 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (363) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +181 -0
  3. package/bin/server.js +5 -0
  4. package/dist/cjs/constants.d.cts +7 -0
  5. package/dist/cjs/constants.d.ts +7 -0
  6. package/dist/cjs/constants.js +18 -0
  7. package/dist/cjs/constants.js.map +1 -0
  8. package/dist/cjs/index.d.cts +8 -0
  9. package/dist/cjs/index.d.ts +8 -0
  10. package/dist/cjs/index.js +314 -0
  11. package/dist/cjs/index.js.map +1 -0
  12. package/dist/cjs/lib/create-store.d.cts +2 -0
  13. package/dist/cjs/lib/create-store.d.ts +2 -0
  14. package/dist/cjs/lib/create-store.js +166 -0
  15. package/dist/cjs/lib/create-store.js.map +1 -0
  16. package/dist/cjs/mcp/index.d.cts +3 -0
  17. package/dist/cjs/mcp/index.d.ts +3 -0
  18. package/dist/cjs/mcp/index.js +66 -0
  19. package/dist/cjs/mcp/index.js.map +1 -0
  20. package/dist/cjs/mcp/prompts/a1-notation.d.cts +19 -0
  21. package/dist/cjs/mcp/prompts/a1-notation.d.ts +19 -0
  22. package/dist/cjs/mcp/prompts/a1-notation.js +169 -0
  23. package/dist/cjs/mcp/prompts/a1-notation.js.map +1 -0
  24. package/dist/cjs/mcp/prompts/index.d.cts +1 -0
  25. package/dist/cjs/mcp/prompts/index.d.ts +1 -0
  26. package/dist/cjs/mcp/prompts/index.js +17 -0
  27. package/dist/cjs/mcp/prompts/index.js.map +1 -0
  28. package/dist/cjs/mcp/resources/index.d.cts +1 -0
  29. package/dist/cjs/mcp/resources/index.d.ts +1 -0
  30. package/dist/cjs/mcp/resources/index.js +17 -0
  31. package/dist/cjs/mcp/resources/index.js.map +1 -0
  32. package/dist/cjs/mcp/resources/spreadsheet.d.cts +2 -0
  33. package/dist/cjs/mcp/resources/spreadsheet.d.ts +2 -0
  34. package/dist/cjs/mcp/resources/spreadsheet.js +258 -0
  35. package/dist/cjs/mcp/resources/spreadsheet.js.map +1 -0
  36. package/dist/cjs/mcp/tools/cells-format.d.cts +144 -0
  37. package/dist/cjs/mcp/tools/cells-format.d.ts +144 -0
  38. package/dist/cjs/mcp/tools/cells-format.js +484 -0
  39. package/dist/cjs/mcp/tools/cells-format.js.map +1 -0
  40. package/dist/cjs/mcp/tools/chart-create.d.cts +94 -0
  41. package/dist/cjs/mcp/tools/chart-create.d.ts +94 -0
  42. package/dist/cjs/mcp/tools/chart-create.js +575 -0
  43. package/dist/cjs/mcp/tools/chart-create.js.map +1 -0
  44. package/dist/cjs/mcp/tools/columns-get.d.cts +55 -0
  45. package/dist/cjs/mcp/tools/columns-get.d.ts +55 -0
  46. package/dist/cjs/mcp/tools/columns-get.js +289 -0
  47. package/dist/cjs/mcp/tools/columns-get.js.map +1 -0
  48. package/dist/cjs/mcp/tools/columns-update.d.cts +86 -0
  49. package/dist/cjs/mcp/tools/columns-update.d.ts +86 -0
  50. package/dist/cjs/mcp/tools/columns-update.js +482 -0
  51. package/dist/cjs/mcp/tools/columns-update.js.map +1 -0
  52. package/dist/cjs/mcp/tools/csv-get-columns.d.cts +43 -0
  53. package/dist/cjs/mcp/tools/csv-get-columns.d.ts +43 -0
  54. package/dist/cjs/mcp/tools/csv-get-columns.js +386 -0
  55. package/dist/cjs/mcp/tools/csv-get-columns.js.map +1 -0
  56. package/dist/cjs/mcp/tools/dimensions-batch-update.d.cts +118 -0
  57. package/dist/cjs/mcp/tools/dimensions-batch-update.d.ts +118 -0
  58. package/dist/cjs/mcp/tools/dimensions-batch-update.js +504 -0
  59. package/dist/cjs/mcp/tools/dimensions-batch-update.js.map +1 -0
  60. package/dist/cjs/mcp/tools/dimensions-move.d.cts +86 -0
  61. package/dist/cjs/mcp/tools/dimensions-move.d.ts +86 -0
  62. package/dist/cjs/mcp/tools/dimensions-move.js +359 -0
  63. package/dist/cjs/mcp/tools/dimensions-move.js.map +1 -0
  64. package/dist/cjs/mcp/tools/index.d.cts +26 -0
  65. package/dist/cjs/mcp/tools/index.d.ts +26 -0
  66. package/dist/cjs/mcp/tools/index.js +122 -0
  67. package/dist/cjs/mcp/tools/index.js.map +1 -0
  68. package/dist/cjs/mcp/tools/lib/dimension-operations.d.cts +48 -0
  69. package/dist/cjs/mcp/tools/lib/dimension-operations.d.ts +48 -0
  70. package/dist/cjs/mcp/tools/lib/dimension-operations.js +177 -0
  71. package/dist/cjs/mcp/tools/lib/dimension-operations.js.map +1 -0
  72. package/dist/cjs/mcp/tools/rows-append.d.cts +58 -0
  73. package/dist/cjs/mcp/tools/rows-append.d.ts +58 -0
  74. package/dist/cjs/mcp/tools/rows-append.js +335 -0
  75. package/dist/cjs/mcp/tools/rows-append.js.map +1 -0
  76. package/dist/cjs/mcp/tools/rows-csv-append.d.cts +67 -0
  77. package/dist/cjs/mcp/tools/rows-csv-append.d.ts +67 -0
  78. package/dist/cjs/mcp/tools/rows-csv-append.js +859 -0
  79. package/dist/cjs/mcp/tools/rows-csv-append.js.map +1 -0
  80. package/dist/cjs/mcp/tools/rows-get.d.cts +56 -0
  81. package/dist/cjs/mcp/tools/rows-get.d.ts +56 -0
  82. package/dist/cjs/mcp/tools/rows-get.js +292 -0
  83. package/dist/cjs/mcp/tools/rows-get.js.map +1 -0
  84. package/dist/cjs/mcp/tools/sheet-copy-to.d.cts +68 -0
  85. package/dist/cjs/mcp/tools/sheet-copy-to.d.ts +68 -0
  86. package/dist/cjs/mcp/tools/sheet-copy-to.js +341 -0
  87. package/dist/cjs/mcp/tools/sheet-copy-to.js.map +1 -0
  88. package/dist/cjs/mcp/tools/sheet-copy.d.cts +80 -0
  89. package/dist/cjs/mcp/tools/sheet-copy.d.ts +80 -0
  90. package/dist/cjs/mcp/tools/sheet-copy.js +394 -0
  91. package/dist/cjs/mcp/tools/sheet-copy.js.map +1 -0
  92. package/dist/cjs/mcp/tools/sheet-create.d.cts +56 -0
  93. package/dist/cjs/mcp/tools/sheet-create.d.ts +56 -0
  94. package/dist/cjs/mcp/tools/sheet-create.js +283 -0
  95. package/dist/cjs/mcp/tools/sheet-create.js.map +1 -0
  96. package/dist/cjs/mcp/tools/sheet-delete.d.cts +62 -0
  97. package/dist/cjs/mcp/tools/sheet-delete.d.ts +62 -0
  98. package/dist/cjs/mcp/tools/sheet-delete.js +341 -0
  99. package/dist/cjs/mcp/tools/sheet-delete.js.map +1 -0
  100. package/dist/cjs/mcp/tools/sheet-find.d.cts +48 -0
  101. package/dist/cjs/mcp/tools/sheet-find.d.ts +48 -0
  102. package/dist/cjs/mcp/tools/sheet-find.js +261 -0
  103. package/dist/cjs/mcp/tools/sheet-find.js.map +1 -0
  104. package/dist/cjs/mcp/tools/sheet-rename.d.cts +60 -0
  105. package/dist/cjs/mcp/tools/sheet-rename.d.ts +60 -0
  106. package/dist/cjs/mcp/tools/sheet-rename.js +305 -0
  107. package/dist/cjs/mcp/tools/sheet-rename.js.map +1 -0
  108. package/dist/cjs/mcp/tools/spreadsheet-copy.d.cts +58 -0
  109. package/dist/cjs/mcp/tools/spreadsheet-copy.d.ts +58 -0
  110. package/dist/cjs/mcp/tools/spreadsheet-copy.js +319 -0
  111. package/dist/cjs/mcp/tools/spreadsheet-copy.js.map +1 -0
  112. package/dist/cjs/mcp/tools/spreadsheet-create.d.cts +52 -0
  113. package/dist/cjs/mcp/tools/spreadsheet-create.d.ts +52 -0
  114. package/dist/cjs/mcp/tools/spreadsheet-create.js +270 -0
  115. package/dist/cjs/mcp/tools/spreadsheet-create.js.map +1 -0
  116. package/dist/cjs/mcp/tools/spreadsheet-find.d.cts +58 -0
  117. package/dist/cjs/mcp/tools/spreadsheet-find.d.ts +58 -0
  118. package/dist/cjs/mcp/tools/spreadsheet-find.js +334 -0
  119. package/dist/cjs/mcp/tools/spreadsheet-find.js.map +1 -0
  120. package/dist/cjs/mcp/tools/spreadsheet-rename.d.cts +56 -0
  121. package/dist/cjs/mcp/tools/spreadsheet-rename.d.ts +56 -0
  122. package/dist/cjs/mcp/tools/spreadsheet-rename.js +289 -0
  123. package/dist/cjs/mcp/tools/spreadsheet-rename.js.map +1 -0
  124. package/dist/cjs/mcp/tools/validation-set.d.cts +144 -0
  125. package/dist/cjs/mcp/tools/validation-set.d.ts +144 -0
  126. package/dist/cjs/mcp/tools/validation-set.js +564 -0
  127. package/dist/cjs/mcp/tools/validation-set.js.map +1 -0
  128. package/dist/cjs/mcp/tools/values-batch-update.d.cts +102 -0
  129. package/dist/cjs/mcp/tools/values-batch-update.d.ts +102 -0
  130. package/dist/cjs/mcp/tools/values-batch-update.js +409 -0
  131. package/dist/cjs/mcp/tools/values-batch-update.js.map +1 -0
  132. package/dist/cjs/mcp/tools/values-clear.d.cts +56 -0
  133. package/dist/cjs/mcp/tools/values-clear.d.ts +56 -0
  134. package/dist/cjs/mcp/tools/values-clear.js +308 -0
  135. package/dist/cjs/mcp/tools/values-clear.js.map +1 -0
  136. package/dist/cjs/mcp/tools/values-csv-update.d.cts +75 -0
  137. package/dist/cjs/mcp/tools/values-csv-update.d.ts +75 -0
  138. package/dist/cjs/mcp/tools/values-csv-update.js +500 -0
  139. package/dist/cjs/mcp/tools/values-csv-update.js.map +1 -0
  140. package/dist/cjs/mcp/tools/values-replace.d.cts +68 -0
  141. package/dist/cjs/mcp/tools/values-replace.d.ts +68 -0
  142. package/dist/cjs/mcp/tools/values-replace.js +378 -0
  143. package/dist/cjs/mcp/tools/values-replace.js.map +1 -0
  144. package/dist/cjs/mcp/tools/values-search.d.cts +74 -0
  145. package/dist/cjs/mcp/tools/values-search.d.ts +74 -0
  146. package/dist/cjs/mcp/tools/values-search.js +470 -0
  147. package/dist/cjs/mcp/tools/values-search.js.map +1 -0
  148. package/dist/cjs/package.json +1 -0
  149. package/dist/cjs/schemas/index.d.cts +14 -0
  150. package/dist/cjs/schemas/index.d.ts +14 -0
  151. package/dist/cjs/schemas/index.js +64 -0
  152. package/dist/cjs/schemas/index.js.map +1 -0
  153. package/dist/cjs/setup/config.d.cts +44 -0
  154. package/dist/cjs/setup/config.d.ts +44 -0
  155. package/dist/cjs/setup/config.js +201 -0
  156. package/dist/cjs/setup/config.js.map +1 -0
  157. package/dist/cjs/setup/http.d.cts +8 -0
  158. package/dist/cjs/setup/http.d.ts +8 -0
  159. package/dist/cjs/setup/http.js +260 -0
  160. package/dist/cjs/setup/http.js.map +1 -0
  161. package/dist/cjs/setup/index.d.cts +5 -0
  162. package/dist/cjs/setup/index.d.ts +5 -0
  163. package/dist/cjs/setup/index.js +46 -0
  164. package/dist/cjs/setup/index.js.map +1 -0
  165. package/dist/cjs/setup/oauth-google.d.cts +54 -0
  166. package/dist/cjs/setup/oauth-google.d.ts +54 -0
  167. package/dist/cjs/setup/oauth-google.js +332 -0
  168. package/dist/cjs/setup/oauth-google.js.map +1 -0
  169. package/dist/cjs/setup/runtime.d.cts +10 -0
  170. package/dist/cjs/setup/runtime.d.ts +10 -0
  171. package/dist/cjs/setup/runtime.js +353 -0
  172. package/dist/cjs/setup/runtime.js.map +1 -0
  173. package/dist/cjs/setup/stdio.d.cts +7 -0
  174. package/dist/cjs/setup/stdio.d.ts +7 -0
  175. package/dist/cjs/setup/stdio.js +239 -0
  176. package/dist/cjs/setup/stdio.js.map +1 -0
  177. package/dist/cjs/spreadsheet/column-utilities.d.cts +1 -0
  178. package/dist/cjs/spreadsheet/column-utilities.d.ts +1 -0
  179. package/dist/cjs/spreadsheet/column-utilities.js +21 -0
  180. package/dist/cjs/spreadsheet/column-utilities.js.map +1 -0
  181. package/dist/cjs/spreadsheet/csv-streaming.d.cts +19 -0
  182. package/dist/cjs/spreadsheet/csv-streaming.d.ts +19 -0
  183. package/dist/cjs/spreadsheet/csv-streaming.js +188 -0
  184. package/dist/cjs/spreadsheet/csv-streaming.js.map +1 -0
  185. package/dist/cjs/spreadsheet/data-operations.d.cts +115 -0
  186. package/dist/cjs/spreadsheet/data-operations.d.ts +115 -0
  187. package/dist/cjs/spreadsheet/data-operations.js +1515 -0
  188. package/dist/cjs/spreadsheet/data-operations.js.map +1 -0
  189. package/dist/cjs/spreadsheet/deduplication-utils.d.cts +31 -0
  190. package/dist/cjs/spreadsheet/deduplication-utils.d.ts +31 -0
  191. package/dist/cjs/spreadsheet/deduplication-utils.js +65 -0
  192. package/dist/cjs/spreadsheet/deduplication-utils.js.map +1 -0
  193. package/dist/cjs/spreadsheet/range-operations.d.cts +184 -0
  194. package/dist/cjs/spreadsheet/range-operations.d.ts +184 -0
  195. package/dist/cjs/spreadsheet/range-operations.js +672 -0
  196. package/dist/cjs/spreadsheet/range-operations.js.map +1 -0
  197. package/dist/cjs/spreadsheet/sheet-operations.d.cts +30 -0
  198. package/dist/cjs/spreadsheet/sheet-operations.d.ts +30 -0
  199. package/dist/cjs/spreadsheet/sheet-operations.js +811 -0
  200. package/dist/cjs/spreadsheet/sheet-operations.js.map +1 -0
  201. package/dist/cjs/spreadsheet/spreadsheet-management.d.cts +21 -0
  202. package/dist/cjs/spreadsheet/spreadsheet-management.d.ts +21 -0
  203. package/dist/cjs/spreadsheet/spreadsheet-management.js +310 -0
  204. package/dist/cjs/spreadsheet/spreadsheet-management.js.map +1 -0
  205. package/dist/cjs/types.d.cts +53 -0
  206. package/dist/cjs/types.d.ts +53 -0
  207. package/dist/cjs/types.js +5 -0
  208. package/dist/cjs/types.js.map +1 -0
  209. package/dist/esm/constants.d.ts +7 -0
  210. package/dist/esm/constants.js +7 -0
  211. package/dist/esm/constants.js.map +1 -0
  212. package/dist/esm/index.d.ts +8 -0
  213. package/dist/esm/index.js +34 -0
  214. package/dist/esm/index.js.map +1 -0
  215. package/dist/esm/lib/create-store.d.ts +2 -0
  216. package/dist/esm/lib/create-store.js +6 -0
  217. package/dist/esm/lib/create-store.js.map +1 -0
  218. package/dist/esm/mcp/index.d.ts +3 -0
  219. package/dist/esm/mcp/index.js +6 -0
  220. package/dist/esm/mcp/index.js.map +1 -0
  221. package/dist/esm/mcp/prompts/a1-notation.d.ts +19 -0
  222. package/dist/esm/mcp/prompts/a1-notation.js +49 -0
  223. package/dist/esm/mcp/prompts/a1-notation.js.map +1 -0
  224. package/dist/esm/mcp/prompts/index.d.ts +1 -0
  225. package/dist/esm/mcp/prompts/index.js +1 -0
  226. package/dist/esm/mcp/prompts/index.js.map +1 -0
  227. package/dist/esm/mcp/resources/index.d.ts +1 -0
  228. package/dist/esm/mcp/resources/index.js +1 -0
  229. package/dist/esm/mcp/resources/index.js.map +1 -0
  230. package/dist/esm/mcp/resources/spreadsheet.d.ts +2 -0
  231. package/dist/esm/mcp/resources/spreadsheet.js +88 -0
  232. package/dist/esm/mcp/resources/spreadsheet.js.map +1 -0
  233. package/dist/esm/mcp/tools/cells-format.d.ts +144 -0
  234. package/dist/esm/mcp/tools/cells-format.js +288 -0
  235. package/dist/esm/mcp/tools/cells-format.js.map +1 -0
  236. package/dist/esm/mcp/tools/chart-create.d.ts +94 -0
  237. package/dist/esm/mcp/tools/chart-create.js +408 -0
  238. package/dist/esm/mcp/tools/chart-create.js.map +1 -0
  239. package/dist/esm/mcp/tools/columns-get.d.ts +55 -0
  240. package/dist/esm/mcp/tools/columns-get.js +113 -0
  241. package/dist/esm/mcp/tools/columns-get.js.map +1 -0
  242. package/dist/esm/mcp/tools/columns-update.d.ts +86 -0
  243. package/dist/esm/mcp/tools/columns-update.js +296 -0
  244. package/dist/esm/mcp/tools/columns-update.js.map +1 -0
  245. package/dist/esm/mcp/tools/csv-get-columns.d.ts +43 -0
  246. package/dist/esm/mcp/tools/csv-get-columns.js +95 -0
  247. package/dist/esm/mcp/tools/csv-get-columns.js.map +1 -0
  248. package/dist/esm/mcp/tools/dimensions-batch-update.d.ts +118 -0
  249. package/dist/esm/mcp/tools/dimensions-batch-update.js +321 -0
  250. package/dist/esm/mcp/tools/dimensions-batch-update.js.map +1 -0
  251. package/dist/esm/mcp/tools/dimensions-move.d.ts +86 -0
  252. package/dist/esm/mcp/tools/dimensions-move.js +183 -0
  253. package/dist/esm/mcp/tools/dimensions-move.js.map +1 -0
  254. package/dist/esm/mcp/tools/index.d.ts +26 -0
  255. package/dist/esm/mcp/tools/index.js +26 -0
  256. package/dist/esm/mcp/tools/index.js.map +1 -0
  257. package/dist/esm/mcp/tools/lib/dimension-operations.d.ts +48 -0
  258. package/dist/esm/mcp/tools/lib/dimension-operations.js +93 -0
  259. package/dist/esm/mcp/tools/lib/dimension-operations.js.map +1 -0
  260. package/dist/esm/mcp/tools/rows-append.d.ts +58 -0
  261. package/dist/esm/mcp/tools/rows-append.js +151 -0
  262. package/dist/esm/mcp/tools/rows-append.js.map +1 -0
  263. package/dist/esm/mcp/tools/rows-csv-append.d.ts +67 -0
  264. package/dist/esm/mcp/tools/rows-csv-append.js +342 -0
  265. package/dist/esm/mcp/tools/rows-csv-append.js.map +1 -0
  266. package/dist/esm/mcp/tools/rows-get.d.ts +56 -0
  267. package/dist/esm/mcp/tools/rows-get.js +116 -0
  268. package/dist/esm/mcp/tools/rows-get.js.map +1 -0
  269. package/dist/esm/mcp/tools/sheet-copy-to.d.ts +68 -0
  270. package/dist/esm/mcp/tools/sheet-copy-to.js +156 -0
  271. package/dist/esm/mcp/tools/sheet-copy-to.js.map +1 -0
  272. package/dist/esm/mcp/tools/sheet-copy.d.ts +80 -0
  273. package/dist/esm/mcp/tools/sheet-copy.js +177 -0
  274. package/dist/esm/mcp/tools/sheet-copy.js.map +1 -0
  275. package/dist/esm/mcp/tools/sheet-create.d.ts +56 -0
  276. package/dist/esm/mcp/tools/sheet-create.js +110 -0
  277. package/dist/esm/mcp/tools/sheet-create.js.map +1 -0
  278. package/dist/esm/mcp/tools/sheet-delete.d.ts +62 -0
  279. package/dist/esm/mcp/tools/sheet-delete.js +125 -0
  280. package/dist/esm/mcp/tools/sheet-delete.js.map +1 -0
  281. package/dist/esm/mcp/tools/sheet-find.d.ts +48 -0
  282. package/dist/esm/mcp/tools/sheet-find.js +90 -0
  283. package/dist/esm/mcp/tools/sheet-find.js.map +1 -0
  284. package/dist/esm/mcp/tools/sheet-rename.d.ts +60 -0
  285. package/dist/esm/mcp/tools/sheet-rename.js +128 -0
  286. package/dist/esm/mcp/tools/sheet-rename.js.map +1 -0
  287. package/dist/esm/mcp/tools/spreadsheet-copy.d.ts +58 -0
  288. package/dist/esm/mcp/tools/spreadsheet-copy.js +117 -0
  289. package/dist/esm/mcp/tools/spreadsheet-copy.js.map +1 -0
  290. package/dist/esm/mcp/tools/spreadsheet-create.d.ts +52 -0
  291. package/dist/esm/mcp/tools/spreadsheet-create.js +97 -0
  292. package/dist/esm/mcp/tools/spreadsheet-create.js.map +1 -0
  293. package/dist/esm/mcp/tools/spreadsheet-find.d.ts +58 -0
  294. package/dist/esm/mcp/tools/spreadsheet-find.js +113 -0
  295. package/dist/esm/mcp/tools/spreadsheet-find.js.map +1 -0
  296. package/dist/esm/mcp/tools/spreadsheet-rename.d.ts +56 -0
  297. package/dist/esm/mcp/tools/spreadsheet-rename.js +112 -0
  298. package/dist/esm/mcp/tools/spreadsheet-rename.js.map +1 -0
  299. package/dist/esm/mcp/tools/validation-set.d.ts +144 -0
  300. package/dist/esm/mcp/tools/validation-set.js +366 -0
  301. package/dist/esm/mcp/tools/validation-set.js.map +1 -0
  302. package/dist/esm/mcp/tools/values-batch-update.d.ts +102 -0
  303. package/dist/esm/mcp/tools/values-batch-update.js +224 -0
  304. package/dist/esm/mcp/tools/values-batch-update.js.map +1 -0
  305. package/dist/esm/mcp/tools/values-clear.d.ts +56 -0
  306. package/dist/esm/mcp/tools/values-clear.js +131 -0
  307. package/dist/esm/mcp/tools/values-clear.js.map +1 -0
  308. package/dist/esm/mcp/tools/values-csv-update.d.ts +75 -0
  309. package/dist/esm/mcp/tools/values-csv-update.js +202 -0
  310. package/dist/esm/mcp/tools/values-csv-update.js.map +1 -0
  311. package/dist/esm/mcp/tools/values-replace.d.ts +68 -0
  312. package/dist/esm/mcp/tools/values-replace.js +171 -0
  313. package/dist/esm/mcp/tools/values-replace.js.map +1 -0
  314. package/dist/esm/mcp/tools/values-search.d.ts +74 -0
  315. package/dist/esm/mcp/tools/values-search.js +229 -0
  316. package/dist/esm/mcp/tools/values-search.js.map +1 -0
  317. package/dist/esm/package.json +1 -0
  318. package/dist/esm/schemas/index.d.ts +14 -0
  319. package/dist/esm/schemas/index.js +35 -0
  320. package/dist/esm/schemas/index.js.map +1 -0
  321. package/dist/esm/setup/config.d.ts +44 -0
  322. package/dist/esm/setup/config.js +151 -0
  323. package/dist/esm/setup/config.js.map +1 -0
  324. package/dist/esm/setup/http.d.ts +8 -0
  325. package/dist/esm/setup/http.js +54 -0
  326. package/dist/esm/setup/http.js.map +1 -0
  327. package/dist/esm/setup/index.d.ts +5 -0
  328. package/dist/esm/setup/index.js +5 -0
  329. package/dist/esm/setup/index.js.map +1 -0
  330. package/dist/esm/setup/oauth-google.d.ts +54 -0
  331. package/dist/esm/setup/oauth-google.js +142 -0
  332. package/dist/esm/setup/oauth-google.js.map +1 -0
  333. package/dist/esm/setup/runtime.d.ts +10 -0
  334. package/dist/esm/setup/runtime.js +84 -0
  335. package/dist/esm/setup/runtime.js.map +1 -0
  336. package/dist/esm/setup/stdio.d.ts +7 -0
  337. package/dist/esm/setup/stdio.js +38 -0
  338. package/dist/esm/setup/stdio.js.map +1 -0
  339. package/dist/esm/spreadsheet/column-utilities.d.ts +1 -0
  340. package/dist/esm/spreadsheet/column-utilities.js +10 -0
  341. package/dist/esm/spreadsheet/column-utilities.js.map +1 -0
  342. package/dist/esm/spreadsheet/csv-streaming.d.ts +19 -0
  343. package/dist/esm/spreadsheet/csv-streaming.js +43 -0
  344. package/dist/esm/spreadsheet/csv-streaming.js.map +1 -0
  345. package/dist/esm/spreadsheet/data-operations.d.ts +115 -0
  346. package/dist/esm/spreadsheet/data-operations.js +712 -0
  347. package/dist/esm/spreadsheet/data-operations.js.map +1 -0
  348. package/dist/esm/spreadsheet/deduplication-utils.d.ts +31 -0
  349. package/dist/esm/spreadsheet/deduplication-utils.js +54 -0
  350. package/dist/esm/spreadsheet/deduplication-utils.js.map +1 -0
  351. package/dist/esm/spreadsheet/range-operations.d.ts +184 -0
  352. package/dist/esm/spreadsheet/range-operations.js +591 -0
  353. package/dist/esm/spreadsheet/range-operations.js.map +1 -0
  354. package/dist/esm/spreadsheet/sheet-operations.d.ts +30 -0
  355. package/dist/esm/spreadsheet/sheet-operations.js +359 -0
  356. package/dist/esm/spreadsheet/sheet-operations.js.map +1 -0
  357. package/dist/esm/spreadsheet/spreadsheet-management.d.ts +21 -0
  358. package/dist/esm/spreadsheet/spreadsheet-management.js +73 -0
  359. package/dist/esm/spreadsheet/spreadsheet-management.js.map +1 -0
  360. package/dist/esm/types.d.ts +53 -0
  361. package/dist/esm/types.js +1 -0
  362. package/dist/esm/types.js.map +1 -0
  363. package/package.json +108 -0
@@ -0,0 +1,500 @@
1
+ /** Import CSV data to Google Sheets with range-based update (no deduplication) */ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return createTool;
9
+ }
10
+ });
11
+ var _oauthgoogle = require("@mcp-z/oauth-google");
12
+ var _types = require("@modelcontextprotocol/sdk/types.js");
13
+ var _csvparse = require("csv-parse");
14
+ var _googleapis = require("googleapis");
15
+ var _zod = require("zod");
16
+ var _index = require("../../schemas/index.js");
17
+ var _csvstreaming = require("../../spreadsheet/csv-streaming.js");
18
+ function _async_iterator(iterable) {
19
+ var method, async, sync, retry = 2;
20
+ for("undefined" != typeof Symbol && (async = Symbol.asyncIterator, sync = Symbol.iterator); retry--;){
21
+ if (async && null != (method = iterable[async])) return method.call(iterable);
22
+ if (sync && null != (method = iterable[sync])) return new AsyncFromSyncIterator(method.call(iterable));
23
+ async = "@@asyncIterator", sync = "@@iterator";
24
+ }
25
+ throw new TypeError("Object is not async iterable");
26
+ }
27
+ function AsyncFromSyncIterator(s) {
28
+ function AsyncFromSyncIteratorContinuation(r) {
29
+ if (Object(r) !== r) return Promise.reject(new TypeError(r + " is not an object."));
30
+ var done = r.done;
31
+ return Promise.resolve(r.value).then(function(value) {
32
+ return {
33
+ value: value,
34
+ done: done
35
+ };
36
+ });
37
+ }
38
+ return AsyncFromSyncIterator = function(s) {
39
+ this.s = s, this.n = s.next;
40
+ }, AsyncFromSyncIterator.prototype = {
41
+ s: null,
42
+ n: null,
43
+ next: function() {
44
+ return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments));
45
+ },
46
+ return: function(value) {
47
+ var ret = this.s.return;
48
+ return void 0 === ret ? Promise.resolve({
49
+ value: value,
50
+ done: !0
51
+ }) : AsyncFromSyncIteratorContinuation(ret.apply(this.s, arguments));
52
+ },
53
+ throw: function(value) {
54
+ var thr = this.s.return;
55
+ return void 0 === thr ? Promise.reject(value) : AsyncFromSyncIteratorContinuation(thr.apply(this.s, arguments));
56
+ }
57
+ }, new AsyncFromSyncIterator(s);
58
+ }
59
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
60
+ try {
61
+ var info = gen[key](arg);
62
+ var value = info.value;
63
+ } catch (error) {
64
+ reject(error);
65
+ return;
66
+ }
67
+ if (info.done) {
68
+ resolve(value);
69
+ } else {
70
+ Promise.resolve(value).then(_next, _throw);
71
+ }
72
+ }
73
+ function _async_to_generator(fn) {
74
+ return function() {
75
+ var self = this, args = arguments;
76
+ return new Promise(function(resolve, reject) {
77
+ var gen = fn.apply(self, args);
78
+ function _next(value) {
79
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
80
+ }
81
+ function _throw(err) {
82
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
83
+ }
84
+ _next(undefined);
85
+ });
86
+ };
87
+ }
88
+ function _instanceof(left, right) {
89
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
90
+ return !!right[Symbol.hasInstance](left);
91
+ } else {
92
+ return left instanceof right;
93
+ }
94
+ }
95
+ function _ts_generator(thisArg, body) {
96
+ var f, y, t, _ = {
97
+ label: 0,
98
+ sent: function() {
99
+ if (t[0] & 1) throw t[1];
100
+ return t[1];
101
+ },
102
+ trys: [],
103
+ ops: []
104
+ }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
105
+ return d(g, "next", {
106
+ value: verb(0)
107
+ }), d(g, "throw", {
108
+ value: verb(1)
109
+ }), d(g, "return", {
110
+ value: verb(2)
111
+ }), typeof Symbol === "function" && d(g, Symbol.iterator, {
112
+ value: function() {
113
+ return this;
114
+ }
115
+ }), g;
116
+ function verb(n) {
117
+ return function(v) {
118
+ return step([
119
+ n,
120
+ v
121
+ ]);
122
+ };
123
+ }
124
+ function step(op) {
125
+ if (f) throw new TypeError("Generator is already executing.");
126
+ while(g && (g = 0, op[0] && (_ = 0)), _)try {
127
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
128
+ if (y = 0, t) op = [
129
+ op[0] & 2,
130
+ t.value
131
+ ];
132
+ switch(op[0]){
133
+ case 0:
134
+ case 1:
135
+ t = op;
136
+ break;
137
+ case 4:
138
+ _.label++;
139
+ return {
140
+ value: op[1],
141
+ done: false
142
+ };
143
+ case 5:
144
+ _.label++;
145
+ y = op[1];
146
+ op = [
147
+ 0
148
+ ];
149
+ continue;
150
+ case 7:
151
+ op = _.ops.pop();
152
+ _.trys.pop();
153
+ continue;
154
+ default:
155
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
156
+ _ = 0;
157
+ continue;
158
+ }
159
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
160
+ _.label = op[1];
161
+ break;
162
+ }
163
+ if (op[0] === 6 && _.label < t[1]) {
164
+ _.label = t[1];
165
+ t = op;
166
+ break;
167
+ }
168
+ if (t && _.label < t[2]) {
169
+ _.label = t[2];
170
+ _.ops.push(op);
171
+ break;
172
+ }
173
+ if (t[2]) _.ops.pop();
174
+ _.trys.pop();
175
+ continue;
176
+ }
177
+ op = body.call(thisArg, _);
178
+ } catch (e) {
179
+ op = [
180
+ 6,
181
+ e
182
+ ];
183
+ y = 0;
184
+ } finally{
185
+ f = t = 0;
186
+ }
187
+ if (op[0] & 5) throw op[1];
188
+ return {
189
+ value: op[0] ? op[1] : void 0,
190
+ done: true
191
+ };
192
+ }
193
+ }
194
+ var AuthRequiredBranchSchema = _oauthgoogle.schemas.AuthRequiredBranchSchema;
195
+ /** Batch size for Sheets API calls (1000 rows × avg 10 cols = 10K cells, well under 40K limit) */ var BATCH_SIZE = 1000;
196
+ var inputSchema = _zod.z.object({
197
+ id: _index.SpreadsheetIdSchema,
198
+ gid: _index.SheetGidSchema,
199
+ sourceUri: _zod.z.string().trim().min(1).describe('CSV file URI (file://, http://, https://)'),
200
+ startRange: _index.A1NotationSchema.default('A1').describe('Top-left cell where CSV data starts (default: A1)'),
201
+ valueInputOption: _zod.z.enum([
202
+ 'RAW',
203
+ 'USER_ENTERED'
204
+ ]).default('USER_ENTERED').describe('How to interpret values (RAW = exact, USER_ENTERED = parse formulas/dates)'),
205
+ sourceHasHeaders: _zod.z.boolean().default(true).describe('First row is headers (metadata) - exclude from data range. Set to false to include first row as data.')
206
+ });
207
+ var successBranchSchema = _zod.z.object({
208
+ type: _zod.z.literal('success'),
209
+ id: _index.SpreadsheetIdOutput,
210
+ gid: _index.SheetGidOutput,
211
+ spreadsheetTitle: _zod.z.string().describe('Spreadsheet title'),
212
+ spreadsheetUrl: _zod.z.string().describe('Spreadsheet URL'),
213
+ sheetTitle: _zod.z.string().describe('Sheet title'),
214
+ sheetUrl: _zod.z.string().describe('Sheet URL'),
215
+ updatedRange: _zod.z.string().describe('A1 notation range that was updated'),
216
+ updatedRows: _zod.z.number().describe('Number of rows updated'),
217
+ updatedColumns: _zod.z.number().describe('Number of columns updated'),
218
+ updatedCells: _zod.z.number().describe('Number of cells updated')
219
+ });
220
+ var outputSchema = _zod.z.discriminatedUnion('type', [
221
+ successBranchSchema,
222
+ AuthRequiredBranchSchema
223
+ ]);
224
+ var config = {
225
+ description: 'Import CSV to sheet range. Overwrites existing data at startRange. Use rows-csv-append for database-style appends with deduplication.',
226
+ inputSchema: inputSchema,
227
+ outputSchema: _zod.z.object({
228
+ result: outputSchema
229
+ })
230
+ };
231
+ function handler(_0, _1) {
232
+ return _async_to_generator(function(param, extra) {
233
+ var id, gid, sourceUri, startRange, _param_valueInputOption, valueInputOption, sourceHasHeaders, logger, _sheet_properties_title, _sheet_properties_sheetId, _ref, _spreadsheetData_spreadsheetUrl, _spreadsheetData_sheets, _startRange_match, _batchUpdateResponse_data_responses_, _batchUpdateResponse_data_responses, _spreadsheetData_properties, sheets, spreadsheetResponse, spreadsheetData, sheet, sheetTitle, sourceHeaders, allRows, totalCols, readStream, parser, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _loop, _iterator, _step, err, dataToWrite, batchRequests, currentRow, currentRowNum, i, _startRange_match1, batchData, batchRange, batchUpdateResponse, totalUpdatedCells, totalUpdatedRows, totalUpdatedColumns, firstUpdatedRange, result, error, message;
234
+ return _ts_generator(this, function(_state) {
235
+ switch(_state.label){
236
+ case 0:
237
+ id = param.id, gid = param.gid, sourceUri = param.sourceUri, startRange = param.startRange, _param_valueInputOption = param.valueInputOption, valueInputOption = _param_valueInputOption === void 0 ? 'USER_ENTERED' : _param_valueInputOption, sourceHasHeaders = param.sourceHasHeaders;
238
+ logger = extra.logger;
239
+ logger.info('sheets.values.csv-update called', {
240
+ id: id,
241
+ gid: gid,
242
+ sourceUri: sourceUri,
243
+ startRange: startRange,
244
+ valueInputOption: valueInputOption,
245
+ sourceHasHeaders: sourceHasHeaders
246
+ });
247
+ _state.label = 1;
248
+ case 1:
249
+ _state.trys.push([
250
+ 1,
251
+ 17,
252
+ ,
253
+ 18
254
+ ]);
255
+ sheets = _googleapis.google.sheets({
256
+ version: 'v4',
257
+ auth: extra.authContext.auth
258
+ });
259
+ return [
260
+ 4,
261
+ sheets.spreadsheets.get({
262
+ spreadsheetId: id,
263
+ fields: 'properties.title,spreadsheetUrl,sheets.properties.sheetId,sheets.properties.title'
264
+ })
265
+ ];
266
+ case 2:
267
+ spreadsheetResponse = _state.sent();
268
+ spreadsheetData = spreadsheetResponse.data;
269
+ // Find the sheet by gid
270
+ sheet = (_spreadsheetData_sheets = spreadsheetData.sheets) === null || _spreadsheetData_sheets === void 0 ? void 0 : _spreadsheetData_sheets.find(function(s) {
271
+ var _s_properties;
272
+ return String((_s_properties = s.properties) === null || _s_properties === void 0 ? void 0 : _s_properties.sheetId) === gid;
273
+ });
274
+ if (!(sheet === null || sheet === void 0 ? void 0 : sheet.properties)) {
275
+ throw new _types.McpError(_types.ErrorCode.InvalidParams, "Sheet not found: ".concat(gid));
276
+ }
277
+ sheetTitle = (_sheet_properties_title = sheet.properties.title) !== null && _sheet_properties_title !== void 0 ? _sheet_properties_title : '';
278
+ // Streaming CSV processing state
279
+ sourceHeaders = [];
280
+ allRows = [];
281
+ totalCols = 0;
282
+ return [
283
+ 4,
284
+ (0, _csvstreaming.getCsvReadStream)(sourceUri)
285
+ ];
286
+ case 3:
287
+ readStream = _state.sent();
288
+ // Create CSV parser with native streaming
289
+ parser = readStream.pipe((0, _csvparse.parse)({
290
+ columns: !!sourceHasHeaders,
291
+ skip_empty_lines: true,
292
+ trim: true,
293
+ cast: true,
294
+ relax_column_count: true
295
+ }));
296
+ _iteratorAbruptCompletion = false, _didIteratorError = false;
297
+ _state.label = 4;
298
+ case 4:
299
+ _state.trys.push([
300
+ 4,
301
+ 9,
302
+ 10,
303
+ 15
304
+ ]);
305
+ _loop = function() {
306
+ var _value = _step.value;
307
+ var record = _value;
308
+ if (sourceHasHeaders) {
309
+ // Extract source headers from first record
310
+ if (sourceHeaders.length === 0) {
311
+ sourceHeaders = Object.keys(record);
312
+ totalCols = sourceHeaders.length;
313
+ logger.info('sheets.values.csv-update source headers', {
314
+ sourceHeaders: sourceHeaders,
315
+ totalCols: totalCols
316
+ });
317
+ }
318
+ // Convert record to row array (exclude source headers from data range)
319
+ // CSV values are strings/numbers/booleans/nulls from the parser
320
+ var row = sourceHeaders.map(function(header) {
321
+ var _record_header;
322
+ return (_record_header = record[header]) !== null && _record_header !== void 0 ? _record_header : null;
323
+ });
324
+ allRows.push(row);
325
+ } else {
326
+ // sourceHasHeaders=false: record is an array, include all rows (including first row)
327
+ var row1 = record;
328
+ allRows.push(row1);
329
+ if (totalCols === 0) {
330
+ totalCols = row1.length;
331
+ }
332
+ }
333
+ };
334
+ _iterator = _async_iterator(parser);
335
+ _state.label = 5;
336
+ case 5:
337
+ return [
338
+ 4,
339
+ _iterator.next()
340
+ ];
341
+ case 6:
342
+ if (!(_iteratorAbruptCompletion = !(_step = _state.sent()).done)) return [
343
+ 3,
344
+ 8
345
+ ];
346
+ _loop();
347
+ _state.label = 7;
348
+ case 7:
349
+ _iteratorAbruptCompletion = false;
350
+ return [
351
+ 3,
352
+ 5
353
+ ];
354
+ case 8:
355
+ return [
356
+ 3,
357
+ 15
358
+ ];
359
+ case 9:
360
+ err = _state.sent();
361
+ _didIteratorError = true;
362
+ _iteratorError = err;
363
+ return [
364
+ 3,
365
+ 15
366
+ ];
367
+ case 10:
368
+ _state.trys.push([
369
+ 10,
370
+ ,
371
+ 13,
372
+ 14
373
+ ]);
374
+ if (!(_iteratorAbruptCompletion && _iterator.return != null)) return [
375
+ 3,
376
+ 12
377
+ ];
378
+ return [
379
+ 4,
380
+ _iterator.return()
381
+ ];
382
+ case 11:
383
+ _state.sent();
384
+ _state.label = 12;
385
+ case 12:
386
+ return [
387
+ 3,
388
+ 14
389
+ ];
390
+ case 13:
391
+ if (_didIteratorError) {
392
+ throw _iteratorError;
393
+ }
394
+ return [
395
+ 7
396
+ ];
397
+ case 14:
398
+ return [
399
+ 7
400
+ ];
401
+ case 15:
402
+ if (allRows.length === 0) {
403
+ throw new _types.McpError(_types.ErrorCode.InvalidParams, 'CSV file is empty');
404
+ }
405
+ // Prepare data for update (all rows)
406
+ dataToWrite = allRows;
407
+ // For large datasets, use batchUpdate to write in chunks
408
+ // This respects the 40K cell limit per request
409
+ batchRequests = [];
410
+ currentRow = ((_startRange_match = startRange.match(/[A-Z]+(\d+)/)) === null || _startRange_match === void 0 ? void 0 : _startRange_match[1]) || '1';
411
+ currentRowNum = Number.parseInt(currentRow, 10);
412
+ for(i = 0; i < dataToWrite.length; i += BATCH_SIZE){
413
+ ;
414
+ batchData = dataToWrite.slice(i, i + BATCH_SIZE);
415
+ batchRange = "".concat(sheetTitle, "!").concat((_startRange_match1 = startRange.match(/[A-Z]+/)) === null || _startRange_match1 === void 0 ? void 0 : _startRange_match1[0]).concat(currentRowNum);
416
+ batchRequests.push({
417
+ range: batchRange,
418
+ values: batchData
419
+ });
420
+ currentRowNum += batchData.length;
421
+ }
422
+ logger.info('sheets.values.csv-update batching', {
423
+ totalBatches: batchRequests.length,
424
+ batchSize: BATCH_SIZE
425
+ });
426
+ return [
427
+ 4,
428
+ sheets.spreadsheets.values.batchUpdate({
429
+ spreadsheetId: id,
430
+ requestBody: {
431
+ valueInputOption: valueInputOption,
432
+ data: batchRequests
433
+ }
434
+ })
435
+ ];
436
+ case 16:
437
+ batchUpdateResponse = _state.sent();
438
+ totalUpdatedCells = batchUpdateResponse.data.totalUpdatedCells || 0;
439
+ totalUpdatedRows = batchUpdateResponse.data.totalUpdatedRows || 0;
440
+ totalUpdatedColumns = batchUpdateResponse.data.totalUpdatedColumns || 0;
441
+ firstUpdatedRange = ((_batchUpdateResponse_data_responses = batchUpdateResponse.data.responses) === null || _batchUpdateResponse_data_responses === void 0 ? void 0 : (_batchUpdateResponse_data_responses_ = _batchUpdateResponse_data_responses[0]) === null || _batchUpdateResponse_data_responses_ === void 0 ? void 0 : _batchUpdateResponse_data_responses_.updatedRange) || "".concat(sheetTitle, "!").concat(startRange);
442
+ logger.info('sheets.values.csv-update completed', {
443
+ id: id,
444
+ gid: sheet.properties.sheetId,
445
+ updatedRange: firstUpdatedRange,
446
+ updatedRows: totalUpdatedRows,
447
+ sourceUri: sourceUri
448
+ });
449
+ result = {
450
+ type: 'success',
451
+ id: id,
452
+ gid: String((_sheet_properties_sheetId = sheet.properties.sheetId) !== null && _sheet_properties_sheetId !== void 0 ? _sheet_properties_sheetId : ''),
453
+ spreadsheetTitle: (_ref = (_spreadsheetData_properties = spreadsheetData.properties) === null || _spreadsheetData_properties === void 0 ? void 0 : _spreadsheetData_properties.title) !== null && _ref !== void 0 ? _ref : '',
454
+ spreadsheetUrl: (_spreadsheetData_spreadsheetUrl = spreadsheetData.spreadsheetUrl) !== null && _spreadsheetData_spreadsheetUrl !== void 0 ? _spreadsheetData_spreadsheetUrl : "https://docs.google.com/spreadsheets/d/".concat(id),
455
+ sheetTitle: sheetTitle,
456
+ sheetUrl: "https://docs.google.com/spreadsheets/d/".concat(id, "/edit#gid=").concat(sheet.properties.sheetId),
457
+ updatedRange: firstUpdatedRange,
458
+ updatedRows: totalUpdatedRows,
459
+ updatedColumns: totalUpdatedColumns,
460
+ updatedCells: totalUpdatedCells
461
+ };
462
+ return [
463
+ 2,
464
+ {
465
+ content: [
466
+ {
467
+ type: 'text',
468
+ text: JSON.stringify(result)
469
+ }
470
+ ],
471
+ structuredContent: {
472
+ result: result
473
+ }
474
+ }
475
+ ];
476
+ case 17:
477
+ error = _state.sent();
478
+ message = _instanceof(error, Error) ? error.message : String(error);
479
+ logger.error('sheets.values.csv-update error', {
480
+ error: message
481
+ });
482
+ throw new _types.McpError(_types.ErrorCode.InternalError, "Error updating values from CSV: ".concat(message), {
483
+ stack: _instanceof(error, Error) ? error.stack : undefined
484
+ });
485
+ case 18:
486
+ return [
487
+ 2
488
+ ];
489
+ }
490
+ });
491
+ }).apply(this, arguments);
492
+ }
493
+ function createTool() {
494
+ return {
495
+ name: 'values-csv-update',
496
+ config: config,
497
+ handler: handler
498
+ };
499
+ }
500
+ /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/Projects/ai/mcp-z/servers/mcp-sheets/src/mcp/tools/values-csv-update.ts"],"sourcesContent":["/** Import CSV data to Google Sheets with range-based update (no deduplication) */\n\nimport type { EnrichedExtra } from '@mcp-z/oauth-google';\nimport { schemas } from '@mcp-z/oauth-google';\n\nconst { AuthRequiredBranchSchema } = schemas;\n\nimport type { ToolModule } from '@mcp-z/server';\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport { ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';\nimport { parse } from 'csv-parse';\nimport { google } from 'googleapis';\nimport { z } from 'zod';\nimport { A1NotationSchema, SheetGidOutput, SheetGidSchema, SpreadsheetIdOutput, SpreadsheetIdSchema } from '../../schemas/index.js';\nimport { getCsvReadStream } from '../../spreadsheet/csv-streaming.js';\n\n/** Batch size for Sheets API calls (1000 rows × avg 10 cols = 10K cells, well under 40K limit) */\nconst BATCH_SIZE = 1000;\n\nconst inputSchema = z.object({\n id: SpreadsheetIdSchema,\n gid: SheetGidSchema,\n sourceUri: z.string().trim().min(1).describe('CSV file URI (file://, http://, https://)'),\n startRange: A1NotationSchema.default('A1').describe('Top-left cell where CSV data starts (default: A1)'),\n valueInputOption: z.enum(['RAW', 'USER_ENTERED']).default('USER_ENTERED').describe('How to interpret values (RAW = exact, USER_ENTERED = parse formulas/dates)'),\n sourceHasHeaders: z.boolean().default(true).describe('First row is headers (metadata) - exclude from data range. Set to false to include first row as data.'),\n});\n\nconst successBranchSchema = z.object({\n type: z.literal('success'),\n id: SpreadsheetIdOutput,\n gid: SheetGidOutput,\n spreadsheetTitle: z.string().describe('Spreadsheet title'),\n spreadsheetUrl: z.string().describe('Spreadsheet URL'),\n sheetTitle: z.string().describe('Sheet title'),\n sheetUrl: z.string().describe('Sheet URL'),\n updatedRange: z.string().describe('A1 notation range that was updated'),\n updatedRows: z.number().describe('Number of rows updated'),\n updatedColumns: z.number().describe('Number of columns updated'),\n updatedCells: z.number().describe('Number of cells updated'),\n});\n\nconst outputSchema = z.discriminatedUnion('type', [successBranchSchema, AuthRequiredBranchSchema]);\n\nconst config = {\n description: 'Import CSV to sheet range. Overwrites existing data at startRange. Use rows-csv-append for database-style appends with deduplication.',\n inputSchema,\n outputSchema: z.object({\n result: outputSchema,\n }),\n} as const;\n\nexport type Input = z.infer<typeof inputSchema>;\nexport type Output = z.infer<typeof outputSchema>;\n\nasync function handler({ id, gid, sourceUri, startRange, valueInputOption = 'USER_ENTERED', sourceHasHeaders }: Input, extra: EnrichedExtra): Promise<CallToolResult> {\n const logger = extra.logger;\n logger.info('sheets.values.csv-update called', { id, gid, sourceUri, startRange, valueInputOption, sourceHasHeaders });\n\n try {\n const sheets = google.sheets({ version: 'v4', auth: extra.authContext.auth });\n\n // Get spreadsheet and sheet info in single API call\n const spreadsheetResponse = await sheets.spreadsheets.get({\n spreadsheetId: id,\n fields: 'properties.title,spreadsheetUrl,sheets.properties.sheetId,sheets.properties.title',\n });\n\n const spreadsheetData = spreadsheetResponse.data;\n\n // Find the sheet by gid\n const sheet = spreadsheetData.sheets?.find((s) => String(s.properties?.sheetId) === gid);\n if (!sheet?.properties) {\n throw new McpError(ErrorCode.InvalidParams, `Sheet not found: ${gid}`);\n }\n\n const sheetTitle = sheet.properties.title ?? '';\n\n // Streaming CSV processing state\n let sourceHeaders: string[] = [];\n const allRows: (string | number | boolean | null)[][] = [];\n let totalCols = 0;\n\n // Get readable stream from CSV URI (no temp files!)\n const readStream = await getCsvReadStream(sourceUri);\n\n // Create CSV parser with native streaming\n const parser = readStream.pipe(\n parse({\n columns: !!sourceHasHeaders, // Parse first row as column names if source has headers\n skip_empty_lines: true,\n trim: true,\n cast: true, // Auto-convert numbers/booleans\n relax_column_count: true,\n })\n );\n\n // Stream and collect all rows (with batching for very large files)\n for await (const record of parser) {\n if (sourceHasHeaders) {\n // Extract source headers from first record\n if (sourceHeaders.length === 0) {\n sourceHeaders = Object.keys(record as Record<string, unknown>);\n totalCols = sourceHeaders.length;\n logger.info('sheets.values.csv-update source headers', { sourceHeaders, totalCols });\n }\n\n // Convert record to row array (exclude source headers from data range)\n // CSV values are strings/numbers/booleans/nulls from the parser\n const row = sourceHeaders.map((header) => (record as Record<string, string | number | boolean | null>)[header] ?? null);\n allRows.push(row);\n } else {\n // sourceHasHeaders=false: record is an array, include all rows (including first row)\n const row = record as (string | number | boolean | null)[];\n allRows.push(row);\n\n if (totalCols === 0) {\n totalCols = row.length;\n }\n }\n }\n\n if (allRows.length === 0) {\n throw new McpError(ErrorCode.InvalidParams, 'CSV file is empty');\n }\n\n // Prepare data for update (all rows)\n const dataToWrite: (string | number | boolean | null)[][] = allRows;\n\n // For large datasets, use batchUpdate to write in chunks\n // This respects the 40K cell limit per request\n const batchRequests = [];\n const currentRow = startRange.match(/[A-Z]+(\\d+)/)?.[1] || '1';\n let currentRowNum = Number.parseInt(currentRow, 10);\n\n for (let i = 0; i < dataToWrite.length; i += BATCH_SIZE) {\n const batchData = dataToWrite.slice(i, i + BATCH_SIZE);\n const batchRange = `${sheetTitle}!${startRange.match(/[A-Z]+/)?.[0]}${currentRowNum}`;\n\n batchRequests.push({\n range: batchRange,\n values: batchData,\n });\n\n currentRowNum += batchData.length;\n }\n\n logger.info('sheets.values.csv-update batching', { totalBatches: batchRequests.length, batchSize: BATCH_SIZE });\n\n // Execute batch update\n const batchUpdateResponse = await sheets.spreadsheets.values.batchUpdate({\n spreadsheetId: id,\n requestBody: {\n valueInputOption,\n data: batchRequests,\n },\n });\n\n const totalUpdatedCells = batchUpdateResponse.data.totalUpdatedCells || 0;\n const totalUpdatedRows = batchUpdateResponse.data.totalUpdatedRows || 0;\n const totalUpdatedColumns = batchUpdateResponse.data.totalUpdatedColumns || 0;\n const firstUpdatedRange = batchUpdateResponse.data.responses?.[0]?.updatedRange || `${sheetTitle}!${startRange}`;\n\n logger.info('sheets.values.csv-update completed', { id, gid: sheet.properties.sheetId, updatedRange: firstUpdatedRange, updatedRows: totalUpdatedRows, sourceUri });\n\n const result: Output = {\n type: 'success' as const,\n id,\n gid: String(sheet.properties.sheetId ?? ''),\n spreadsheetTitle: spreadsheetData.properties?.title ?? '',\n spreadsheetUrl: spreadsheetData.spreadsheetUrl ?? `https://docs.google.com/spreadsheets/d/${id}`,\n sheetTitle,\n sheetUrl: `https://docs.google.com/spreadsheets/d/${id}/edit#gid=${sheet.properties.sheetId}`,\n updatedRange: firstUpdatedRange,\n updatedRows: totalUpdatedRows,\n updatedColumns: totalUpdatedColumns,\n updatedCells: totalUpdatedCells,\n };\n\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result) }],\n structuredContent: { result },\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error('sheets.values.csv-update error', { error: message });\n\n throw new McpError(ErrorCode.InternalError, `Error updating values from CSV: ${message}`, {\n stack: error instanceof Error ? error.stack : undefined,\n });\n }\n}\n\nexport default function createTool() {\n return {\n name: 'values-csv-update',\n config,\n handler,\n } satisfies ToolModule;\n}\n"],"names":["createTool","AuthRequiredBranchSchema","schemas","BATCH_SIZE","inputSchema","z","object","id","SpreadsheetIdSchema","gid","SheetGidSchema","sourceUri","string","trim","min","describe","startRange","A1NotationSchema","default","valueInputOption","enum","sourceHasHeaders","boolean","successBranchSchema","type","literal","SpreadsheetIdOutput","SheetGidOutput","spreadsheetTitle","spreadsheetUrl","sheetTitle","sheetUrl","updatedRange","updatedRows","number","updatedColumns","updatedCells","outputSchema","discriminatedUnion","config","description","result","handler","extra","logger","sheet","spreadsheetData","batchUpdateResponse","sheets","spreadsheetResponse","sourceHeaders","allRows","totalCols","readStream","parser","dataToWrite","batchRequests","currentRow","currentRowNum","i","batchData","batchRange","totalUpdatedCells","totalUpdatedRows","totalUpdatedColumns","firstUpdatedRange","error","message","info","google","version","auth","authContext","spreadsheets","get","spreadsheetId","fields","data","find","s","String","properties","sheetId","McpError","ErrorCode","InvalidParams","title","getCsvReadStream","pipe","parse","columns","skip_empty_lines","cast","relax_column_count","record","length","Object","keys","row","map","header","push","match","Number","parseInt","slice","range","values","totalBatches","batchSize","batchUpdate","requestBody","responses","content","text","JSON","stringify","structuredContent","Error","InternalError","stack","undefined","name"],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ import type { EnrichedExtra } from '@mcp-z/oauth-google';
2
+ import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
3
+ import { z } from 'zod';
4
+ declare const inputSchema: z.ZodObject<{
5
+ id: z.ZodString;
6
+ find: z.ZodString;
7
+ replacement: z.ZodString;
8
+ gid: z.ZodOptional<z.ZodCoercedString<unknown>>;
9
+ range: z.ZodOptional<z.ZodString>;
10
+ matchCase: z.ZodOptional<z.ZodBoolean>;
11
+ matchEntireCell: z.ZodOptional<z.ZodBoolean>;
12
+ searchByRegex: z.ZodOptional<z.ZodBoolean>;
13
+ includeFormulas: z.ZodOptional<z.ZodBoolean>;
14
+ }, z.core.$strip>;
15
+ declare const outputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
16
+ type: z.ZodLiteral<"success">;
17
+ id: z.ZodString;
18
+ spreadsheetUrl: z.ZodString;
19
+ occurrencesChanged: z.ZodNumber;
20
+ valuesChanged: z.ZodNumber;
21
+ formulasChanged: z.ZodNumber;
22
+ rowsChanged: z.ZodNumber;
23
+ sheetsChanged: z.ZodNumber;
24
+ }, z.core.$strip>, z.ZodObject<{
25
+ type: z.ZodLiteral<"auth_required">;
26
+ provider: z.ZodString;
27
+ message: z.ZodString;
28
+ url: z.ZodOptional<z.ZodString>;
29
+ }, z.core.$strip>], "type">;
30
+ export type Input = z.infer<typeof inputSchema>;
31
+ export type Output = z.infer<typeof outputSchema>;
32
+ declare function handler({ id, find, replacement, gid, range, matchCase, matchEntireCell, searchByRegex, includeFormulas }: Input, extra: EnrichedExtra): Promise<CallToolResult>;
33
+ export default function createTool(): {
34
+ name: string;
35
+ config: {
36
+ readonly description: "Find and replace text across a spreadsheet. Searches all sheets by default, or limit with gid/range. Supports regex with capture groups ($1, $2).";
37
+ readonly inputSchema: z.ZodObject<{
38
+ id: z.ZodString;
39
+ find: z.ZodString;
40
+ replacement: z.ZodString;
41
+ gid: z.ZodOptional<z.ZodCoercedString<unknown>>;
42
+ range: z.ZodOptional<z.ZodString>;
43
+ matchCase: z.ZodOptional<z.ZodBoolean>;
44
+ matchEntireCell: z.ZodOptional<z.ZodBoolean>;
45
+ searchByRegex: z.ZodOptional<z.ZodBoolean>;
46
+ includeFormulas: z.ZodOptional<z.ZodBoolean>;
47
+ }, z.core.$strip>;
48
+ readonly outputSchema: z.ZodObject<{
49
+ result: z.ZodDiscriminatedUnion<[z.ZodObject<{
50
+ type: z.ZodLiteral<"success">;
51
+ id: z.ZodString;
52
+ spreadsheetUrl: z.ZodString;
53
+ occurrencesChanged: z.ZodNumber;
54
+ valuesChanged: z.ZodNumber;
55
+ formulasChanged: z.ZodNumber;
56
+ rowsChanged: z.ZodNumber;
57
+ sheetsChanged: z.ZodNumber;
58
+ }, z.core.$strip>, z.ZodObject<{
59
+ type: z.ZodLiteral<"auth_required">;
60
+ provider: z.ZodString;
61
+ message: z.ZodString;
62
+ url: z.ZodOptional<z.ZodString>;
63
+ }, z.core.$strip>], "type">;
64
+ }, z.core.$strip>;
65
+ };
66
+ handler: typeof handler;
67
+ };
68
+ export {};
@@ -0,0 +1,68 @@
1
+ import type { EnrichedExtra } from '@mcp-z/oauth-google';
2
+ import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
3
+ import { z } from 'zod';
4
+ declare const inputSchema: z.ZodObject<{
5
+ id: z.ZodString;
6
+ find: z.ZodString;
7
+ replacement: z.ZodString;
8
+ gid: z.ZodOptional<z.ZodCoercedString<unknown>>;
9
+ range: z.ZodOptional<z.ZodString>;
10
+ matchCase: z.ZodOptional<z.ZodBoolean>;
11
+ matchEntireCell: z.ZodOptional<z.ZodBoolean>;
12
+ searchByRegex: z.ZodOptional<z.ZodBoolean>;
13
+ includeFormulas: z.ZodOptional<z.ZodBoolean>;
14
+ }, z.core.$strip>;
15
+ declare const outputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
16
+ type: z.ZodLiteral<"success">;
17
+ id: z.ZodString;
18
+ spreadsheetUrl: z.ZodString;
19
+ occurrencesChanged: z.ZodNumber;
20
+ valuesChanged: z.ZodNumber;
21
+ formulasChanged: z.ZodNumber;
22
+ rowsChanged: z.ZodNumber;
23
+ sheetsChanged: z.ZodNumber;
24
+ }, z.core.$strip>, z.ZodObject<{
25
+ type: z.ZodLiteral<"auth_required">;
26
+ provider: z.ZodString;
27
+ message: z.ZodString;
28
+ url: z.ZodOptional<z.ZodString>;
29
+ }, z.core.$strip>], "type">;
30
+ export type Input = z.infer<typeof inputSchema>;
31
+ export type Output = z.infer<typeof outputSchema>;
32
+ declare function handler({ id, find, replacement, gid, range, matchCase, matchEntireCell, searchByRegex, includeFormulas }: Input, extra: EnrichedExtra): Promise<CallToolResult>;
33
+ export default function createTool(): {
34
+ name: string;
35
+ config: {
36
+ readonly description: "Find and replace text across a spreadsheet. Searches all sheets by default, or limit with gid/range. Supports regex with capture groups ($1, $2).";
37
+ readonly inputSchema: z.ZodObject<{
38
+ id: z.ZodString;
39
+ find: z.ZodString;
40
+ replacement: z.ZodString;
41
+ gid: z.ZodOptional<z.ZodCoercedString<unknown>>;
42
+ range: z.ZodOptional<z.ZodString>;
43
+ matchCase: z.ZodOptional<z.ZodBoolean>;
44
+ matchEntireCell: z.ZodOptional<z.ZodBoolean>;
45
+ searchByRegex: z.ZodOptional<z.ZodBoolean>;
46
+ includeFormulas: z.ZodOptional<z.ZodBoolean>;
47
+ }, z.core.$strip>;
48
+ readonly outputSchema: z.ZodObject<{
49
+ result: z.ZodDiscriminatedUnion<[z.ZodObject<{
50
+ type: z.ZodLiteral<"success">;
51
+ id: z.ZodString;
52
+ spreadsheetUrl: z.ZodString;
53
+ occurrencesChanged: z.ZodNumber;
54
+ valuesChanged: z.ZodNumber;
55
+ formulasChanged: z.ZodNumber;
56
+ rowsChanged: z.ZodNumber;
57
+ sheetsChanged: z.ZodNumber;
58
+ }, z.core.$strip>, z.ZodObject<{
59
+ type: z.ZodLiteral<"auth_required">;
60
+ provider: z.ZodString;
61
+ message: z.ZodString;
62
+ url: z.ZodOptional<z.ZodString>;
63
+ }, z.core.$strip>], "type">;
64
+ }, z.core.$strip>;
65
+ };
66
+ handler: typeof handler;
67
+ };
68
+ export {};