@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,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 {};
@@ -0,0 +1,575 @@
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
+ // Input schema for chart position
154
+ var ChartPositionSchema = _zod.z.object({
155
+ anchorCell: _zod.z.string().min(1).describe('A1 notation cell where chart top-left anchors (e.g., "F2")'),
156
+ offsetX: _zod.z.number().int().default(0).describe('Horizontal pixel offset from anchor'),
157
+ offsetY: _zod.z.number().int().default(0).describe('Vertical pixel offset from anchor')
158
+ });
159
+ var inputSchema = _zod.z.object({
160
+ id: _index.SpreadsheetIdSchema,
161
+ gid: _index.SheetGidSchema,
162
+ chartType: _zod.z.enum([
163
+ 'PIE',
164
+ 'BAR',
165
+ 'COLUMN',
166
+ 'LINE'
167
+ ]).describe('Type of chart to create'),
168
+ dataRange: _zod.z.string().min(1).describe('A1 notation range containing chart data including headers (e.g., "A1:C10")'),
169
+ title: _zod.z.string().optional().describe('Chart title displayed at top'),
170
+ position: ChartPositionSchema,
171
+ legend: _zod.z.enum([
172
+ 'BOTTOM',
173
+ 'RIGHT',
174
+ 'TOP',
175
+ 'LEFT',
176
+ 'NONE'
177
+ ]).default('BOTTOM').describe('Legend position'),
178
+ is3D: _zod.z.boolean().default(false).describe('Render as 3D chart (PIE only)')
179
+ });
180
+ // Success branch schema
181
+ var successBranchSchema = _zod.z.object({
182
+ type: _zod.z.literal('success'),
183
+ id: _index.SpreadsheetIdOutput,
184
+ gid: _index.SheetGidOutput,
185
+ sheetTitle: _zod.z.string().describe('Title of the sheet containing the chart'),
186
+ sheetUrl: _zod.z.string().describe('URL of the sheet containing the chart'),
187
+ chartId: _zod.z.number().int().describe('Unique chart ID for future updates/deletion'),
188
+ anchorCell: _zod.z.string().describe('Where chart was anchored')
189
+ });
190
+ // Output schema with auth_required support
191
+ var outputSchema = _zod.z.discriminatedUnion('type', [
192
+ successBranchSchema,
193
+ AuthRequiredBranchSchema
194
+ ]);
195
+ var config = {
196
+ 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.',
197
+ inputSchema: inputSchema,
198
+ outputSchema: _zod.z.object({
199
+ result: outputSchema
200
+ })
201
+ };
202
+ // Parse A1 notation anchor cell to row/column indices
203
+ function parseAnchorCell(anchorCell) {
204
+ // Simple A1 notation parser for single cells
205
+ var match = anchorCell.match(/^([A-Z]+)(\d+)$/);
206
+ if (!match || !match[1] || !match[2]) {
207
+ throw new Error("Invalid anchor cell format: ".concat(anchorCell));
208
+ }
209
+ var colLetters = match[1];
210
+ var rowNumber = match[2];
211
+ // Convert column letters to index (A=0, B=1, ..., Z=25, AA=26, etc.)
212
+ var columnIndex = 0;
213
+ for(var i = 0; i < colLetters.length; i++){
214
+ columnIndex = columnIndex * 26 + (colLetters.charCodeAt(i) - 65 + 1);
215
+ }
216
+ columnIndex--; // Convert to 0-based
217
+ // Convert row number to index (1-based to 0-based)
218
+ var rowIndex = Number.parseInt(rowNumber, 10) - 1;
219
+ return {
220
+ rowIndex: rowIndex,
221
+ columnIndex: columnIndex
222
+ };
223
+ }
224
+ function handler(_0, _1) {
225
+ return _async_to_generator(function(param, extra) {
226
+ var id, gid, chartType, dataRange, title, position, _param_legend, legend, _param_is3D, is3D, logger, _sheet_properties_title, _dataGridRange_sheetId, _spreadsheetResponse_data_sheets, _replies__addChart_chart, _replies__addChart, _replies_, sheets, spreadsheetResponse, sheet, sheetTitle, sheetId, sheetUrl, anchorRowIndex, anchorColumnIndex, anchorIndices, message, dataGridRange, rangeRef, message1, dataStartRowIndex, dataEndRowIndex, dataStartColumnIndex, dataEndColumnIndex, dataSheetId, chartSpec, legendPositionMap, apiLegendPosition, baseSheetId, domainRange, seriesRange, baseSheetId1, domainRange1, numDataColumns, series, i, seriesRange1, basicChart, embeddedObjectPosition, requestBody, response, replies, chartId, result, e, _error_response, _error_response1, _$error, message2;
227
+ return _ts_generator(this, function(_state) {
228
+ switch(_state.label){
229
+ case 0:
230
+ id = param.id, gid = param.gid, chartType = param.chartType, dataRange = param.dataRange, title = param.title, position = param.position, _param_legend = param.legend, legend = _param_legend === void 0 ? 'BOTTOM' : _param_legend, _param_is3D = param.is3D, is3D = _param_is3D === void 0 ? false : _param_is3D;
231
+ logger = extra.logger;
232
+ logger.info('sheets.chart.create called', {
233
+ id: id,
234
+ gid: gid,
235
+ chartType: chartType,
236
+ dataRange: dataRange,
237
+ title: title,
238
+ position: position,
239
+ legend: legend,
240
+ is3D: is3D
241
+ });
242
+ _state.label = 1;
243
+ case 1:
244
+ _state.trys.push([
245
+ 1,
246
+ 4,
247
+ ,
248
+ 5
249
+ ]);
250
+ sheets = _googleapis.google.sheets({
251
+ version: 'v4',
252
+ auth: extra.authContext.auth
253
+ });
254
+ return [
255
+ 4,
256
+ sheets.spreadsheets.get({
257
+ spreadsheetId: id,
258
+ fields: 'sheets.properties.sheetId,sheets.properties.title'
259
+ })
260
+ ];
261
+ case 2:
262
+ spreadsheetResponse = _state.sent();
263
+ // Find sheet by gid
264
+ sheet = (_spreadsheetResponse_data_sheets = spreadsheetResponse.data.sheets) === null || _spreadsheetResponse_data_sheets === void 0 ? void 0 : _spreadsheetResponse_data_sheets.find(function(s) {
265
+ var _s_properties;
266
+ return String((_s_properties = s.properties) === null || _s_properties === void 0 ? void 0 : _s_properties.sheetId) === gid;
267
+ });
268
+ if (!(sheet === null || sheet === void 0 ? void 0 : sheet.properties)) {
269
+ logger.info('Sheet not found for chart create', {
270
+ id: id,
271
+ gid: gid,
272
+ chartType: chartType
273
+ });
274
+ throw new _types.McpError(_types.ErrorCode.InvalidParams, "Sheet not found: ".concat(gid));
275
+ }
276
+ sheetTitle = (_sheet_properties_title = sheet.properties.title) !== null && _sheet_properties_title !== void 0 ? _sheet_properties_title : gid;
277
+ sheetId = sheet.properties.sheetId;
278
+ sheetUrl = "https://docs.google.com/spreadsheets/d/".concat(id, "/edit#gid=").concat(sheetId);
279
+ // Validate 3D only for PIE charts
280
+ // Note: Google Sheets API only supports 3D for PIE charts, not COLUMN/BAR/LINE
281
+ if (is3D && chartType !== 'PIE') {
282
+ logger.info('3D mode not supported for this chart type', {
283
+ chartType: chartType,
284
+ is3D: is3D
285
+ });
286
+ throw new _types.McpError(_types.ErrorCode.InvalidParams, "3D mode is only supported for PIE charts, not ".concat(chartType));
287
+ }
288
+ try {
289
+ anchorIndices = parseAnchorCell(position.anchorCell);
290
+ anchorRowIndex = anchorIndices.rowIndex;
291
+ anchorColumnIndex = anchorIndices.columnIndex;
292
+ } catch (error) {
293
+ message = _instanceof(error, Error) ? error.message : String(error);
294
+ logger.info('Failed to parse anchor cell', {
295
+ anchorCell: position.anchorCell,
296
+ error: message
297
+ });
298
+ throw new _types.McpError(_types.ErrorCode.InvalidParams, "Failed to parse anchor cell: ".concat(message));
299
+ }
300
+ try {
301
+ rangeRef = (0, _rangeoperations.parseA1Notation)(dataRange);
302
+ dataGridRange = (0, _rangeoperations.rangeReferenceToGridRange)(rangeRef, sheetId);
303
+ // Validate that required properties are defined for chart creation
304
+ if (dataGridRange.startColumnIndex === undefined || dataGridRange.startColumnIndex === null) {
305
+ throw new Error('Data range must include column information');
306
+ }
307
+ if (dataGridRange.endColumnIndex === undefined || dataGridRange.endColumnIndex === null) {
308
+ throw new Error('Data range must include column information');
309
+ }
310
+ if (dataGridRange.startRowIndex === undefined || dataGridRange.startRowIndex === null) {
311
+ throw new Error('Data range must include row information');
312
+ }
313
+ if (dataGridRange.endRowIndex === undefined || dataGridRange.endRowIndex === null) {
314
+ throw new Error('Data range must include row information');
315
+ }
316
+ } catch (error) {
317
+ message1 = _instanceof(error, Error) ? error.message : String(error);
318
+ logger.info('Failed to parse data range', {
319
+ dataRange: dataRange,
320
+ error: message1
321
+ });
322
+ throw new _types.McpError(_types.ErrorCode.InvalidParams, "Failed to parse data range: ".concat(message1));
323
+ }
324
+ // Extract validated properties with defined types
325
+ dataStartRowIndex = dataGridRange.startRowIndex;
326
+ dataEndRowIndex = dataGridRange.endRowIndex;
327
+ dataStartColumnIndex = dataGridRange.startColumnIndex;
328
+ dataEndColumnIndex = dataGridRange.endColumnIndex;
329
+ dataSheetId = (_dataGridRange_sheetId = dataGridRange.sheetId) !== null && _dataGridRange_sheetId !== void 0 ? _dataGridRange_sheetId : sheetId;
330
+ logger.info('Building chart spec', {
331
+ chartType: chartType,
332
+ dataGridRange: dataGridRange,
333
+ sheetId: sheetId
334
+ });
335
+ // Map legend position to API format (add _LEGEND suffix)
336
+ legendPositionMap = {
337
+ BOTTOM: 'BOTTOM_LEGEND',
338
+ RIGHT: 'RIGHT_LEGEND',
339
+ TOP: 'TOP_LEGEND',
340
+ LEFT: 'LEFT_LEGEND',
341
+ NONE: 'NO_LEGEND'
342
+ };
343
+ apiLegendPosition = legendPositionMap[legend] || 'BOTTOM_LEGEND';
344
+ if (chartType === 'PIE') {
345
+ // PIE charts use a separate pieChart property, not basicChart
346
+ baseSheetId = dataSheetId;
347
+ domainRange = {
348
+ sheetId: baseSheetId,
349
+ startRowIndex: dataStartRowIndex,
350
+ endRowIndex: dataEndRowIndex,
351
+ startColumnIndex: dataStartColumnIndex,
352
+ endColumnIndex: dataStartColumnIndex + 1
353
+ };
354
+ seriesRange = {
355
+ sheetId: baseSheetId,
356
+ startRowIndex: dataStartRowIndex,
357
+ endRowIndex: dataEndRowIndex,
358
+ startColumnIndex: dataStartColumnIndex + 1,
359
+ endColumnIndex: dataStartColumnIndex + 2
360
+ };
361
+ logger.info('PIE chart ranges', {
362
+ dataGridRange: dataGridRange,
363
+ domainRange: domainRange,
364
+ seriesRange: seriesRange,
365
+ apiLegendPosition: apiLegendPosition
366
+ });
367
+ chartSpec = {
368
+ pieChart: {
369
+ // Use pieChart for PIE charts
370
+ legendPosition: legend === 'NONE' ? 'NO_LEGEND' : apiLegendPosition,
371
+ domain: {
372
+ // Note: domain/series are direct objects, not arrays
373
+ sourceRange: {
374
+ sources: [
375
+ domainRange
376
+ ]
377
+ }
378
+ },
379
+ series: {
380
+ sourceRange: {
381
+ sources: [
382
+ seriesRange
383
+ ]
384
+ }
385
+ },
386
+ threeDimensional: is3D
387
+ }
388
+ };
389
+ if (title) {
390
+ chartSpec.title = title;
391
+ }
392
+ } else {
393
+ // For BAR, COLUMN, LINE charts: domain is first column, each subsequent column is a series
394
+ baseSheetId1 = dataSheetId;
395
+ domainRange1 = {
396
+ sheetId: baseSheetId1,
397
+ startRowIndex: dataStartRowIndex,
398
+ endRowIndex: dataEndRowIndex,
399
+ startColumnIndex: dataStartColumnIndex,
400
+ endColumnIndex: dataStartColumnIndex + 1
401
+ };
402
+ // Calculate number of data columns (excluding the first domain column)
403
+ numDataColumns = dataEndColumnIndex - dataStartColumnIndex - 1;
404
+ series = [];
405
+ // Create a series for each data column
406
+ for(i = 0; i < numDataColumns; i++){
407
+ seriesRange1 = {
408
+ sheetId: baseSheetId1,
409
+ startRowIndex: dataStartRowIndex,
410
+ endRowIndex: dataEndRowIndex,
411
+ startColumnIndex: dataStartColumnIndex + 1 + i,
412
+ endColumnIndex: dataStartColumnIndex + 2 + i
413
+ };
414
+ series.push({
415
+ series: {
416
+ sourceRange: {
417
+ sources: [
418
+ seriesRange1
419
+ ]
420
+ }
421
+ }
422
+ });
423
+ }
424
+ // If no data columns were found, default to using the entire range as a fallback
425
+ if (series.length === 0) {
426
+ series.push({
427
+ series: {
428
+ sourceRange: {
429
+ sources: [
430
+ dataGridRange
431
+ ]
432
+ }
433
+ }
434
+ });
435
+ }
436
+ basicChart = {
437
+ chartType: chartType,
438
+ headerCount: 1,
439
+ // Note: Google Sheets API does not support threeDimensional for basicChart (BAR/COLUMN/LINE)
440
+ // threeDimensional is only supported for pieChart
441
+ domains: [
442
+ {
443
+ domain: {
444
+ sourceRange: {
445
+ sources: [
446
+ domainRange1
447
+ ]
448
+ }
449
+ }
450
+ }
451
+ ],
452
+ series: series
453
+ };
454
+ if (legend !== 'NONE') {
455
+ basicChart.legendPosition = apiLegendPosition;
456
+ }
457
+ chartSpec = {
458
+ basicChart: basicChart
459
+ };
460
+ if (title) {
461
+ chartSpec.title = title;
462
+ }
463
+ }
464
+ // Build embedded object position
465
+ embeddedObjectPosition = {
466
+ overlayPosition: {
467
+ anchorCell: {
468
+ sheetId: sheetId,
469
+ rowIndex: anchorRowIndex,
470
+ columnIndex: anchorColumnIndex
471
+ },
472
+ offsetXPixels: position.offsetX,
473
+ offsetYPixels: position.offsetY
474
+ }
475
+ };
476
+ requestBody = {
477
+ requests: [
478
+ {
479
+ addChart: {
480
+ chart: {
481
+ spec: chartSpec,
482
+ position: embeddedObjectPosition
483
+ }
484
+ }
485
+ }
486
+ ]
487
+ };
488
+ logger.info('sheets.chart.create executing addChart request', {
489
+ spreadsheetId: id,
490
+ sheetTitle: sheetTitle,
491
+ chartType: chartType,
492
+ dataRange: dataRange,
493
+ anchorCell: position.anchorCell,
494
+ requestBody: JSON.stringify(requestBody)
495
+ });
496
+ return [
497
+ 4,
498
+ sheets.spreadsheets.batchUpdate({
499
+ spreadsheetId: id,
500
+ requestBody: requestBody
501
+ })
502
+ ];
503
+ case 3:
504
+ response = _state.sent();
505
+ // Extract chart ID from response
506
+ replies = response.data.replies || [];
507
+ if (replies.length === 0 || !((_replies_ = replies[0]) === null || _replies_ === void 0 ? void 0 : (_replies__addChart = _replies_.addChart) === null || _replies__addChart === void 0 ? void 0 : (_replies__addChart_chart = _replies__addChart.chart) === null || _replies__addChart_chart === void 0 ? void 0 : _replies__addChart_chart.chartId)) {
508
+ logger.error('Chart creation failed - no chart ID returned', {
509
+ spreadsheetId: id,
510
+ sheetTitle: sheetTitle,
511
+ chartType: chartType
512
+ });
513
+ throw new _types.McpError(_types.ErrorCode.InternalError, 'Chart creation failed: no chart ID returned from Google Sheets API');
514
+ }
515
+ chartId = replies[0].addChart.chart.chartId;
516
+ logger.info('sheets.chart.create completed successfully', {
517
+ chartId: chartId,
518
+ chartType: chartType,
519
+ anchorCell: position.anchorCell
520
+ });
521
+ result = {
522
+ type: 'success',
523
+ id: id,
524
+ gid: String(sheetId),
525
+ sheetTitle: sheetTitle,
526
+ sheetUrl: sheetUrl,
527
+ chartId: chartId,
528
+ anchorCell: position.anchorCell
529
+ };
530
+ return [
531
+ 2,
532
+ {
533
+ content: [
534
+ {
535
+ type: 'text',
536
+ text: JSON.stringify(result)
537
+ }
538
+ ],
539
+ structuredContent: {
540
+ result: result
541
+ }
542
+ }
543
+ ];
544
+ case 4:
545
+ e = _state.sent();
546
+ _$error = e;
547
+ message2 = _$error.message || String(e);
548
+ logger.error('Chart create operation failed', {
549
+ id: id,
550
+ gid: gid,
551
+ chartType: chartType,
552
+ dataRange: dataRange,
553
+ error: message2,
554
+ response: (_error_response = _$error.response) === null || _error_response === void 0 ? void 0 : _error_response.data,
555
+ status: (_error_response1 = _$error.response) === null || _error_response1 === void 0 ? void 0 : _error_response1.status
556
+ });
557
+ throw new _types.McpError(_types.ErrorCode.InternalError, "Error creating chart: ".concat(message2), {
558
+ stack: _instanceof(e, Error) ? e.stack : undefined
559
+ });
560
+ case 5:
561
+ return [
562
+ 2
563
+ ];
564
+ }
565
+ });
566
+ }).apply(this, arguments);
567
+ }
568
+ function createTool() {
569
+ return {
570
+ name: 'chart-create',
571
+ config: config,
572
+ handler: handler
573
+ };
574
+ }
575
+ /* 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; }