@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,56 @@
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
+ gid: z.ZodCoercedString<unknown>;
7
+ range: z.ZodString;
8
+ render: z.ZodOptional<z.ZodEnum<{
9
+ FORMATTED_VALUE: "FORMATTED_VALUE";
10
+ UNFORMATTED_VALUE: "UNFORMATTED_VALUE";
11
+ FORMULA: "FORMULA";
12
+ }>>;
13
+ }, z.core.$strip>;
14
+ declare const outputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
15
+ type: z.ZodLiteral<"success">;
16
+ range: z.ZodString;
17
+ rows: z.ZodArray<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodLiteral<number>, z.ZodLiteral<number>, z.ZodBoolean, z.ZodNull]>>>;
18
+ }, z.core.$strip>, z.ZodObject<{
19
+ type: z.ZodLiteral<"auth_required">;
20
+ provider: z.ZodString;
21
+ message: z.ZodString;
22
+ url: z.ZodOptional<z.ZodString>;
23
+ }, z.core.$strip>], "type">;
24
+ export type Input = z.infer<typeof inputSchema>;
25
+ export type Output = z.infer<typeof outputSchema>;
26
+ declare function handler({ id, gid, range, render }: Input, extra: EnrichedExtra): Promise<CallToolResult>;
27
+ export default function createTool(): {
28
+ name: string;
29
+ config: {
30
+ readonly description: "Fetch row data from a specific range in A1 notation. Best used after values-search to get surrounding context. Use a1-notation prompt for syntax reference.";
31
+ readonly inputSchema: z.ZodObject<{
32
+ id: z.ZodString;
33
+ gid: z.ZodCoercedString<unknown>;
34
+ range: z.ZodString;
35
+ render: z.ZodOptional<z.ZodEnum<{
36
+ FORMATTED_VALUE: "FORMATTED_VALUE";
37
+ UNFORMATTED_VALUE: "UNFORMATTED_VALUE";
38
+ FORMULA: "FORMULA";
39
+ }>>;
40
+ }, z.core.$strip>;
41
+ readonly outputSchema: z.ZodObject<{
42
+ result: z.ZodDiscriminatedUnion<[z.ZodObject<{
43
+ type: z.ZodLiteral<"success">;
44
+ range: z.ZodString;
45
+ rows: z.ZodArray<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodLiteral<number>, z.ZodLiteral<number>, z.ZodBoolean, z.ZodNull]>>>;
46
+ }, z.core.$strip>, z.ZodObject<{
47
+ type: z.ZodLiteral<"auth_required">;
48
+ provider: z.ZodString;
49
+ message: z.ZodString;
50
+ url: z.ZodOptional<z.ZodString>;
51
+ }, z.core.$strip>], "type">;
52
+ }, z.core.$strip>;
53
+ };
54
+ handler: typeof handler;
55
+ };
56
+ export {};
@@ -0,0 +1,116 @@
1
+ import { schemas } from '@mcp-z/oauth-google';
2
+ const { AuthRequiredBranchSchema } = schemas;
3
+ import { ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';
4
+ import { google } from 'googleapis';
5
+ import { z } from 'zod';
6
+ import { SheetCellSchema, SheetGidSchema, SpreadsheetIdSchema } from '../../schemas/index.js';
7
+ const inputSchema = z.object({
8
+ id: SpreadsheetIdSchema,
9
+ gid: SheetGidSchema,
10
+ range: z.string().min(1).describe('A1 notation range to fetch (e.g., "B5", "A5:D5", "B:B", "5:5")'),
11
+ render: z.enum([
12
+ 'FORMATTED_VALUE',
13
+ 'UNFORMATTED_VALUE',
14
+ 'FORMULA'
15
+ ]).optional().describe('How to render cell values. FORMATTED_VALUE (default): calculated with formatting. UNFORMATTED_VALUE: calculated without formatting. FORMULA: show formula text instead of result.')
16
+ });
17
+ // Success branch schema - uses rows: for consistency with standard vocabulary
18
+ const successBranchSchema = z.object({
19
+ type: z.literal('success'),
20
+ range: z.string().describe('The A1 notation range that was retrieved'),
21
+ rows: z.array(z.array(SheetCellSchema)).describe('2D array of row data (each inner array is a row)')
22
+ });
23
+ // Output schema with auth_required support
24
+ const outputSchema = z.discriminatedUnion('type', [
25
+ successBranchSchema,
26
+ AuthRequiredBranchSchema
27
+ ]);
28
+ const config = {
29
+ description: 'Fetch row data from a specific range in A1 notation. Best used after values-search to get surrounding context. Use a1-notation prompt for syntax reference.',
30
+ inputSchema,
31
+ outputSchema: z.object({
32
+ result: outputSchema
33
+ })
34
+ };
35
+ async function handler({ id, gid, range, render }, extra) {
36
+ const logger = extra.logger;
37
+ logger.info('sheets.rows.get called', {
38
+ id,
39
+ gid,
40
+ range,
41
+ render
42
+ });
43
+ try {
44
+ var _ref;
45
+ var _spreadsheetResponse_data_sheets, _sheet_properties;
46
+ const sheets = google.sheets({
47
+ version: 'v4',
48
+ auth: extra.authContext.auth
49
+ });
50
+ // Get sheet details using the gid to get sheet title
51
+ const spreadsheetResponse = await sheets.spreadsheets.get({
52
+ spreadsheetId: id,
53
+ fields: 'sheets.properties.sheetId,sheets.properties.title'
54
+ });
55
+ const sheet = (_spreadsheetResponse_data_sheets = spreadsheetResponse.data.sheets) === null || _spreadsheetResponse_data_sheets === void 0 ? void 0 : _spreadsheetResponse_data_sheets.find((s)=>{
56
+ var _s_properties;
57
+ return String((_s_properties = s.properties) === null || _s_properties === void 0 ? void 0 : _s_properties.sheetId) === gid;
58
+ });
59
+ if (!sheet) {
60
+ logger.info('sheets.rows.get sheet not found', {
61
+ id,
62
+ gid,
63
+ range
64
+ });
65
+ throw new McpError(ErrorCode.InvalidParams, `Sheet not found: ${gid}`);
66
+ }
67
+ const sheetTitle = (_ref = (_sheet_properties = sheet.properties) === null || _sheet_properties === void 0 ? void 0 : _sheet_properties.title) !== null && _ref !== void 0 ? _ref : '';
68
+ // Construct full range with sheet title
69
+ const fullRange = `${sheetTitle}!${range}`;
70
+ const response = await sheets.spreadsheets.values.get({
71
+ spreadsheetId: id,
72
+ range: fullRange,
73
+ valueRenderOption: render || 'FORMATTED_VALUE'
74
+ });
75
+ const res = response.data;
76
+ const rows = Array.isArray(res.values) ? res.values : [];
77
+ logger.info('sheets.rows.get success', {
78
+ id,
79
+ gid,
80
+ range,
81
+ rowCount: rows.length
82
+ });
83
+ const result = {
84
+ type: 'success',
85
+ range: res.range || fullRange,
86
+ rows
87
+ };
88
+ return {
89
+ content: [
90
+ {
91
+ type: 'text',
92
+ text: JSON.stringify(result)
93
+ }
94
+ ],
95
+ structuredContent: {
96
+ result
97
+ }
98
+ };
99
+ } catch (error) {
100
+ const message = error instanceof Error ? error.message : String(error);
101
+ logger.error('sheets.rows.get error', {
102
+ error: message
103
+ });
104
+ // Throw McpError for proper MCP error handling
105
+ throw new McpError(ErrorCode.InternalError, `Error getting rows: ${message}`, {
106
+ stack: error instanceof Error ? error.stack : undefined
107
+ });
108
+ }
109
+ }
110
+ export default function createTool() {
111
+ return {
112
+ name: 'rows-get',
113
+ config,
114
+ handler
115
+ };
116
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/Projects/ai/mcp-z/servers/mcp-sheets/src/mcp/tools/rows-get.ts"],"sourcesContent":["import 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 { google } from 'googleapis';\nimport { z } from 'zod';\nimport { SheetCellSchema, SheetGidSchema, SpreadsheetIdSchema } from '../../schemas/index.js';\n\nconst inputSchema = z.object({\n id: SpreadsheetIdSchema,\n gid: SheetGidSchema,\n range: z.string().min(1).describe('A1 notation range to fetch (e.g., \"B5\", \"A5:D5\", \"B:B\", \"5:5\")'),\n render: z.enum(['FORMATTED_VALUE', 'UNFORMATTED_VALUE', 'FORMULA']).optional().describe('How to render cell values. FORMATTED_VALUE (default): calculated with formatting. UNFORMATTED_VALUE: calculated without formatting. FORMULA: show formula text instead of result.'),\n});\n\n// Success branch schema - uses rows: for consistency with standard vocabulary\nconst successBranchSchema = z.object({\n type: z.literal('success'),\n range: z.string().describe('The A1 notation range that was retrieved'),\n rows: z.array(z.array(SheetCellSchema)).describe('2D array of row data (each inner array is a row)'),\n});\n\n// Output schema with auth_required support\nconst outputSchema = z.discriminatedUnion('type', [successBranchSchema, AuthRequiredBranchSchema]);\n\nconst config = {\n description: 'Fetch row data from a specific range in A1 notation. Best used after values-search to get surrounding context. Use a1-notation prompt for syntax reference.',\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, range, render }: Input, extra: EnrichedExtra): Promise<CallToolResult> {\n const logger = extra.logger;\n logger.info('sheets.rows.get called', { id, gid, range, render });\n\n try {\n const sheets = google.sheets({ version: 'v4', auth: extra.authContext.auth });\n\n // Get sheet details using the gid to get sheet title\n const spreadsheetResponse = await sheets.spreadsheets.get({\n spreadsheetId: id,\n fields: 'sheets.properties.sheetId,sheets.properties.title',\n });\n\n const sheet = spreadsheetResponse.data.sheets?.find((s) => String(s.properties?.sheetId) === gid);\n\n if (!sheet) {\n logger.info('sheets.rows.get sheet not found', { id, gid, range });\n throw new McpError(ErrorCode.InvalidParams, `Sheet not found: ${gid}`);\n }\n\n const sheetTitle = sheet.properties?.title ?? '';\n\n // Construct full range with sheet title\n const fullRange = `${sheetTitle}!${range}`;\n\n const response = await sheets.spreadsheets.values.get({\n spreadsheetId: id,\n range: fullRange,\n valueRenderOption: render || 'FORMATTED_VALUE',\n });\n\n const res = response.data;\n const rows = Array.isArray(res.values) ? (res.values as (string | number | boolean | null)[][]) : [];\n\n logger.info('sheets.rows.get success', { id, gid, range, rowCount: rows.length });\n\n const result: Output = {\n type: 'success' as const,\n range: res.range || fullRange,\n rows,\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.rows.get error', { error: message });\n\n // Throw McpError for proper MCP error handling\n throw new McpError(ErrorCode.InternalError, `Error getting rows: ${message}`, {\n stack: error instanceof Error ? error.stack : undefined,\n });\n }\n}\n\nexport default function createTool() {\n return {\n name: 'rows-get',\n config,\n handler,\n } satisfies ToolModule;\n}\n"],"names":["schemas","AuthRequiredBranchSchema","ErrorCode","McpError","google","z","SheetCellSchema","SheetGidSchema","SpreadsheetIdSchema","inputSchema","object","id","gid","range","string","min","describe","render","enum","optional","successBranchSchema","type","literal","rows","array","outputSchema","discriminatedUnion","config","description","result","handler","extra","logger","info","spreadsheetResponse","sheet","sheets","version","auth","authContext","spreadsheets","get","spreadsheetId","fields","data","find","s","String","properties","sheetId","InvalidParams","sheetTitle","title","fullRange","response","values","valueRenderOption","res","Array","isArray","rowCount","length","content","text","JSON","stringify","structuredContent","error","message","Error","InternalError","stack","undefined","createTool","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
+ sourceId: z.ZodString;
6
+ sourceGid: z.ZodCoercedString<unknown>;
7
+ destinationId: z.ZodString;
8
+ newTitle: z.ZodOptional<z.ZodCoercedString<unknown>>;
9
+ }, z.core.$strip>;
10
+ declare const outputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
11
+ type: z.ZodLiteral<"success">;
12
+ operationSummary: z.ZodString;
13
+ itemsProcessed: z.ZodNumber;
14
+ itemsChanged: z.ZodNumber;
15
+ completedAt: z.ZodString;
16
+ sourceId: z.ZodString;
17
+ sourceGid: z.ZodString;
18
+ sourceTitle: z.ZodString;
19
+ destinationId: z.ZodString;
20
+ destinationGid: z.ZodString;
21
+ destinationTitle: z.ZodString;
22
+ sheetUrl: z.ZodString;
23
+ renamed: z.ZodBoolean;
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({ sourceId, sourceGid, destinationId, newTitle }: Input, extra: EnrichedExtra): Promise<CallToolResult>;
33
+ export default function createTool(): {
34
+ name: string;
35
+ config: {
36
+ readonly description: "Copy a sheet to another spreadsheet. Copies all data, formatting, and charts.";
37
+ readonly inputSchema: z.ZodObject<{
38
+ sourceId: z.ZodString;
39
+ sourceGid: z.ZodCoercedString<unknown>;
40
+ destinationId: z.ZodString;
41
+ newTitle: z.ZodOptional<z.ZodCoercedString<unknown>>;
42
+ }, z.core.$strip>;
43
+ readonly outputSchema: z.ZodObject<{
44
+ result: z.ZodDiscriminatedUnion<[z.ZodObject<{
45
+ type: z.ZodLiteral<"success">;
46
+ operationSummary: z.ZodString;
47
+ itemsProcessed: z.ZodNumber;
48
+ itemsChanged: z.ZodNumber;
49
+ completedAt: z.ZodString;
50
+ sourceId: z.ZodString;
51
+ sourceGid: z.ZodString;
52
+ sourceTitle: z.ZodString;
53
+ destinationId: z.ZodString;
54
+ destinationGid: z.ZodString;
55
+ destinationTitle: z.ZodString;
56
+ sheetUrl: z.ZodString;
57
+ renamed: z.ZodBoolean;
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,156 @@
1
+ import { schemas } from '@mcp-z/oauth-google';
2
+ const { AuthRequiredBranchSchema } = schemas;
3
+ import { ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';
4
+ import { google } from 'googleapis';
5
+ import { z } from 'zod';
6
+ import { SheetGidSchema, SpreadsheetIdSchema } from '../../schemas/index.js';
7
+ // Note: Using contextual descriptions for source/destination IDs since they describe different spreadsheets/sheets
8
+ const inputSchema = z.object({
9
+ sourceId: SpreadsheetIdSchema.describe('Source spreadsheet ID'),
10
+ sourceGid: SheetGidSchema.describe('Source sheet grid ID to copy'),
11
+ destinationId: SpreadsheetIdSchema.describe('Destination spreadsheet ID'),
12
+ newTitle: z.coerce.string().trim().min(1).optional().describe('New name for the copied sheet (optional, will use auto-generated name if not provided)')
13
+ });
14
+ // Success branch schema
15
+ const successBranchSchema = z.object({
16
+ type: z.literal('success'),
17
+ operationSummary: z.string().describe('Summary of the copy operation'),
18
+ itemsProcessed: z.number().describe('Total items attempted (always 1)'),
19
+ itemsChanged: z.number().describe('Successfully copied (always 1 on success)'),
20
+ completedAt: z.string().describe('ISO datetime when operation completed'),
21
+ sourceId: z.string().describe('Source spreadsheet ID'),
22
+ sourceGid: z.string().describe('Source sheet ID'),
23
+ sourceTitle: z.string().describe('Source sheet title'),
24
+ destinationId: z.string().describe('Destination spreadsheet ID'),
25
+ destinationGid: z.string().describe('Copied sheet ID in destination'),
26
+ destinationTitle: z.string().describe('Title of the copied sheet in destination'),
27
+ sheetUrl: z.string().describe('URL of the copied sheet'),
28
+ renamed: z.boolean().describe('Whether the sheet was renamed after copying')
29
+ });
30
+ // Output schema with auth_required support
31
+ const outputSchema = z.discriminatedUnion('type', [
32
+ successBranchSchema,
33
+ AuthRequiredBranchSchema
34
+ ]);
35
+ const config = {
36
+ description: 'Copy a sheet to another spreadsheet. Copies all data, formatting, and charts.',
37
+ inputSchema,
38
+ outputSchema: z.object({
39
+ result: outputSchema
40
+ })
41
+ };
42
+ async function handler({ sourceId, sourceGid, destinationId, newTitle }, extra) {
43
+ const logger = extra.logger;
44
+ logger.info('sheets.sheet.copyTo called', {
45
+ sourceId,
46
+ sourceGid,
47
+ destinationId,
48
+ newTitle
49
+ });
50
+ try {
51
+ var _sourceInfo_data_sheets;
52
+ const sheets = google.sheets({
53
+ version: 'v4',
54
+ auth: extra.authContext.auth
55
+ });
56
+ // Get source sheet info
57
+ const sourceInfo = await sheets.spreadsheets.get({
58
+ spreadsheetId: sourceId,
59
+ fields: 'sheets.properties.sheetId,sheets.properties.title'
60
+ });
61
+ const sourceSheet = (_sourceInfo_data_sheets = sourceInfo.data.sheets) === null || _sourceInfo_data_sheets === void 0 ? void 0 : _sourceInfo_data_sheets.find((s)=>{
62
+ var _s_properties;
63
+ return String((_s_properties = s.properties) === null || _s_properties === void 0 ? void 0 : _s_properties.sheetId) === sourceGid;
64
+ });
65
+ if (!(sourceSheet === null || sourceSheet === void 0 ? void 0 : sourceSheet.properties)) {
66
+ throw new McpError(ErrorCode.InvalidParams, `Source sheet with gid "${sourceGid}" not found in spreadsheet`);
67
+ }
68
+ const sourceTitle = sourceSheet.properties.title || '';
69
+ // Copy the sheet to the destination spreadsheet
70
+ const copyResponse = await sheets.spreadsheets.sheets.copyTo({
71
+ spreadsheetId: sourceId,
72
+ sheetId: Number(sourceGid),
73
+ requestBody: {
74
+ destinationSpreadsheetId: destinationId
75
+ }
76
+ });
77
+ const newSheetId = copyResponse.data.sheetId;
78
+ let destinationTitle = copyResponse.data.title || '';
79
+ if (!newSheetId) {
80
+ throw new Error('Failed to retrieve new sheet ID from API response');
81
+ }
82
+ // If newTitle is provided, rename the sheet in the destination
83
+ let renamed = false;
84
+ if (newTitle && newTitle !== destinationTitle) {
85
+ await sheets.spreadsheets.batchUpdate({
86
+ spreadsheetId: destinationId,
87
+ requestBody: {
88
+ requests: [
89
+ {
90
+ updateSheetProperties: {
91
+ properties: {
92
+ sheetId: newSheetId,
93
+ title: newTitle
94
+ },
95
+ fields: 'title'
96
+ }
97
+ }
98
+ ]
99
+ }
100
+ });
101
+ destinationTitle = newTitle;
102
+ renamed = true;
103
+ }
104
+ logger.info('sheets.sheet.copyTo success', {
105
+ sourceId,
106
+ sourceGid,
107
+ destinationId,
108
+ destinationGid: String(newSheetId),
109
+ renamed
110
+ });
111
+ const result = {
112
+ type: 'success',
113
+ operationSummary: `Copied sheet "${sourceTitle}" to destination${renamed ? ` as "${destinationTitle}"` : ''}`,
114
+ itemsProcessed: 1,
115
+ itemsChanged: 1,
116
+ completedAt: new Date().toISOString(),
117
+ sourceId,
118
+ sourceGid,
119
+ sourceTitle,
120
+ destinationId,
121
+ destinationGid: String(newSheetId),
122
+ destinationTitle,
123
+ sheetUrl: `https://docs.google.com/spreadsheets/d/${destinationId}/edit#gid=${newSheetId}`,
124
+ renamed
125
+ };
126
+ return {
127
+ content: [
128
+ {
129
+ type: 'text',
130
+ text: JSON.stringify(result)
131
+ }
132
+ ],
133
+ structuredContent: {
134
+ result
135
+ }
136
+ };
137
+ } catch (error) {
138
+ if (error instanceof McpError) {
139
+ throw error;
140
+ }
141
+ const message = error instanceof Error ? error.message : String(error);
142
+ logger.error('sheets.sheet.copyTo error', {
143
+ error: message
144
+ });
145
+ throw new McpError(ErrorCode.InternalError, `Error copying sheet to another spreadsheet: ${message}`, {
146
+ stack: error instanceof Error ? error.stack : undefined
147
+ });
148
+ }
149
+ }
150
+ export default function createTool() {
151
+ return {
152
+ name: 'sheet-copy-to',
153
+ config,
154
+ handler
155
+ };
156
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/Projects/ai/mcp-z/servers/mcp-sheets/src/mcp/tools/sheet-copy-to.ts"],"sourcesContent":["import 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 { google } from 'googleapis';\nimport { z } from 'zod';\nimport { SheetGidSchema, SpreadsheetIdSchema } from '../../schemas/index.js';\n\n// Note: Using contextual descriptions for source/destination IDs since they describe different spreadsheets/sheets\n\nconst inputSchema = z.object({\n sourceId: SpreadsheetIdSchema.describe('Source spreadsheet ID'),\n sourceGid: SheetGidSchema.describe('Source sheet grid ID to copy'),\n destinationId: SpreadsheetIdSchema.describe('Destination spreadsheet ID'),\n newTitle: z.coerce.string().trim().min(1).optional().describe('New name for the copied sheet (optional, will use auto-generated name if not provided)'),\n});\n\n// Success branch schema\nconst successBranchSchema = z.object({\n type: z.literal('success'),\n operationSummary: z.string().describe('Summary of the copy operation'),\n itemsProcessed: z.number().describe('Total items attempted (always 1)'),\n itemsChanged: z.number().describe('Successfully copied (always 1 on success)'),\n completedAt: z.string().describe('ISO datetime when operation completed'),\n sourceId: z.string().describe('Source spreadsheet ID'),\n sourceGid: z.string().describe('Source sheet ID'),\n sourceTitle: z.string().describe('Source sheet title'),\n destinationId: z.string().describe('Destination spreadsheet ID'),\n destinationGid: z.string().describe('Copied sheet ID in destination'),\n destinationTitle: z.string().describe('Title of the copied sheet in destination'),\n sheetUrl: z.string().describe('URL of the copied sheet'),\n renamed: z.boolean().describe('Whether the sheet was renamed after copying'),\n});\n\n// Output schema with auth_required support\nconst outputSchema = z.discriminatedUnion('type', [successBranchSchema, AuthRequiredBranchSchema]);\n\nconst config = {\n description: 'Copy a sheet to another spreadsheet. Copies all data, formatting, and charts.',\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({ sourceId, sourceGid, destinationId, newTitle }: Input, extra: EnrichedExtra): Promise<CallToolResult> {\n const logger = extra.logger;\n logger.info('sheets.sheet.copyTo called', { sourceId, sourceGid, destinationId, newTitle });\n\n try {\n const sheets = google.sheets({ version: 'v4', auth: extra.authContext.auth });\n\n // Get source sheet info\n const sourceInfo = await sheets.spreadsheets.get({\n spreadsheetId: sourceId,\n fields: 'sheets.properties.sheetId,sheets.properties.title',\n });\n\n const sourceSheet = sourceInfo.data.sheets?.find((s) => String(s.properties?.sheetId) === sourceGid);\n if (!sourceSheet?.properties) {\n throw new McpError(ErrorCode.InvalidParams, `Source sheet with gid \"${sourceGid}\" not found in spreadsheet`);\n }\n\n const sourceTitle = sourceSheet.properties.title || '';\n\n // Copy the sheet to the destination spreadsheet\n const copyResponse = await sheets.spreadsheets.sheets.copyTo({\n spreadsheetId: sourceId,\n sheetId: Number(sourceGid),\n requestBody: {\n destinationSpreadsheetId: destinationId,\n },\n });\n\n const newSheetId = copyResponse.data.sheetId;\n let destinationTitle = copyResponse.data.title || '';\n\n if (!newSheetId) {\n throw new Error('Failed to retrieve new sheet ID from API response');\n }\n\n // If newTitle is provided, rename the sheet in the destination\n let renamed = false;\n if (newTitle && newTitle !== destinationTitle) {\n await sheets.spreadsheets.batchUpdate({\n spreadsheetId: destinationId,\n requestBody: {\n requests: [\n {\n updateSheetProperties: {\n properties: { sheetId: newSheetId, title: newTitle },\n fields: 'title',\n },\n },\n ],\n },\n });\n destinationTitle = newTitle;\n renamed = true;\n }\n\n logger.info('sheets.sheet.copyTo success', {\n sourceId,\n sourceGid,\n destinationId,\n destinationGid: String(newSheetId),\n renamed,\n });\n\n const result: Output = {\n type: 'success' as const,\n operationSummary: `Copied sheet \"${sourceTitle}\" to destination${renamed ? ` as \"${destinationTitle}\"` : ''}`,\n itemsProcessed: 1,\n itemsChanged: 1,\n completedAt: new Date().toISOString(),\n sourceId,\n sourceGid,\n sourceTitle,\n destinationId,\n destinationGid: String(newSheetId),\n destinationTitle,\n sheetUrl: `https://docs.google.com/spreadsheets/d/${destinationId}/edit#gid=${newSheetId}`,\n renamed,\n };\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(result),\n },\n ],\n structuredContent: { result },\n };\n } catch (error) {\n if (error instanceof McpError) {\n throw error;\n }\n const message = error instanceof Error ? error.message : String(error);\n logger.error('sheets.sheet.copyTo error', { error: message });\n\n throw new McpError(ErrorCode.InternalError, `Error copying sheet to another spreadsheet: ${message}`, {\n stack: error instanceof Error ? error.stack : undefined,\n });\n }\n}\n\nexport default function createTool() {\n return {\n name: 'sheet-copy-to',\n config,\n handler,\n } satisfies ToolModule;\n}\n"],"names":["schemas","AuthRequiredBranchSchema","ErrorCode","McpError","google","z","SheetGidSchema","SpreadsheetIdSchema","inputSchema","object","sourceId","describe","sourceGid","destinationId","newTitle","coerce","string","trim","min","optional","successBranchSchema","type","literal","operationSummary","itemsProcessed","number","itemsChanged","completedAt","sourceTitle","destinationGid","destinationTitle","sheetUrl","renamed","boolean","outputSchema","discriminatedUnion","config","description","result","handler","extra","logger","info","sourceInfo","sheets","version","auth","authContext","spreadsheets","get","spreadsheetId","fields","sourceSheet","data","find","s","String","properties","sheetId","InvalidParams","title","copyResponse","copyTo","Number","requestBody","destinationSpreadsheetId","newSheetId","Error","batchUpdate","requests","updateSheetProperties","Date","toISOString","content","text","JSON","stringify","structuredContent","error","message","InternalError","stack","undefined","createTool","name"],"mappings":"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"}
@@ -0,0 +1,80 @@
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
+ gid: z.ZodCoercedString<unknown>;
7
+ copies: z.ZodArray<z.ZodObject<{
8
+ newTitle: z.ZodCoercedString<unknown>;
9
+ insertIndex: z.ZodOptional<z.ZodNumber>;
10
+ }, z.core.$strip>>;
11
+ }, z.core.$strip>;
12
+ declare const outputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
13
+ type: z.ZodLiteral<"success">;
14
+ operationSummary: z.ZodString;
15
+ itemsProcessed: z.ZodNumber;
16
+ itemsChanged: z.ZodNumber;
17
+ completedAt: z.ZodString;
18
+ id: z.ZodString;
19
+ sourceGid: z.ZodString;
20
+ sourceTitle: z.ZodString;
21
+ items: z.ZodArray<z.ZodObject<{
22
+ gid: z.ZodString;
23
+ title: z.ZodString;
24
+ sheetUrl: z.ZodString;
25
+ }, z.core.$strip>>;
26
+ failures: z.ZodOptional<z.ZodArray<z.ZodObject<{
27
+ title: z.ZodString;
28
+ error: z.ZodString;
29
+ }, z.core.$strip>>>;
30
+ }, z.core.$strip>, z.ZodObject<{
31
+ type: z.ZodLiteral<"auth_required">;
32
+ provider: z.ZodString;
33
+ message: z.ZodString;
34
+ url: z.ZodOptional<z.ZodString>;
35
+ }, z.core.$strip>], "type">;
36
+ export type Input = z.infer<typeof inputSchema>;
37
+ export type Output = z.infer<typeof outputSchema>;
38
+ declare function handler({ id, gid, copies }: Input, extra: EnrichedExtra): Promise<CallToolResult>;
39
+ export default function createTool(): {
40
+ name: string;
41
+ config: {
42
+ readonly description: "Copy a sheet/tab within the same spreadsheet. Supports batch copying: create multiple copies from a single source sheet (e.g., create 12 monthly sheets from a template). Copies all data, formatting, charts, and conditional formatting verbatim.";
43
+ readonly inputSchema: z.ZodObject<{
44
+ id: z.ZodString;
45
+ gid: z.ZodCoercedString<unknown>;
46
+ copies: z.ZodArray<z.ZodObject<{
47
+ newTitle: z.ZodCoercedString<unknown>;
48
+ insertIndex: z.ZodOptional<z.ZodNumber>;
49
+ }, z.core.$strip>>;
50
+ }, z.core.$strip>;
51
+ readonly outputSchema: z.ZodObject<{
52
+ result: z.ZodDiscriminatedUnion<[z.ZodObject<{
53
+ type: z.ZodLiteral<"success">;
54
+ operationSummary: z.ZodString;
55
+ itemsProcessed: z.ZodNumber;
56
+ itemsChanged: z.ZodNumber;
57
+ completedAt: z.ZodString;
58
+ id: z.ZodString;
59
+ sourceGid: z.ZodString;
60
+ sourceTitle: z.ZodString;
61
+ items: z.ZodArray<z.ZodObject<{
62
+ gid: z.ZodString;
63
+ title: z.ZodString;
64
+ sheetUrl: z.ZodString;
65
+ }, z.core.$strip>>;
66
+ failures: z.ZodOptional<z.ZodArray<z.ZodObject<{
67
+ title: z.ZodString;
68
+ error: z.ZodString;
69
+ }, z.core.$strip>>>;
70
+ }, z.core.$strip>, z.ZodObject<{
71
+ type: z.ZodLiteral<"auth_required">;
72
+ provider: z.ZodString;
73
+ message: z.ZodString;
74
+ url: z.ZodOptional<z.ZodString>;
75
+ }, z.core.$strip>], "type">;
76
+ }, z.core.$strip>;
77
+ };
78
+ handler: typeof handler;
79
+ };
80
+ export {};