@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,484 @@
1
+ "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 _googleapis = require("googleapis");
14
+ var _zod = require("zod");
15
+ var _index = require("../../schemas/index.js");
16
+ var _rangeoperations = require("../../spreadsheet/range-operations.js");
17
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
18
+ try {
19
+ var info = gen[key](arg);
20
+ var value = info.value;
21
+ } catch (error) {
22
+ reject(error);
23
+ return;
24
+ }
25
+ if (info.done) {
26
+ resolve(value);
27
+ } else {
28
+ Promise.resolve(value).then(_next, _throw);
29
+ }
30
+ }
31
+ function _async_to_generator(fn) {
32
+ return function() {
33
+ var self = this, args = arguments;
34
+ return new Promise(function(resolve, reject) {
35
+ var gen = fn.apply(self, args);
36
+ function _next(value) {
37
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
38
+ }
39
+ function _throw(err) {
40
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
41
+ }
42
+ _next(undefined);
43
+ });
44
+ };
45
+ }
46
+ function _instanceof(left, right) {
47
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
48
+ return !!right[Symbol.hasInstance](left);
49
+ } else {
50
+ return left instanceof right;
51
+ }
52
+ }
53
+ function _ts_generator(thisArg, body) {
54
+ var f, y, t, _ = {
55
+ label: 0,
56
+ sent: function() {
57
+ if (t[0] & 1) throw t[1];
58
+ return t[1];
59
+ },
60
+ trys: [],
61
+ ops: []
62
+ }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
63
+ return d(g, "next", {
64
+ value: verb(0)
65
+ }), d(g, "throw", {
66
+ value: verb(1)
67
+ }), d(g, "return", {
68
+ value: verb(2)
69
+ }), typeof Symbol === "function" && d(g, Symbol.iterator, {
70
+ value: function() {
71
+ return this;
72
+ }
73
+ }), g;
74
+ function verb(n) {
75
+ return function(v) {
76
+ return step([
77
+ n,
78
+ v
79
+ ]);
80
+ };
81
+ }
82
+ function step(op) {
83
+ if (f) throw new TypeError("Generator is already executing.");
84
+ while(g && (g = 0, op[0] && (_ = 0)), _)try {
85
+ 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;
86
+ if (y = 0, t) op = [
87
+ op[0] & 2,
88
+ t.value
89
+ ];
90
+ switch(op[0]){
91
+ case 0:
92
+ case 1:
93
+ t = op;
94
+ break;
95
+ case 4:
96
+ _.label++;
97
+ return {
98
+ value: op[1],
99
+ done: false
100
+ };
101
+ case 5:
102
+ _.label++;
103
+ y = op[1];
104
+ op = [
105
+ 0
106
+ ];
107
+ continue;
108
+ case 7:
109
+ op = _.ops.pop();
110
+ _.trys.pop();
111
+ continue;
112
+ default:
113
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
114
+ _ = 0;
115
+ continue;
116
+ }
117
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
118
+ _.label = op[1];
119
+ break;
120
+ }
121
+ if (op[0] === 6 && _.label < t[1]) {
122
+ _.label = t[1];
123
+ t = op;
124
+ break;
125
+ }
126
+ if (t && _.label < t[2]) {
127
+ _.label = t[2];
128
+ _.ops.push(op);
129
+ break;
130
+ }
131
+ if (t[2]) _.ops.pop();
132
+ _.trys.pop();
133
+ continue;
134
+ }
135
+ op = body.call(thisArg, _);
136
+ } catch (e) {
137
+ op = [
138
+ 6,
139
+ e
140
+ ];
141
+ y = 0;
142
+ } finally{
143
+ f = t = 0;
144
+ }
145
+ if (op[0] & 5) throw op[1];
146
+ return {
147
+ value: op[0] ? op[1] : void 0,
148
+ done: true
149
+ };
150
+ }
151
+ }
152
+ var AuthRequiredBranchSchema = _oauthgoogle.schemas.AuthRequiredBranchSchema;
153
+ // RGB color schema (0-1 range for Google Sheets API)
154
+ var ColorSchema = _zod.z.object({
155
+ red: _zod.z.number().min(0).max(1).describe('Red component (0-1)'),
156
+ green: _zod.z.number().min(0).max(1).describe('Green component (0-1)'),
157
+ blue: _zod.z.number().min(0).max(1).describe('Blue component (0-1)')
158
+ });
159
+ // Number format schema
160
+ var NumberFormatSchema = _zod.z.object({
161
+ type: _zod.z.enum([
162
+ 'TEXT',
163
+ 'NUMBER',
164
+ 'PERCENT',
165
+ 'CURRENCY',
166
+ 'DATE',
167
+ 'TIME'
168
+ ]).describe('Number format type'),
169
+ pattern: _zod.z.string().optional().describe('Custom format pattern (e.g., "$#,##0.00" for currency)')
170
+ });
171
+ // Border schema
172
+ var BorderSchema = _zod.z.object({
173
+ style: _zod.z.enum([
174
+ 'SOLID',
175
+ 'DASHED',
176
+ 'DOTTED'
177
+ ]).describe('Border line style'),
178
+ color: ColorSchema.describe('Border color')
179
+ });
180
+ // Input schema for format requests
181
+ var FormatRequestSchema = _zod.z.object({
182
+ range: _zod.z.string().min(1).describe('A1 notation range to format (e.g., "A1:D10", "B:B", "5:5")'),
183
+ backgroundColor: ColorSchema.optional().describe('Cell background color'),
184
+ textColor: ColorSchema.optional().describe('Text color'),
185
+ bold: _zod.z.boolean().optional().describe('Bold text'),
186
+ fontSize: _zod.z.number().int().min(6).max(36).optional().describe('Font size in points'),
187
+ horizontalAlignment: _zod.z.enum([
188
+ 'LEFT',
189
+ 'CENTER',
190
+ 'RIGHT'
191
+ ]).optional().describe('Horizontal text alignment'),
192
+ numberFormat: NumberFormatSchema.optional().describe('Number format pattern'),
193
+ borders: BorderSchema.optional().describe('Cell borders')
194
+ });
195
+ var inputSchema = _zod.z.object({
196
+ id: _index.SpreadsheetIdSchema,
197
+ gid: _index.SheetGidSchema,
198
+ requests: _zod.z.array(FormatRequestSchema).min(1).max(50).describe('Array of formatting requests. Batch multiple ranges for efficiency.')
199
+ });
200
+ var successBranchSchema = _zod.z.object({
201
+ type: _zod.z.literal('success'),
202
+ id: _index.SpreadsheetIdOutput,
203
+ gid: _index.SheetGidOutput,
204
+ sheetTitle: _zod.z.string().describe('Title of the formatted sheet'),
205
+ sheetUrl: _zod.z.string().describe('URL of the formatted sheet'),
206
+ successCount: _zod.z.number().int().nonnegative().describe('Number of format requests successfully applied'),
207
+ failedRanges: _zod.z.array(_zod.z.object({
208
+ range: _zod.z.string().describe('A1 notation of range that failed'),
209
+ error: _zod.z.string().describe('Why formatting failed for this range')
210
+ })).optional().describe('Only populated if some ranges failed to format')
211
+ });
212
+ var outputSchema = _zod.z.discriminatedUnion('type', [
213
+ successBranchSchema,
214
+ AuthRequiredBranchSchema
215
+ ]);
216
+ var config = {
217
+ description: 'Apply formatting (colors, borders, fonts, alignment, number formats) to cell ranges without modifying data. Supports batch operations for efficiency. Colors use 0-1 RGB format. Best for creating professional, visually organized spreadsheets.',
218
+ inputSchema: inputSchema,
219
+ outputSchema: _zod.z.object({
220
+ result: outputSchema
221
+ })
222
+ };
223
+ function handler(_0, _1) {
224
+ return _async_to_generator(function(param, extra) {
225
+ var id, gid, requests, logger, _sheet_properties_title, _spreadsheetResponse_data_sheets, sheets, spreadsheetResponse, sheet, sheetTitle, sheetId, sheetUrl, batchRequests, failedRanges, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, request, rangeRef, gridRange, cellFormat, fields, numberFormat, message, result, result1, error, message1;
226
+ return _ts_generator(this, function(_state) {
227
+ switch(_state.label){
228
+ case 0:
229
+ id = param.id, gid = param.gid, requests = param.requests;
230
+ logger = extra.logger;
231
+ logger.info('sheets.cells.format called', {
232
+ id: id,
233
+ gid: gid,
234
+ requestCount: requests.length
235
+ });
236
+ _state.label = 1;
237
+ case 1:
238
+ _state.trys.push([
239
+ 1,
240
+ 4,
241
+ ,
242
+ 5
243
+ ]);
244
+ sheets = _googleapis.google.sheets({
245
+ version: 'v4',
246
+ auth: extra.authContext.auth
247
+ });
248
+ return [
249
+ 4,
250
+ sheets.spreadsheets.get({
251
+ spreadsheetId: id,
252
+ fields: 'sheets.properties.sheetId,sheets.properties.title'
253
+ })
254
+ ];
255
+ case 2:
256
+ spreadsheetResponse = _state.sent();
257
+ // Find sheet by gid
258
+ sheet = (_spreadsheetResponse_data_sheets = spreadsheetResponse.data.sheets) === null || _spreadsheetResponse_data_sheets === void 0 ? void 0 : _spreadsheetResponse_data_sheets.find(function(s) {
259
+ var _s_properties;
260
+ return String((_s_properties = s.properties) === null || _s_properties === void 0 ? void 0 : _s_properties.sheetId) === gid;
261
+ });
262
+ if (!(sheet === null || sheet === void 0 ? void 0 : sheet.properties)) {
263
+ logger.info('Sheet not found for format cells', {
264
+ id: id,
265
+ gid: gid,
266
+ requestCount: requests.length
267
+ });
268
+ throw new _types.McpError(_types.ErrorCode.InvalidParams, "Sheet not found: ".concat(gid));
269
+ }
270
+ sheetTitle = (_sheet_properties_title = sheet.properties.title) !== null && _sheet_properties_title !== void 0 ? _sheet_properties_title : gid;
271
+ sheetId = sheet.properties.sheetId;
272
+ sheetUrl = "https://docs.google.com/spreadsheets/d/".concat(id, "/edit#gid=").concat(sheetId);
273
+ // Build batch update requests
274
+ batchRequests = [];
275
+ failedRanges = [];
276
+ _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
277
+ try {
278
+ for(_iterator = requests[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
279
+ request = _step.value;
280
+ try {
281
+ // Parse A1 notation to range reference
282
+ rangeRef = (0, _rangeoperations.parseA1Notation)(request.range);
283
+ // Build grid range from range reference using helper function
284
+ gridRange = (0, _rangeoperations.rangeReferenceToGridRange)(rangeRef, sheetId);
285
+ // Build cell format object
286
+ cellFormat = {};
287
+ fields = [];
288
+ // Background color
289
+ if (request.backgroundColor) {
290
+ cellFormat.backgroundColor = request.backgroundColor;
291
+ fields.push('backgroundColor');
292
+ }
293
+ // Text format
294
+ if (request.textColor || request.bold !== undefined || request.fontSize !== undefined) {
295
+ cellFormat.textFormat = {};
296
+ if (request.textColor) {
297
+ cellFormat.textFormat.foregroundColor = request.textColor;
298
+ fields.push('textFormat.foregroundColor');
299
+ }
300
+ if (request.bold !== undefined) {
301
+ cellFormat.textFormat.bold = request.bold;
302
+ fields.push('textFormat.bold');
303
+ }
304
+ if (request.fontSize !== undefined) {
305
+ cellFormat.textFormat.fontSize = request.fontSize;
306
+ fields.push('textFormat.fontSize');
307
+ }
308
+ }
309
+ // Horizontal alignment
310
+ if (request.horizontalAlignment) {
311
+ cellFormat.horizontalAlignment = request.horizontalAlignment;
312
+ fields.push('horizontalAlignment');
313
+ }
314
+ // Number format
315
+ if (request.numberFormat) {
316
+ numberFormat = {
317
+ type: request.numberFormat.type
318
+ };
319
+ if (request.numberFormat.pattern !== undefined) {
320
+ numberFormat.pattern = request.numberFormat.pattern;
321
+ }
322
+ cellFormat.numberFormat = numberFormat;
323
+ fields.push('numberFormat');
324
+ }
325
+ // Add repeatCell request for this range
326
+ if (fields.length > 0) {
327
+ batchRequests.push({
328
+ repeatCell: {
329
+ range: gridRange,
330
+ cell: {
331
+ userEnteredFormat: cellFormat
332
+ },
333
+ fields: "userEnteredFormat(".concat(fields.join(','), ")")
334
+ }
335
+ });
336
+ }
337
+ // Add border formatting if specified
338
+ if (request.borders) {
339
+ batchRequests.push({
340
+ updateBorders: {
341
+ range: gridRange,
342
+ top: {
343
+ style: request.borders.style,
344
+ color: request.borders.color
345
+ },
346
+ bottom: {
347
+ style: request.borders.style,
348
+ color: request.borders.color
349
+ },
350
+ left: {
351
+ style: request.borders.style,
352
+ color: request.borders.color
353
+ },
354
+ right: {
355
+ style: request.borders.style,
356
+ color: request.borders.color
357
+ }
358
+ }
359
+ });
360
+ }
361
+ } catch (error) {
362
+ message = _instanceof(error, Error) ? error.message : String(error);
363
+ logger.info('Failed to parse range for formatting', {
364
+ range: request.range,
365
+ error: message
366
+ });
367
+ failedRanges.push({
368
+ range: request.range,
369
+ error: "Failed to parse range: ".concat(message)
370
+ });
371
+ }
372
+ }
373
+ } catch (err) {
374
+ _didIteratorError = true;
375
+ _iteratorError = err;
376
+ } finally{
377
+ try {
378
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
379
+ _iterator.return();
380
+ }
381
+ } finally{
382
+ if (_didIteratorError) {
383
+ throw _iteratorError;
384
+ }
385
+ }
386
+ }
387
+ // Early return if all ranges failed
388
+ if (batchRequests.length === 0) {
389
+ result = {
390
+ type: 'success',
391
+ id: id,
392
+ gid: String(sheetId),
393
+ sheetTitle: sheetTitle,
394
+ sheetUrl: sheetUrl,
395
+ successCount: 0,
396
+ failedRanges: failedRanges.length > 0 ? failedRanges : undefined
397
+ };
398
+ return [
399
+ 2,
400
+ {
401
+ content: [
402
+ {
403
+ type: 'text',
404
+ text: JSON.stringify(result)
405
+ }
406
+ ],
407
+ structuredContent: {
408
+ result: result
409
+ }
410
+ }
411
+ ];
412
+ }
413
+ logger.info('sheets.cells.format executing batch request', {
414
+ spreadsheetId: id,
415
+ sheetTitle: sheetTitle,
416
+ batchRequestsCount: batchRequests.length
417
+ });
418
+ // Execute the batch update
419
+ return [
420
+ 4,
421
+ sheets.spreadsheets.batchUpdate({
422
+ spreadsheetId: id,
423
+ requestBody: {
424
+ requests: batchRequests
425
+ }
426
+ })
427
+ ];
428
+ case 3:
429
+ _state.sent();
430
+ logger.info('sheets.cells.format completed successfully', {
431
+ successCount: requests.length - failedRanges.length,
432
+ failedCount: failedRanges.length
433
+ });
434
+ result1 = {
435
+ type: 'success',
436
+ id: id,
437
+ gid: String(sheetId),
438
+ sheetTitle: sheetTitle,
439
+ sheetUrl: sheetUrl,
440
+ successCount: requests.length - failedRanges.length,
441
+ failedRanges: failedRanges.length > 0 ? failedRanges : undefined
442
+ };
443
+ return [
444
+ 2,
445
+ {
446
+ content: [
447
+ {
448
+ type: 'text',
449
+ text: JSON.stringify(result1)
450
+ }
451
+ ],
452
+ structuredContent: {
453
+ result: result1
454
+ }
455
+ }
456
+ ];
457
+ case 4:
458
+ error = _state.sent();
459
+ message1 = _instanceof(error, Error) ? error.message : String(error);
460
+ logger.error('Format cells operation failed', {
461
+ id: id,
462
+ gid: gid,
463
+ requestCount: requests.length,
464
+ error: message1
465
+ });
466
+ throw new _types.McpError(_types.ErrorCode.InternalError, "Error formatting cells: ".concat(message1), {
467
+ stack: _instanceof(error, Error) ? error.stack : undefined
468
+ });
469
+ case 5:
470
+ return [
471
+ 2
472
+ ];
473
+ }
474
+ });
475
+ }).apply(this, arguments);
476
+ }
477
+ function createTool() {
478
+ return {
479
+ name: 'cells-format',
480
+ config: config,
481
+ handler: handler
482
+ };
483
+ }
484
+ /* 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/cells-format.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, type sheets_v4 } from 'googleapis';\nimport { z } from 'zod';\nimport { SheetGidOutput, SheetGidSchema, SpreadsheetIdOutput, SpreadsheetIdSchema } from '../../schemas/index.js';\nimport { parseA1Notation, rangeReferenceToGridRange } from '../../spreadsheet/range-operations.js';\n\n// RGB color schema (0-1 range for Google Sheets API)\nconst ColorSchema = z.object({\n red: z.number().min(0).max(1).describe('Red component (0-1)'),\n green: z.number().min(0).max(1).describe('Green component (0-1)'),\n blue: z.number().min(0).max(1).describe('Blue component (0-1)'),\n});\n\n// Number format schema\nconst NumberFormatSchema = z.object({\n type: z.enum(['TEXT', 'NUMBER', 'PERCENT', 'CURRENCY', 'DATE', 'TIME']).describe('Number format type'),\n pattern: z.string().optional().describe('Custom format pattern (e.g., \"$#,##0.00\" for currency)'),\n});\n\n// Border schema\nconst BorderSchema = z.object({\n style: z.enum(['SOLID', 'DASHED', 'DOTTED']).describe('Border line style'),\n color: ColorSchema.describe('Border color'),\n});\n\n// Input schema for format requests\nconst FormatRequestSchema = z.object({\n range: z.string().min(1).describe('A1 notation range to format (e.g., \"A1:D10\", \"B:B\", \"5:5\")'),\n backgroundColor: ColorSchema.optional().describe('Cell background color'),\n textColor: ColorSchema.optional().describe('Text color'),\n bold: z.boolean().optional().describe('Bold text'),\n fontSize: z.number().int().min(6).max(36).optional().describe('Font size in points'),\n horizontalAlignment: z.enum(['LEFT', 'CENTER', 'RIGHT']).optional().describe('Horizontal text alignment'),\n numberFormat: NumberFormatSchema.optional().describe('Number format pattern'),\n borders: BorderSchema.optional().describe('Cell borders'),\n});\n\nconst inputSchema = z.object({\n id: SpreadsheetIdSchema,\n gid: SheetGidSchema,\n requests: z.array(FormatRequestSchema).min(1).max(50).describe('Array of formatting requests. Batch multiple ranges for efficiency.'),\n});\n\nconst successBranchSchema = z.object({\n type: z.literal('success'),\n id: SpreadsheetIdOutput,\n gid: SheetGidOutput,\n sheetTitle: z.string().describe('Title of the formatted sheet'),\n sheetUrl: z.string().describe('URL of the formatted sheet'),\n successCount: z.number().int().nonnegative().describe('Number of format requests successfully applied'),\n failedRanges: z\n .array(\n z.object({\n range: z.string().describe('A1 notation of range that failed'),\n error: z.string().describe('Why formatting failed for this range'),\n })\n )\n .optional()\n .describe('Only populated if some ranges failed to format'),\n});\n\nconst outputSchema = z.discriminatedUnion('type', [successBranchSchema, AuthRequiredBranchSchema]);\n\nconst config = {\n description: 'Apply formatting (colors, borders, fonts, alignment, number formats) to cell ranges without modifying data. Supports batch operations for efficiency. Colors use 0-1 RGB format. Best for creating professional, visually organized spreadsheets.',\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, requests }: Input, extra: EnrichedExtra): Promise<CallToolResult> {\n const logger = extra.logger;\n logger.info('sheets.cells.format called', {\n id,\n gid,\n requestCount: requests.length,\n });\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: 'sheets.properties.sheetId,sheets.properties.title',\n });\n\n // Find sheet by gid\n const sheet = spreadsheetResponse.data.sheets?.find((s) => String(s.properties?.sheetId) === gid);\n if (!sheet?.properties) {\n logger.info('Sheet not found for format cells', { id, gid, requestCount: requests.length });\n throw new McpError(ErrorCode.InvalidParams, `Sheet not found: ${gid}`);\n }\n\n const sheetTitle = sheet.properties.title ?? gid;\n const sheetId = sheet.properties.sheetId;\n const sheetUrl = `https://docs.google.com/spreadsheets/d/${id}/edit#gid=${sheetId}`;\n\n // Build batch update requests\n const batchRequests: sheets_v4.Schema$Request[] = [];\n const failedRanges: Array<{ range: string; error: string }> = [];\n\n for (const request of requests) {\n try {\n // Parse A1 notation to range reference\n const rangeRef = parseA1Notation(request.range);\n\n // Build grid range from range reference using helper function\n const gridRange = rangeReferenceToGridRange(rangeRef, sheetId);\n\n // Build cell format object\n const cellFormat: {\n backgroundColor?: sheets_v4.Schema$Color;\n textFormat?: sheets_v4.Schema$TextFormat;\n horizontalAlignment?: string;\n numberFormat?: sheets_v4.Schema$NumberFormat;\n } = {};\n const fields: string[] = [];\n\n // Background color\n if (request.backgroundColor) {\n cellFormat.backgroundColor = request.backgroundColor;\n fields.push('backgroundColor');\n }\n\n // Text format\n if (request.textColor || request.bold !== undefined || request.fontSize !== undefined) {\n cellFormat.textFormat = {};\n if (request.textColor) {\n cellFormat.textFormat.foregroundColor = request.textColor;\n fields.push('textFormat.foregroundColor');\n }\n if (request.bold !== undefined) {\n cellFormat.textFormat.bold = request.bold;\n fields.push('textFormat.bold');\n }\n if (request.fontSize !== undefined) {\n cellFormat.textFormat.fontSize = request.fontSize;\n fields.push('textFormat.fontSize');\n }\n }\n\n // Horizontal alignment\n if (request.horizontalAlignment) {\n cellFormat.horizontalAlignment = request.horizontalAlignment;\n fields.push('horizontalAlignment');\n }\n\n // Number format\n if (request.numberFormat) {\n const numberFormat: sheets_v4.Schema$NumberFormat = {\n type: request.numberFormat.type,\n };\n if (request.numberFormat.pattern !== undefined) {\n numberFormat.pattern = request.numberFormat.pattern;\n }\n cellFormat.numberFormat = numberFormat;\n fields.push('numberFormat');\n }\n\n // Add repeatCell request for this range\n if (fields.length > 0) {\n batchRequests.push({\n repeatCell: {\n range: gridRange,\n cell: {\n userEnteredFormat: cellFormat,\n },\n fields: `userEnteredFormat(${fields.join(',')})`,\n },\n });\n }\n\n // Add border formatting if specified\n if (request.borders) {\n batchRequests.push({\n updateBorders: {\n range: gridRange,\n top: {\n style: request.borders.style,\n color: request.borders.color,\n },\n bottom: {\n style: request.borders.style,\n color: request.borders.color,\n },\n left: {\n style: request.borders.style,\n color: request.borders.color,\n },\n right: {\n style: request.borders.style,\n color: request.borders.color,\n },\n },\n });\n }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n logger.info('Failed to parse range for formatting', {\n range: request.range,\n error: message,\n });\n failedRanges.push({\n range: request.range,\n error: `Failed to parse range: ${message}`,\n });\n }\n }\n\n // Early return if all ranges failed\n if (batchRequests.length === 0) {\n const result: Output = {\n type: 'success' as const,\n id,\n gid: String(sheetId),\n sheetTitle,\n sheetUrl,\n successCount: 0,\n failedRanges: failedRanges.length > 0 ? failedRanges : undefined,\n };\n\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result) }],\n structuredContent: { result },\n };\n }\n\n logger.info('sheets.cells.format executing batch request', {\n spreadsheetId: id,\n sheetTitle,\n batchRequestsCount: batchRequests.length,\n });\n\n // Execute the batch update\n await sheets.spreadsheets.batchUpdate({\n spreadsheetId: id,\n requestBody: {\n requests: batchRequests,\n },\n });\n\n logger.info('sheets.cells.format completed successfully', {\n successCount: requests.length - failedRanges.length,\n failedCount: failedRanges.length,\n });\n\n const result: Output = {\n type: 'success' as const,\n id,\n gid: String(sheetId),\n sheetTitle,\n sheetUrl,\n successCount: requests.length - failedRanges.length,\n failedRanges: failedRanges.length > 0 ? failedRanges : undefined,\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('Format cells operation failed', {\n id,\n gid,\n requestCount: requests.length,\n error: message,\n });\n\n throw new McpError(ErrorCode.InternalError, `Error formatting cells: ${message}`, {\n stack: error instanceof Error ? error.stack : undefined,\n });\n }\n}\n\nexport default function createTool() {\n return {\n name: 'cells-format',\n config,\n handler,\n } satisfies ToolModule;\n}\n"],"names":["createTool","AuthRequiredBranchSchema","schemas","ColorSchema","z","object","red","number","min","max","describe","green","blue","NumberFormatSchema","type","enum","pattern","string","optional","BorderSchema","style","color","FormatRequestSchema","range","backgroundColor","textColor","bold","boolean","fontSize","int","horizontalAlignment","numberFormat","borders","inputSchema","id","SpreadsheetIdSchema","gid","SheetGidSchema","requests","array","successBranchSchema","literal","SpreadsheetIdOutput","SheetGidOutput","sheetTitle","sheetUrl","successCount","nonnegative","failedRanges","error","outputSchema","discriminatedUnion","config","description","result","handler","extra","logger","sheet","spreadsheetResponse","sheets","sheetId","batchRequests","request","rangeRef","gridRange","cellFormat","fields","message","info","requestCount","length","google","version","auth","authContext","spreadsheets","get","spreadsheetId","data","find","s","String","properties","McpError","ErrorCode","InvalidParams","title","parseA1Notation","rangeReferenceToGridRange","push","undefined","textFormat","foregroundColor","repeatCell","cell","userEnteredFormat","join","updateBorders","top","bottom","left","right","Error","content","text","JSON","stringify","structuredContent","batchRequestsCount","batchUpdate","requestBody","failedCount","InternalError","stack","name"],"mappings":"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"}
@@ -0,0 +1,94 @@
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
+ chartType: z.ZodEnum<{
8
+ PIE: "PIE";
9
+ BAR: "BAR";
10
+ COLUMN: "COLUMN";
11
+ LINE: "LINE";
12
+ }>;
13
+ dataRange: z.ZodString;
14
+ title: z.ZodOptional<z.ZodString>;
15
+ position: z.ZodObject<{
16
+ anchorCell: z.ZodString;
17
+ offsetX: z.ZodDefault<z.ZodNumber>;
18
+ offsetY: z.ZodDefault<z.ZodNumber>;
19
+ }, z.core.$strip>;
20
+ legend: z.ZodDefault<z.ZodEnum<{
21
+ LEFT: "LEFT";
22
+ RIGHT: "RIGHT";
23
+ BOTTOM: "BOTTOM";
24
+ TOP: "TOP";
25
+ NONE: "NONE";
26
+ }>>;
27
+ is3D: z.ZodDefault<z.ZodBoolean>;
28
+ }, z.core.$strip>;
29
+ declare const outputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
30
+ type: z.ZodLiteral<"success">;
31
+ id: z.ZodString;
32
+ gid: z.ZodString;
33
+ sheetTitle: z.ZodString;
34
+ sheetUrl: z.ZodString;
35
+ chartId: z.ZodNumber;
36
+ anchorCell: z.ZodString;
37
+ }, z.core.$strip>, z.ZodObject<{
38
+ type: z.ZodLiteral<"auth_required">;
39
+ provider: z.ZodString;
40
+ message: z.ZodString;
41
+ url: z.ZodOptional<z.ZodString>;
42
+ }, z.core.$strip>], "type">;
43
+ export type Input = z.infer<typeof inputSchema>;
44
+ export type Output = z.infer<typeof outputSchema>;
45
+ declare function handler({ id, gid, chartType, dataRange, title, position, legend, is3D }: Input, extra: EnrichedExtra): Promise<CallToolResult>;
46
+ export default function createTool(): {
47
+ name: string;
48
+ config: {
49
+ readonly description: "Create charts (pie, bar, column, line) from spreadsheet data ranges. Charts anchor to specific cells with optional pixel offsets. Data range should include headers. PIE charts use 2 columns (labels, values). BAR/COLUMN/LINE charts use first row as headers. Best for visualizing spreadsheet data.";
50
+ readonly inputSchema: z.ZodObject<{
51
+ id: z.ZodString;
52
+ gid: z.ZodCoercedString<unknown>;
53
+ chartType: z.ZodEnum<{
54
+ PIE: "PIE";
55
+ BAR: "BAR";
56
+ COLUMN: "COLUMN";
57
+ LINE: "LINE";
58
+ }>;
59
+ dataRange: z.ZodString;
60
+ title: z.ZodOptional<z.ZodString>;
61
+ position: z.ZodObject<{
62
+ anchorCell: z.ZodString;
63
+ offsetX: z.ZodDefault<z.ZodNumber>;
64
+ offsetY: z.ZodDefault<z.ZodNumber>;
65
+ }, z.core.$strip>;
66
+ legend: z.ZodDefault<z.ZodEnum<{
67
+ LEFT: "LEFT";
68
+ RIGHT: "RIGHT";
69
+ BOTTOM: "BOTTOM";
70
+ TOP: "TOP";
71
+ NONE: "NONE";
72
+ }>>;
73
+ is3D: z.ZodDefault<z.ZodBoolean>;
74
+ }, z.core.$strip>;
75
+ readonly outputSchema: z.ZodObject<{
76
+ result: z.ZodDiscriminatedUnion<[z.ZodObject<{
77
+ type: z.ZodLiteral<"success">;
78
+ id: z.ZodString;
79
+ gid: z.ZodString;
80
+ sheetTitle: z.ZodString;
81
+ sheetUrl: z.ZodString;
82
+ chartId: z.ZodNumber;
83
+ anchorCell: z.ZodString;
84
+ }, z.core.$strip>, z.ZodObject<{
85
+ type: z.ZodLiteral<"auth_required">;
86
+ provider: z.ZodString;
87
+ message: z.ZodString;
88
+ url: z.ZodOptional<z.ZodString>;
89
+ }, z.core.$strip>], "type">;
90
+ }, z.core.$strip>;
91
+ };
92
+ handler: typeof handler;
93
+ };
94
+ export {};