@mcp-z/mcp-sheets 1.2.4 → 1.3.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 (244) hide show
  1. package/dist/cjs/index.js.map +1 -1
  2. package/dist/cjs/lib/google-auth.d.cts +9 -0
  3. package/dist/cjs/lib/google-auth.d.ts +9 -0
  4. package/dist/cjs/lib/google-auth.js +16 -0
  5. package/dist/cjs/lib/google-auth.js.map +1 -0
  6. package/dist/cjs/mcp/prompts/a1-notation.d.cts +2 -3
  7. package/dist/cjs/mcp/prompts/a1-notation.d.ts +2 -3
  8. package/dist/cjs/mcp/prompts/a1-notation.js.map +1 -1
  9. package/dist/cjs/mcp/resources/spreadsheet.js +6 -5
  10. package/dist/cjs/mcp/resources/spreadsheet.js.map +1 -1
  11. package/dist/cjs/mcp/tools/cells-format.d.cts +1 -1
  12. package/dist/cjs/mcp/tools/cells-format.d.ts +1 -1
  13. package/dist/cjs/mcp/tools/cells-format.js +7 -6
  14. package/dist/cjs/mcp/tools/cells-format.js.map +1 -1
  15. package/dist/cjs/mcp/tools/chart-create.d.cts +1 -1
  16. package/dist/cjs/mcp/tools/chart-create.d.ts +1 -1
  17. package/dist/cjs/mcp/tools/chart-create.js +11 -10
  18. package/dist/cjs/mcp/tools/chart-create.js.map +1 -1
  19. package/dist/cjs/mcp/tools/columns-get.d.cts +1 -1
  20. package/dist/cjs/mcp/tools/columns-get.d.ts +1 -1
  21. package/dist/cjs/mcp/tools/columns-get.js +7 -6
  22. package/dist/cjs/mcp/tools/columns-get.js.map +1 -1
  23. package/dist/cjs/mcp/tools/columns-update.d.cts +1 -1
  24. package/dist/cjs/mcp/tools/columns-update.d.ts +1 -1
  25. package/dist/cjs/mcp/tools/columns-update.js +8 -7
  26. package/dist/cjs/mcp/tools/columns-update.js.map +1 -1
  27. package/dist/cjs/mcp/tools/csv-get-columns.d.cts +1 -1
  28. package/dist/cjs/mcp/tools/csv-get-columns.d.ts +1 -1
  29. package/dist/cjs/mcp/tools/csv-get-columns.js +2 -2
  30. package/dist/cjs/mcp/tools/csv-get-columns.js.map +1 -1
  31. package/dist/cjs/mcp/tools/dimensions-batch-update.d.cts +1 -1
  32. package/dist/cjs/mcp/tools/dimensions-batch-update.d.ts +1 -1
  33. package/dist/cjs/mcp/tools/dimensions-batch-update.js +12 -11
  34. package/dist/cjs/mcp/tools/dimensions-batch-update.js.map +1 -1
  35. package/dist/cjs/mcp/tools/dimensions-move.d.cts +1 -1
  36. package/dist/cjs/mcp/tools/dimensions-move.d.ts +1 -1
  37. package/dist/cjs/mcp/tools/dimensions-move.js +10 -9
  38. package/dist/cjs/mcp/tools/dimensions-move.js.map +1 -1
  39. package/dist/cjs/mcp/tools/rows-append.d.cts +1 -1
  40. package/dist/cjs/mcp/tools/rows-append.d.ts +1 -1
  41. package/dist/cjs/mcp/tools/rows-append.js +7 -6
  42. package/dist/cjs/mcp/tools/rows-append.js.map +1 -1
  43. package/dist/cjs/mcp/tools/rows-csv-append.d.cts +1 -1
  44. package/dist/cjs/mcp/tools/rows-csv-append.d.ts +1 -1
  45. package/dist/cjs/mcp/tools/rows-csv-append.js +11 -10
  46. package/dist/cjs/mcp/tools/rows-csv-append.js.map +1 -1
  47. package/dist/cjs/mcp/tools/rows-get.d.cts +1 -1
  48. package/dist/cjs/mcp/tools/rows-get.d.ts +1 -1
  49. package/dist/cjs/mcp/tools/rows-get.js +8 -7
  50. package/dist/cjs/mcp/tools/rows-get.js.map +1 -1
  51. package/dist/cjs/mcp/tools/sheet-copy-to.d.cts +1 -1
  52. package/dist/cjs/mcp/tools/sheet-copy-to.d.ts +1 -1
  53. package/dist/cjs/mcp/tools/sheet-copy-to.js +8 -7
  54. package/dist/cjs/mcp/tools/sheet-copy-to.js.map +1 -1
  55. package/dist/cjs/mcp/tools/sheet-copy.d.cts +1 -1
  56. package/dist/cjs/mcp/tools/sheet-copy.d.ts +1 -1
  57. package/dist/cjs/mcp/tools/sheet-copy.js +8 -7
  58. package/dist/cjs/mcp/tools/sheet-copy.js.map +1 -1
  59. package/dist/cjs/mcp/tools/sheet-create.d.cts +1 -1
  60. package/dist/cjs/mcp/tools/sheet-create.d.ts +1 -1
  61. package/dist/cjs/mcp/tools/sheet-create.js +7 -6
  62. package/dist/cjs/mcp/tools/sheet-create.js.map +1 -1
  63. package/dist/cjs/mcp/tools/sheet-delete.d.cts +1 -1
  64. package/dist/cjs/mcp/tools/sheet-delete.d.ts +1 -1
  65. package/dist/cjs/mcp/tools/sheet-delete.js +6 -5
  66. package/dist/cjs/mcp/tools/sheet-delete.js.map +1 -1
  67. package/dist/cjs/mcp/tools/sheet-find.d.cts +1 -1
  68. package/dist/cjs/mcp/tools/sheet-find.d.ts +1 -1
  69. package/dist/cjs/mcp/tools/sheet-find.js +7 -6
  70. package/dist/cjs/mcp/tools/sheet-find.js.map +1 -1
  71. package/dist/cjs/mcp/tools/sheet-rename.d.cts +1 -1
  72. package/dist/cjs/mcp/tools/sheet-rename.d.ts +1 -1
  73. package/dist/cjs/mcp/tools/sheet-rename.js +8 -7
  74. package/dist/cjs/mcp/tools/sheet-rename.js.map +1 -1
  75. package/dist/cjs/mcp/tools/spreadsheet-copy.d.cts +1 -1
  76. package/dist/cjs/mcp/tools/spreadsheet-copy.d.ts +1 -1
  77. package/dist/cjs/mcp/tools/spreadsheet-copy.js +9 -7
  78. package/dist/cjs/mcp/tools/spreadsheet-copy.js.map +1 -1
  79. package/dist/cjs/mcp/tools/spreadsheet-create.d.cts +1 -1
  80. package/dist/cjs/mcp/tools/spreadsheet-create.d.ts +1 -1
  81. package/dist/cjs/mcp/tools/spreadsheet-create.js +7 -6
  82. package/dist/cjs/mcp/tools/spreadsheet-create.js.map +1 -1
  83. package/dist/cjs/mcp/tools/spreadsheet-find.d.cts +1 -1
  84. package/dist/cjs/mcp/tools/spreadsheet-find.d.ts +1 -1
  85. package/dist/cjs/mcp/tools/spreadsheet-find.js +9 -7
  86. package/dist/cjs/mcp/tools/spreadsheet-find.js.map +1 -1
  87. package/dist/cjs/mcp/tools/spreadsheet-rename.d.cts +1 -1
  88. package/dist/cjs/mcp/tools/spreadsheet-rename.d.ts +1 -1
  89. package/dist/cjs/mcp/tools/spreadsheet-rename.js +6 -5
  90. package/dist/cjs/mcp/tools/spreadsheet-rename.js.map +1 -1
  91. package/dist/cjs/mcp/tools/validation-set.d.cts +1 -1
  92. package/dist/cjs/mcp/tools/validation-set.d.ts +1 -1
  93. package/dist/cjs/mcp/tools/validation-set.js +8 -7
  94. package/dist/cjs/mcp/tools/validation-set.js.map +1 -1
  95. package/dist/cjs/mcp/tools/values-batch-update.d.cts +1 -1
  96. package/dist/cjs/mcp/tools/values-batch-update.d.ts +1 -1
  97. package/dist/cjs/mcp/tools/values-batch-update.js +9 -8
  98. package/dist/cjs/mcp/tools/values-batch-update.js.map +1 -1
  99. package/dist/cjs/mcp/tools/values-clear.d.cts +1 -1
  100. package/dist/cjs/mcp/tools/values-clear.d.ts +1 -1
  101. package/dist/cjs/mcp/tools/values-clear.js +7 -6
  102. package/dist/cjs/mcp/tools/values-clear.js.map +1 -1
  103. package/dist/cjs/mcp/tools/values-csv-update.d.cts +1 -1
  104. package/dist/cjs/mcp/tools/values-csv-update.d.ts +1 -1
  105. package/dist/cjs/mcp/tools/values-csv-update.js +8 -7
  106. package/dist/cjs/mcp/tools/values-csv-update.js.map +1 -1
  107. package/dist/cjs/mcp/tools/values-markdown-update.d.cts +1 -1
  108. package/dist/cjs/mcp/tools/values-markdown-update.d.ts +1 -1
  109. package/dist/cjs/mcp/tools/values-markdown-update.js +9 -8
  110. package/dist/cjs/mcp/tools/values-markdown-update.js.map +1 -1
  111. package/dist/cjs/mcp/tools/values-replace.d.cts +1 -1
  112. package/dist/cjs/mcp/tools/values-replace.d.ts +1 -1
  113. package/dist/cjs/mcp/tools/values-replace.js +9 -8
  114. package/dist/cjs/mcp/tools/values-replace.js.map +1 -1
  115. package/dist/cjs/mcp/tools/values-search.d.cts +1 -1
  116. package/dist/cjs/mcp/tools/values-search.d.ts +1 -1
  117. package/dist/cjs/mcp/tools/values-search.js +7 -6
  118. package/dist/cjs/mcp/tools/values-search.js.map +1 -1
  119. package/dist/cjs/setup/http.d.cts +0 -2
  120. package/dist/cjs/setup/http.d.ts +0 -2
  121. package/dist/cjs/setup/http.js +18 -11
  122. package/dist/cjs/setup/http.js.map +1 -1
  123. package/dist/cjs/setup/stdio.d.cts +0 -2
  124. package/dist/cjs/setup/stdio.d.ts +0 -2
  125. package/dist/cjs/setup/stdio.js +18 -11
  126. package/dist/cjs/setup/stdio.js.map +1 -1
  127. package/dist/cjs/spreadsheet/data-operations.d.cts +1 -1
  128. package/dist/cjs/spreadsheet/data-operations.d.ts +1 -1
  129. package/dist/cjs/spreadsheet/data-operations.js.map +1 -1
  130. package/dist/cjs/spreadsheet/markdown-runs.d.cts +1 -31
  131. package/dist/cjs/spreadsheet/markdown-runs.d.ts +1 -31
  132. package/dist/cjs/spreadsheet/markdown-runs.js +31 -31
  133. package/dist/cjs/spreadsheet/markdown-runs.js.map +1 -1
  134. package/dist/cjs/spreadsheet/sheet-operations.d.cts +1 -1
  135. package/dist/cjs/spreadsheet/sheet-operations.d.ts +1 -1
  136. package/dist/cjs/spreadsheet/sheet-operations.js.map +1 -1
  137. package/dist/cjs/spreadsheet/spreadsheet-management.d.cts +2 -1
  138. package/dist/cjs/spreadsheet/spreadsheet-management.d.ts +2 -1
  139. package/dist/cjs/spreadsheet/spreadsheet-management.js.map +1 -1
  140. package/dist/esm/index.js +1 -1
  141. package/dist/esm/index.js.map +1 -1
  142. package/dist/esm/lib/google-auth.d.ts +9 -0
  143. package/dist/esm/lib/google-auth.js +11 -0
  144. package/dist/esm/lib/google-auth.js.map +1 -0
  145. package/dist/esm/mcp/prompts/a1-notation.d.ts +2 -3
  146. package/dist/esm/mcp/prompts/a1-notation.js.map +1 -1
  147. package/dist/esm/mcp/resources/spreadsheet.js +5 -4
  148. package/dist/esm/mcp/resources/spreadsheet.js.map +1 -1
  149. package/dist/esm/mcp/tools/cells-format.d.ts +1 -1
  150. package/dist/esm/mcp/tools/cells-format.js +7 -6
  151. package/dist/esm/mcp/tools/cells-format.js.map +1 -1
  152. package/dist/esm/mcp/tools/chart-create.d.ts +1 -1
  153. package/dist/esm/mcp/tools/chart-create.js +11 -10
  154. package/dist/esm/mcp/tools/chart-create.js.map +1 -1
  155. package/dist/esm/mcp/tools/columns-get.d.ts +1 -1
  156. package/dist/esm/mcp/tools/columns-get.js +8 -7
  157. package/dist/esm/mcp/tools/columns-get.js.map +1 -1
  158. package/dist/esm/mcp/tools/columns-update.d.ts +1 -1
  159. package/dist/esm/mcp/tools/columns-update.js +8 -7
  160. package/dist/esm/mcp/tools/columns-update.js.map +1 -1
  161. package/dist/esm/mcp/tools/csv-get-columns.d.ts +1 -1
  162. package/dist/esm/mcp/tools/csv-get-columns.js +2 -2
  163. package/dist/esm/mcp/tools/csv-get-columns.js.map +1 -1
  164. package/dist/esm/mcp/tools/dimensions-batch-update.d.ts +1 -1
  165. package/dist/esm/mcp/tools/dimensions-batch-update.js +12 -11
  166. package/dist/esm/mcp/tools/dimensions-batch-update.js.map +1 -1
  167. package/dist/esm/mcp/tools/dimensions-move.d.ts +1 -1
  168. package/dist/esm/mcp/tools/dimensions-move.js +10 -9
  169. package/dist/esm/mcp/tools/dimensions-move.js.map +1 -1
  170. package/dist/esm/mcp/tools/rows-append.d.ts +1 -1
  171. package/dist/esm/mcp/tools/rows-append.js +7 -6
  172. package/dist/esm/mcp/tools/rows-append.js.map +1 -1
  173. package/dist/esm/mcp/tools/rows-csv-append.d.ts +1 -1
  174. package/dist/esm/mcp/tools/rows-csv-append.js +12 -11
  175. package/dist/esm/mcp/tools/rows-csv-append.js.map +1 -1
  176. package/dist/esm/mcp/tools/rows-get.d.ts +1 -1
  177. package/dist/esm/mcp/tools/rows-get.js +8 -7
  178. package/dist/esm/mcp/tools/rows-get.js.map +1 -1
  179. package/dist/esm/mcp/tools/sheet-copy-to.d.ts +1 -1
  180. package/dist/esm/mcp/tools/sheet-copy-to.js +8 -7
  181. package/dist/esm/mcp/tools/sheet-copy-to.js.map +1 -1
  182. package/dist/esm/mcp/tools/sheet-copy.d.ts +1 -1
  183. package/dist/esm/mcp/tools/sheet-copy.js +8 -7
  184. package/dist/esm/mcp/tools/sheet-copy.js.map +1 -1
  185. package/dist/esm/mcp/tools/sheet-create.d.ts +1 -1
  186. package/dist/esm/mcp/tools/sheet-create.js +7 -6
  187. package/dist/esm/mcp/tools/sheet-create.js.map +1 -1
  188. package/dist/esm/mcp/tools/sheet-delete.d.ts +1 -1
  189. package/dist/esm/mcp/tools/sheet-delete.js +6 -5
  190. package/dist/esm/mcp/tools/sheet-delete.js.map +1 -1
  191. package/dist/esm/mcp/tools/sheet-find.d.ts +1 -1
  192. package/dist/esm/mcp/tools/sheet-find.js +7 -6
  193. package/dist/esm/mcp/tools/sheet-find.js.map +1 -1
  194. package/dist/esm/mcp/tools/sheet-rename.d.ts +1 -1
  195. package/dist/esm/mcp/tools/sheet-rename.js +8 -7
  196. package/dist/esm/mcp/tools/sheet-rename.js.map +1 -1
  197. package/dist/esm/mcp/tools/spreadsheet-copy.d.ts +1 -1
  198. package/dist/esm/mcp/tools/spreadsheet-copy.js +9 -7
  199. package/dist/esm/mcp/tools/spreadsheet-copy.js.map +1 -1
  200. package/dist/esm/mcp/tools/spreadsheet-create.d.ts +1 -1
  201. package/dist/esm/mcp/tools/spreadsheet-create.js +7 -6
  202. package/dist/esm/mcp/tools/spreadsheet-create.js.map +1 -1
  203. package/dist/esm/mcp/tools/spreadsheet-find.d.ts +1 -1
  204. package/dist/esm/mcp/tools/spreadsheet-find.js +9 -7
  205. package/dist/esm/mcp/tools/spreadsheet-find.js.map +1 -1
  206. package/dist/esm/mcp/tools/spreadsheet-rename.d.ts +1 -1
  207. package/dist/esm/mcp/tools/spreadsheet-rename.js +6 -5
  208. package/dist/esm/mcp/tools/spreadsheet-rename.js.map +1 -1
  209. package/dist/esm/mcp/tools/validation-set.d.ts +1 -1
  210. package/dist/esm/mcp/tools/validation-set.js +8 -7
  211. package/dist/esm/mcp/tools/validation-set.js.map +1 -1
  212. package/dist/esm/mcp/tools/values-batch-update.d.ts +1 -1
  213. package/dist/esm/mcp/tools/values-batch-update.js +9 -8
  214. package/dist/esm/mcp/tools/values-batch-update.js.map +1 -1
  215. package/dist/esm/mcp/tools/values-clear.d.ts +1 -1
  216. package/dist/esm/mcp/tools/values-clear.js +7 -6
  217. package/dist/esm/mcp/tools/values-clear.js.map +1 -1
  218. package/dist/esm/mcp/tools/values-csv-update.d.ts +1 -1
  219. package/dist/esm/mcp/tools/values-csv-update.js +9 -8
  220. package/dist/esm/mcp/tools/values-csv-update.js.map +1 -1
  221. package/dist/esm/mcp/tools/values-markdown-update.d.ts +1 -1
  222. package/dist/esm/mcp/tools/values-markdown-update.js +9 -8
  223. package/dist/esm/mcp/tools/values-markdown-update.js.map +1 -1
  224. package/dist/esm/mcp/tools/values-replace.d.ts +1 -1
  225. package/dist/esm/mcp/tools/values-replace.js +9 -8
  226. package/dist/esm/mcp/tools/values-replace.js.map +1 -1
  227. package/dist/esm/mcp/tools/values-search.d.ts +1 -1
  228. package/dist/esm/mcp/tools/values-search.js +7 -6
  229. package/dist/esm/mcp/tools/values-search.js.map +1 -1
  230. package/dist/esm/setup/http.d.ts +0 -2
  231. package/dist/esm/setup/http.js +18 -11
  232. package/dist/esm/setup/http.js.map +1 -1
  233. package/dist/esm/setup/stdio.d.ts +0 -2
  234. package/dist/esm/setup/stdio.js +18 -11
  235. package/dist/esm/setup/stdio.js.map +1 -1
  236. package/dist/esm/spreadsheet/data-operations.d.ts +1 -1
  237. package/dist/esm/spreadsheet/data-operations.js.map +1 -1
  238. package/dist/esm/spreadsheet/markdown-runs.d.ts +1 -31
  239. package/dist/esm/spreadsheet/markdown-runs.js.map +1 -1
  240. package/dist/esm/spreadsheet/sheet-operations.d.ts +1 -1
  241. package/dist/esm/spreadsheet/sheet-operations.js.map +1 -1
  242. package/dist/esm/spreadsheet/spreadsheet-management.d.ts +2 -1
  243. package/dist/esm/spreadsheet/spreadsheet-management.js.map +1 -1
  244. package/package.json +9 -10
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/mcp-z/mcp-sheets/src/spreadsheet/spreadsheet-management.ts"],"sourcesContent":["import type { drive_v3, sheets_v4 } from 'googleapis';\nimport type { GoogleApiError } from '../types.ts';\n\nexport const SPREADSHEET_URL_RE = /https:\\/\\/docs.google.com\\/spreadsheets\\/d\\/([a-zA-Z0-9-_]{10,})/;\nexport const SPREADSHEET_ID_RE = /^[a-zA-Z0-9-_]{30,}$/;\n\nexport async function findById(sheets: sheets_v4.Sheets, drive: drive_v3.Drive, id: string) {\n const ssResp = await sheets.spreadsheets.get({ spreadsheetId: id }).catch((e: unknown) => {\n const error = e as GoogleApiError;\n const status = error?.response?.status || error?.status || error?.code;\n if (Number(status) === 404) return null;\n throw e;\n });\n const dmResp = await drive.files.get({ fileId: id, fields: 'modifiedTime,webViewLink,name' }).catch((e: unknown) => {\n const error = e as GoogleApiError;\n const status = error?.response?.status || error?.status || error?.code;\n if (Number(status) === 404) return null;\n throw e;\n });\n const dm = dmResp?.data;\n if (!ssResp) return null;\n const ss = ssResp.data;\n return {\n id: id,\n spreadsheetTitle: ss?.properties?.title ?? dm?.name,\n url: ss?.spreadsheetUrl ?? dm?.webViewLink,\n modifiedTime: dm?.modifiedTime,\n };\n}\n\nexport async function findByName(drive: drive_v3.Drive, name: string) {\n const escaped = String(name).replace(/['\"\\\\]/g, (m) => `\\\\${m}`);\n const q = `mimeType='application/vnd.google-apps.spreadsheet' and name contains '${escaped}' and trashed = false`;\n const resp = await drive.files.list({ q, pageSize: 50, fields: 'files(id,name,webViewLink,modifiedTime)' });\n const files = resp.data?.files || [];\n return files.map((f) => ({ id: String(f.id), spreadsheetTitle: String(f.name), url: String(f.webViewLink), modifiedTime: f.modifiedTime }));\n}\n\nexport async function findSpreadsheetsByRef(sheets: sheets_v4.Sheets, drive: drive_v3.Drive, ref: string) {\n const trimmedRef = ref?.trim();\n if (!trimmedRef) return [];\n\n // Strategy 1: Try URL extraction (most specific)\n const urlMatch = trimmedRef.match(SPREADSHEET_URL_RE);\n if (urlMatch && typeof urlMatch[1] === 'string' && urlMatch[1].length > 0) {\n const id = urlMatch[1];\n const r = await findById(sheets, drive, id);\n return r ? [r] : [];\n }\n\n // Strategy 2: Try direct ID match (if it looks like a spreadsheet ID)\n if (SPREADSHEET_ID_RE.test(trimmedRef)) {\n const r = await findById(sheets, drive, trimmedRef);\n return r ? [r] : [];\n }\n\n // Strategy 3: Search by name\n return await findByName(drive, trimmedRef);\n}\n"],"names":["SPREADSHEET_URL_RE","SPREADSHEET_ID_RE","findById","sheets","drive","id","ss","ssResp","spreadsheets","get","spreadsheetId","catch","e","error","status","response","code","Number","dmResp","files","fileId","fields","dm","data","spreadsheetTitle","properties","title","name","url","spreadsheetUrl","webViewLink","modifiedTime","findByName","resp","escaped","String","replace","m","q","list","pageSize","map","f","findSpreadsheetsByRef","ref","trimmedRef","trim","urlMatch","match","length","r","test"],"mappings":"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"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/mcp-z/mcp-sheets/src/spreadsheet/spreadsheet-management.ts"],"sourcesContent":["import type { drive_v3 } from '@googleapis/drive';\nimport type { sheets_v4 } from '@googleapis/sheets';\nimport type { GoogleApiError } from '../types.ts';\n\nexport const SPREADSHEET_URL_RE = /https:\\/\\/docs.google.com\\/spreadsheets\\/d\\/([a-zA-Z0-9-_]{10,})/;\nexport const SPREADSHEET_ID_RE = /^[a-zA-Z0-9-_]{30,}$/;\n\nexport async function findById(sheets: sheets_v4.Sheets, drive: drive_v3.Drive, id: string) {\n const ssResp = await sheets.spreadsheets.get({ spreadsheetId: id }).catch((e: unknown) => {\n const error = e as GoogleApiError;\n const status = error?.response?.status || error?.status || error?.code;\n if (Number(status) === 404) return null;\n throw e;\n });\n const dmResp = await drive.files.get({ fileId: id, fields: 'modifiedTime,webViewLink,name' }).catch((e: unknown) => {\n const error = e as GoogleApiError;\n const status = error?.response?.status || error?.status || error?.code;\n if (Number(status) === 404) return null;\n throw e;\n });\n const dm = dmResp?.data;\n if (!ssResp) return null;\n const ss = ssResp.data;\n return {\n id: id,\n spreadsheetTitle: ss?.properties?.title ?? dm?.name,\n url: ss?.spreadsheetUrl ?? dm?.webViewLink,\n modifiedTime: dm?.modifiedTime,\n };\n}\n\nexport async function findByName(drive: drive_v3.Drive, name: string) {\n const escaped = String(name).replace(/['\"\\\\]/g, (m) => `\\\\${m}`);\n const q = `mimeType='application/vnd.google-apps.spreadsheet' and name contains '${escaped}' and trashed = false`;\n const resp = await drive.files.list({ q, pageSize: 50, fields: 'files(id,name,webViewLink,modifiedTime)' });\n const files = resp.data?.files || [];\n return files.map((f) => ({ id: String(f.id), spreadsheetTitle: String(f.name), url: String(f.webViewLink), modifiedTime: f.modifiedTime }));\n}\n\nexport async function findSpreadsheetsByRef(sheets: sheets_v4.Sheets, drive: drive_v3.Drive, ref: string) {\n const trimmedRef = ref?.trim();\n if (!trimmedRef) return [];\n\n // Strategy 1: Try URL extraction (most specific)\n const urlMatch = trimmedRef.match(SPREADSHEET_URL_RE);\n if (urlMatch && typeof urlMatch[1] === 'string' && urlMatch[1].length > 0) {\n const id = urlMatch[1];\n const r = await findById(sheets, drive, id);\n return r ? [r] : [];\n }\n\n // Strategy 2: Try direct ID match (if it looks like a spreadsheet ID)\n if (SPREADSHEET_ID_RE.test(trimmedRef)) {\n const r = await findById(sheets, drive, trimmedRef);\n return r ? [r] : [];\n }\n\n // Strategy 3: Search by name\n return await findByName(drive, trimmedRef);\n}\n"],"names":["SPREADSHEET_URL_RE","SPREADSHEET_ID_RE","findById","sheets","drive","id","ss","ssResp","spreadsheets","get","spreadsheetId","catch","e","error","status","response","code","Number","dmResp","files","fileId","fields","dm","data","spreadsheetTitle","properties","title","name","url","spreadsheetUrl","webViewLink","modifiedTime","findByName","resp","escaped","String","replace","m","q","list","pageSize","map","f","findSpreadsheetsByRef","ref","trimmedRef","trim","urlMatch","match","length","r","test"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcp-z/mcp-sheets",
3
- "version": "1.2.4",
3
+ "version": "1.3.0",
4
4
  "description": "MCP server for Google Sheets integration with OAuth authentication, spreadsheet management, batch operations, and advanced formatting",
5
5
  "keywords": [
6
6
  "sheets",
@@ -66,28 +66,27 @@
66
66
  "version": "tsds version"
67
67
  },
68
68
  "dependencies": {
69
- "@mcp-z/oauth": "^1.0.5",
70
- "@mcp-z/oauth-google": "^1.1.3",
71
- "@mcp-z/server": "^1.2.0",
72
- "@modelcontextprotocol/sdk": "^1.0.0",
69
+ "@googleapis/drive": "^22.0.0",
70
+ "@googleapis/sheets": "^14.0.0",
71
+ "@mcp-z/oauth": "^2.0.0",
72
+ "@mcp-z/oauth-google": "^2.0.1",
73
+ "@mcp-z/server": "^2.2.0",
73
74
  "cors": "^2.0.0",
74
75
  "csv-parse": "^7.0.2",
75
76
  "express": "^5.0.0",
76
- "google-auth-library": "10.5.0",
77
- "googleapis": "174.0.1",
78
77
  "keyv-file": "5.3.3",
79
78
  "keyv-registry": "^2.0.0",
80
79
  "module-root-sync": "^2.0.0",
81
80
  "pino": "^10.0.0",
82
- "zod": "^4.0.0"
81
+ "zod": "^4.2.0"
83
82
  },
84
83
  "devDependencies": {
85
- "@mcp-z/client": "^1.0.11",
84
+ "@mcp-z/client": "^2.0.0",
85
+ "@modelcontextprotocol/sdk": "^1.0.0",
86
86
  "@types/cors": "^2.8.19",
87
87
  "@types/express": "^5.0.6",
88
88
  "@types/mocha": "^10.0.10",
89
89
  "@types/node": "^26.2.0",
90
- "dotenv": "^17.2.3",
91
90
  "fs-remove-compat": "^1.0.4",
92
91
  "get-port": "5.1.1",
93
92
  "keyv": "^5.0.0",