{"_id":"mcp-gsheets","_rev":"18-d6ece08427f454b78d142d40b4a0056b","name":"mcp-gsheets","dist-tags":{"latest":"1.10.3"},"versions":{"1.0.0":{"name":"mcp-gsheets","version":"1.0.0","keywords":["mcp","model-context-protocol","google-sheets","spreadsheet","api","claude","ai"],"author":{"name":"freema"},"license":"MIT","_id":"mcp-gsheets@1.0.0","maintainers":[{"name":"freema","email":"grasl.t@centrum.cz"}],"homepage":"https://github.com/freema/mcp-gsheets#readme","bugs":{"url":"https://github.com/freema/mcp-gsheets/issues"},"bin":{"mcp-gsheets":"dist/index.js"},"dist":{"shasum":"e10f50d4d59755bba933955ee94b492bcdf94378","tarball":"https://registry.npmjs.org/mcp-gsheets/-/mcp-gsheets-1.0.0.tgz","fileCount":6,"integrity":"sha512-Y6dzG9MNms+aA4PKBp7qjltUAcbSHkywH9XIcyE+wzWPVvnFI4PgO2AlhB0Z2flYZOe7MhgkvK9spIAtQoUi0w==","signatures":[{"sig":"MEUCIQCAmcrY2EszoNIe02bN0fpRS/Xp5c45y16SJaqzK6wpawIgJyDZLEaJ41VTs3JTxGA2LsVY/2BT9B3VkbwnqwhxcT4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":272862},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a74555a7013e53e58cd0ac7b842b0c06096c624f","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","check":"npm run typecheck && npm run lint && npm run format:check","clean":"rm -rf dist","setup":"node scripts/setup-mcp-config.js","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","test:ui":"vitest --ui","lint:fix":"eslint src --ext .ts --fix","test:run":"vitest run","check:all":"npm run check && npm run test:run && npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js","typecheck":"tsc --noEmit","test:watch":"vitest watch","test:sheets":"node scripts/test-sheets-tools.js","format:check":"prettier --check \"src/**/*.ts\"","inspector:dev":"NODE_ENV=development npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"freema","email":"grasl.t@centrum.cz"},"repository":{"url":"git+https://github.com/freema/mcp-gsheets.git","type":"git"},"_npmVersion":"11.1.0","description":"Model Context Protocol (MCP) server for Google Sheets API integration","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"^3.22.4","googleapis":"^140.0.0","@modelcontextprotocol/sdk":"^0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","tsup":"^8.0.0","dotenv":"^16.3.1","eslint":"^8.57.1","vitest":"^3.1.4","prettier":"^3.5.3","@vitest/ui":"^3.1.4","typescript":"^5.3.3","@types/node":"^20.11.0","@vitest/coverage-v8":"^3.1.4","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.0","@typescript-eslint/parser":"^6.21.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-gsheets_1.0.0_1749011916505_0.12633165484873232","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"mcp-gsheets","version":"1.3.0","keywords":["mcp","model-context-protocol","google-sheets","spreadsheet","api","claude","ai"],"author":{"name":"freema"},"license":"MIT","_id":"mcp-gsheets@1.3.0","maintainers":[{"name":"freema","email":"grasl.t@centrum.cz"}],"homepage":"https://github.com/freema/mcp-gsheets#readme","bugs":{"url":"https://github.com/freema/mcp-gsheets/issues"},"bin":{"mcp-gsheets":"dist/index.js"},"dist":{"shasum":"008817398cf2917094f71ea1098ddc47c60da02b","tarball":"https://registry.npmjs.org/mcp-gsheets/-/mcp-gsheets-1.3.0.tgz","fileCount":6,"integrity":"sha512-pV9vC7mvFzKhf//s+eHtYGzHC0jczXo3VD4drCBAeNBPxKt6BNBgWklHX6h6ZAwq4/bo16ZlEkcjelZg8OHobw==","signatures":[{"sig":"MEQCIF7ceDZ8F+TGQZzLewdru7bUL1zva42KhFB/5Msh67P7AiBJ7M6goS8iVCoUUv3eYf8SK3jZp0ngMhgfJLiGnZ5YZg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":617259},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4a8b200c337b48d39328ef75ad34f785a15fd5fd","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","check":"npm run typecheck && npm run lint && npm run format:check","clean":"rm -rf dist","setup":"node scripts/setup-mcp-config.js","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","test:ui":"vitest --ui","lint:fix":"eslint src --ext .ts --fix","test:run":"vitest run","check:all":"npm run check && npm run test:run && npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js","typecheck":"tsc --noEmit","test:watch":"vitest watch","test:sheets":"node scripts/test-sheets-tools.js","format:check":"prettier --check \"src/**/*.ts\"","inspector:dev":"NODE_ENV=development npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"freema","email":"grasl.t@centrum.cz"},"repository":{"url":"git+https://github.com/freema/mcp-gsheets.git","type":"git"},"_npmVersion":"11.1.0","description":"Model Context Protocol (MCP) server for Google Sheets API integration","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"^3.22.4","googleapis":"^140.0.0","@modelcontextprotocol/sdk":"^1.17.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","tsup":"^8.0.0","dotenv":"^17.2.1","eslint":"^8.57.1","vitest":"^3.1.4","prettier":"^3.5.3","@vitest/ui":"^3.1.4","typescript":"^5.3.3","@types/node":"^24.1.0","@vitest/coverage-v8":"^3.1.4","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.0","@typescript-eslint/parser":"^6.21.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-gsheets_1.3.0_1756381949599_0.7251939196874286","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"mcp-gsheets","version":"1.4.1","keywords":["mcp","model-context-protocol","google-sheets","spreadsheet","api","claude","ai"],"author":{"name":"freema"},"license":"MIT","_id":"mcp-gsheets@1.4.1","maintainers":[{"name":"freema","email":"grasl.t@centrum.cz"}],"homepage":"https://github.com/freema/mcp-gsheets#readme","bugs":{"url":"https://github.com/freema/mcp-gsheets/issues"},"bin":{"mcp-gsheets":"dist/index.js"},"dist":{"shasum":"b640cbe282919fe5e79774f00afd96fb847515d7","tarball":"https://registry.npmjs.org/mcp-gsheets/-/mcp-gsheets-1.4.1.tgz","fileCount":6,"integrity":"sha512-WFToA4ZQ1qXXkvoHcWlu50RrHmGmaCSs+FMOXwST20ype4xfu25f2q0HthQq1mWaoPKvH+b+vDMLGvA2wliOlA==","signatures":[{"sig":"MEQCIA8i9EDeb3/MriZ1OhF83SAgqA76aX9Mu5hqq/hL5XakAiAOSX9EBtyLth6OVNPJFBlrFbFDtPrspcO6nhpzH5WuqA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":617308},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"37c184e14e043915592c33c592cdb512a12a9174","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","check":"npm run typecheck && npm run lint && npm run format:check","clean":"rm -rf dist","setup":"node scripts/setup-mcp-config.js","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","test:ui":"vitest --ui","lint:fix":"eslint src --ext .ts --fix","test:run":"vitest run","check:all":"npm run check && npm run test:run && npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js","typecheck":"tsc --noEmit","test:watch":"vitest watch","test:sheets":"node scripts/test-sheets-tools.js","format:check":"prettier --check \"src/**/*.ts\"","inspector:dev":"NODE_ENV=development npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"freema","email":"grasl.t@centrum.cz"},"repository":{"url":"git+https://github.com/freema/mcp-gsheets.git","type":"git"},"_npmVersion":"11.1.0","description":"Model Context Protocol (MCP) server for Google Sheets API integration","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"^3.22.4","googleapis":"^140.0.0","@modelcontextprotocol/sdk":"^1.17.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","tsup":"^8.0.0","dotenv":"^17.2.1","eslint":"^8.57.1","vitest":"^3.1.4","prettier":"^3.5.3","@vitest/ui":"^3.1.4","typescript":"^5.3.3","@types/node":"^24.1.0","@vitest/coverage-v8":"^3.1.4","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.0","@typescript-eslint/parser":"^6.21.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-gsheets_1.4.1_1756382448756_0.3898631412307445","host":"s3://npm-registry-packages-npm-production"}},"1.4.3":{"name":"mcp-gsheets","version":"1.4.3","keywords":["mcp","model-context-protocol","google-sheets","spreadsheet","api","claude","ai"],"author":{"name":"freema"},"license":"MIT","_id":"mcp-gsheets@1.4.3","maintainers":[{"name":"freema","email":"grasl.t@centrum.cz"}],"homepage":"https://github.com/freema/mcp-gsheets#readme","bugs":{"url":"https://github.com/freema/mcp-gsheets/issues"},"bin":{"mcp-gsheets":"dist/index.js"},"dist":{"shasum":"e2f5993874ec890f8d0bfbf659ac938d7a48ff74","tarball":"https://registry.npmjs.org/mcp-gsheets/-/mcp-gsheets-1.4.3.tgz","fileCount":6,"integrity":"sha512-Q7VhXjrt2JfqdpWyXVRgrAwnl1l7bBgfOLHbDq8zHlTlYEEuVxeNQCEf5kzBMDWOnaMVWi3tAVlDyC+Pje/enQ==","signatures":[{"sig":"MEYCIQCDhD8YWOIC02t3pvGStnTPkCU4YnrkMcRQVrLLkkpADgIhAOu9iZL2DfMYc/tly34hRAws+VWuKZ6Zm2CLzdaVGNhL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mcp-gsheets@1.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":617308},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"af67354d7fd96791233dbe0c49f7d553dab67b72","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","check":"npm run typecheck && npm run lint && npm run format:check","clean":"rm -rf dist","setup":"node scripts/setup-mcp-config.js","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","test:ui":"vitest --ui","lint:fix":"eslint src --ext .ts --fix","test:run":"vitest run","check:all":"npm run check && npm run test:run && npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js","typecheck":"tsc --noEmit","test:watch":"vitest watch","test:sheets":"node scripts/test-sheets-tools.js","format:check":"prettier --check \"src/**/*.ts\"","inspector:dev":"NODE_ENV=development npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"freema","email":"grasl.t@centrum.cz"},"repository":{"url":"git+https://github.com/freema/mcp-gsheets.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol (MCP) server for Google Sheets API integration","directories":{},"_nodeVersion":"18.20.8","dependencies":{"zod":"^3.22.4","googleapis":"^140.0.0","@modelcontextprotocol/sdk":"^1.17.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","tsup":"^8.0.0","dotenv":"^17.2.1","eslint":"^8.57.1","vitest":"^3.1.4","prettier":"^3.5.3","@vitest/ui":"^3.1.4","typescript":"^5.3.3","@types/node":"^24.1.0","@vitest/coverage-v8":"^3.1.4","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.0","@typescript-eslint/parser":"^6.21.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-gsheets_1.4.3_1756384163847_0.6668932125615128","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"mcp-gsheets","version":"1.5.0","keywords":["mcp","model-context-protocol","google-sheets","spreadsheet","api","claude","ai"],"author":{"name":"freema"},"license":"MIT","_id":"mcp-gsheets@1.5.0","maintainers":[{"name":"freema","email":"grasl.t@centrum.cz"}],"homepage":"https://github.com/freema/mcp-gsheets#readme","bugs":{"url":"https://github.com/freema/mcp-gsheets/issues"},"bin":{"mcp-gsheets":"dist/index.js"},"dist":{"shasum":"ea38fcc5ee8a947a11a2363691599afe5bba32de","tarball":"https://registry.npmjs.org/mcp-gsheets/-/mcp-gsheets-1.5.0.tgz","fileCount":6,"integrity":"sha512-jr5ZPdNzHIhz6rm5u6kqgNeu7nqDYReuE+BQoNQNK5ip6ja4wOLkpZxUElmjVT+0WHnxhaFEoZhNqBVEfmJhZw==","signatures":[{"sig":"MEYCIQDoHdLtH1uQBVHgeW5LCcC3ztJac1YwRrc+pgmBhb9F+AIhALSAyhJEoh0lB7jX40kGsd6kyNtjbxY3tBfBMDRJwrSB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mcp-gsheets@1.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":624112},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9b236dda79c7fd75960460ce547a6263edb91cd6","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","check":"npm run typecheck && npm run lint && npm run format:check","clean":"rm -rf dist","setup":"node scripts/setup-mcp-config.js","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","test:ui":"vitest --ui","lint:fix":"eslint src --ext .ts --fix","test:run":"vitest run","check:all":"npm run check && npm run test:run && npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js","typecheck":"tsc --noEmit","test:watch":"vitest watch","test:sheets":"node scripts/test-sheets-tools.js","format:check":"prettier --check \"src/**/*.ts\"","inspector:dev":"NODE_ENV=development npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"freema","email":"grasl.t@centrum.cz"},"repository":{"url":"git+https://github.com/freema/mcp-gsheets.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol (MCP) server for Google Sheets API integration","directories":{},"_nodeVersion":"18.20.8","dependencies":{"zod":"^3.22.4","googleapis":"^140.0.0","@modelcontextprotocol/sdk":"^1.17.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","tsup":"^8.0.0","dotenv":"^17.2.1","eslint":"^8.57.1","vitest":"^3.1.4","prettier":"^3.5.3","@vitest/ui":"^3.1.4","typescript":"^5.3.3","@types/node":"^24.1.0","@vitest/coverage-v8":"^3.1.4","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.0","@typescript-eslint/parser":"^6.21.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-gsheets_1.5.0_1758546187745_0.7972570632850964","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"mcp-gsheets","version":"1.5.2","keywords":["mcp","model-context-protocol","google-sheets","spreadsheet","api","claude","ai"],"author":{"name":"freema"},"license":"MIT","_id":"mcp-gsheets@1.5.2","maintainers":[{"name":"freema","email":"grasl.t@centrum.cz"}],"homepage":"https://github.com/freema/mcp-gsheets#readme","bugs":{"url":"https://github.com/freema/mcp-gsheets/issues"},"bin":{"mcp-gsheets":"dist/index.js"},"dist":{"shasum":"23e6e1fbc1e706274fa3d1936b5ce1b98a390a83","tarball":"https://registry.npmjs.org/mcp-gsheets/-/mcp-gsheets-1.5.2.tgz","fileCount":6,"integrity":"sha512-7+fdZFW8uMrvoI/5DAATXV1PmHf0ZFWLZi7tYm4/m2FTOyMjhvoQAuKRRxj8ljk3YGuokMw22Ur6fLsQHs2FHA==","signatures":[{"sig":"MEQCICGRgKVkykL8yoJSwfZ1GevrThvQd5lzr7LXw3M3Z0jjAiBfB7VC+g0sqRrGW7+BxodhFwG6BDjf3QyoGH1YVPgRZw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mcp-gsheets@1.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":626683},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a85662de8c9caf9f88dcd0779f0c7f0302d1091a","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","check":"npm run typecheck && npm run lint && npm run format:check","clean":"rm -rf dist","setup":"node scripts/setup-mcp-config.js","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","test:ui":"vitest --ui","lint:fix":"eslint src --ext .ts --fix","test:run":"vitest run","check:all":"npm run check && npm run test:run && npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js","typecheck":"tsc --noEmit","test:watch":"vitest watch","test:sheets":"node scripts/test-sheets-tools.js","format:check":"prettier --check \"src/**/*.ts\"","inspector:dev":"NODE_ENV=development npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"freema","email":"grasl.t@centrum.cz"},"repository":{"url":"git+https://github.com/freema/mcp-gsheets.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol (MCP) server for Google Sheets API integration","directories":{},"_nodeVersion":"18.20.8","dependencies":{"zod":"^3.22.4","googleapis":"^140.0.0","@modelcontextprotocol/sdk":"^1.17.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","tsup":"^8.0.0","dotenv":"^17.2.1","eslint":"^8.57.1","vitest":"^3.1.4","prettier":"^3.5.3","@vitest/ui":"^3.1.4","typescript":"^5.3.3","@types/node":"^24.1.0","@vitest/coverage-v8":"^3.1.4","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.0","@typescript-eslint/parser":"^6.21.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-gsheets_1.5.2_1760027596910_0.9642510723534023","host":"s3://npm-registry-packages-npm-production"}},"1.5.3":{"name":"mcp-gsheets","version":"1.5.3","keywords":["mcp","model-context-protocol","google-sheets","spreadsheet","api","claude","ai"],"author":{"name":"freema"},"license":"MIT","_id":"mcp-gsheets@1.5.3","maintainers":[{"name":"freema","email":"grasl.t@centrum.cz"}],"homepage":"https://github.com/freema/mcp-gsheets#readme","bugs":{"url":"https://github.com/freema/mcp-gsheets/issues"},"bin":{"mcp-gsheets":"dist/index.js"},"dist":{"shasum":"14343aab9eaf3149cabbaefbb25b6cc59758bfef","tarball":"https://registry.npmjs.org/mcp-gsheets/-/mcp-gsheets-1.5.3.tgz","fileCount":6,"integrity":"sha512-PaPvLJbDK5mGI/4Rv3JCx6kGk+tp6sxlK84/Kr0hLtanHENgcFDhANShRW/4nFIH/tQBWN94fNfFAsX6Lc/eMw==","signatures":[{"sig":"MEUCIQDhZIDGxUmplnoMFcHPYqbjKlEhKAuMp2VicOBNzDaKJQIgAXBKluDqX2NJz3AjWEdwKtthQTHuSHSZg7Ll45eLyq8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mcp-gsheets@1.5.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":629546},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6d9a4a5b43a35639292dd5e67bc0d6ec41e10aa5","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","check":"npm run typecheck && npm run lint && npm run format:check","clean":"rm -rf dist","setup":"node scripts/setup-mcp-config.js","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","test:ui":"vitest --ui","lint:fix":"eslint src --ext .ts --fix","test:run":"vitest run","check:all":"npm run check && npm run test:run && npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js","typecheck":"tsc --noEmit","test:watch":"vitest watch","test:sheets":"node scripts/test-sheets-tools.js","format:check":"prettier --check \"src/**/*.ts\"","inspector:dev":"NODE_ENV=development npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"freema","email":"grasl.t@centrum.cz"},"repository":{"url":"git+https://github.com/freema/mcp-gsheets.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol (MCP) server for Google Sheets API integration","directories":{},"_nodeVersion":"18.20.8","dependencies":{"zod":"^3.22.4","googleapis":"^140.0.0","@modelcontextprotocol/sdk":"^1.17.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","tsup":"^8.0.0","dotenv":"^17.2.1","eslint":"^8.57.1","vitest":"^3.1.4","prettier":"^3.5.3","@vitest/ui":"^3.1.4","typescript":"^5.3.3","@types/node":"^24.1.0","@vitest/coverage-v8":"^3.1.4","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.0","@typescript-eslint/parser":"^6.21.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-gsheets_1.5.3_1762284304686_0.6849027626788171","host":"s3://npm-registry-packages-npm-production"}},"1.5.4":{"name":"mcp-gsheets","version":"1.5.4","keywords":["mcp","model-context-protocol","google-sheets","spreadsheet","api","claude","ai"],"author":{"name":"freema"},"license":"MIT","_id":"mcp-gsheets@1.5.4","maintainers":[{"name":"freema","email":"grasl.t@centrum.cz"}],"homepage":"https://github.com/freema/mcp-gsheets#readme","bugs":{"url":"https://github.com/freema/mcp-gsheets/issues"},"bin":{"mcp-gsheets":"dist/index.js"},"dist":{"shasum":"c85e538345012e5a6e0b5fc9b8343925a7d1c774","tarball":"https://registry.npmjs.org/mcp-gsheets/-/mcp-gsheets-1.5.4.tgz","fileCount":6,"integrity":"sha512-tNOlZvHvuGSdV/8VkdCbrYE0GgLK499jjx8G5UUykzzGxCznKlrGZl829xdgJi5X67nLJvn/8s6Fk65SgfQ59Q==","signatures":[{"sig":"MEYCIQCiRxoKLvvnPt2FOukU47DBozzQAj8RRB0LIpaeK0jgaQIhAOAgoaE1maYCIgEUDLI26pyhRICDIfUz3EVoqEbtmjrp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mcp-gsheets@1.5.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":629784},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ff69718884edda90c82b5613eef506c4bf182737","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","check":"npm run typecheck && npm run lint && npm run format:check","clean":"rm -rf dist","setup":"node scripts/setup-mcp-config.js","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","test:ui":"vitest --ui","lint:fix":"eslint src --ext .ts --fix","test:run":"vitest run","check:all":"npm run check && npm run test:run && npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js","typecheck":"tsc --noEmit","test:watch":"vitest watch","test:sheets":"node scripts/test-sheets-tools.js","format:check":"prettier --check \"src/**/*.ts\"","inspector:dev":"NODE_ENV=development npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"freema","email":"grasl.t@centrum.cz"},"repository":{"url":"git+https://github.com/freema/mcp-gsheets.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol (MCP) server for Google Sheets API integration","directories":{},"_nodeVersion":"18.20.8","dependencies":{"zod":"^3.22.4","googleapis":"^164.1.0","@modelcontextprotocol/sdk":"^1.17.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","tsup":"^8.0.0","dotenv":"^17.2.1","eslint":"^8.57.1","vitest":"^3.1.4","prettier":"^3.5.3","@vitest/ui":"^3.1.4","typescript":"^5.3.3","@types/node":"^24.1.0","@vitest/coverage-v8":"^3.1.4","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.0","@typescript-eslint/parser":"^6.21.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-gsheets_1.5.4_1765268240091_0.5565947291337008","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"mcp-gsheets","version":"1.6.0","keywords":["mcp","model-context-protocol","google-sheets","spreadsheet","api","claude","ai"],"author":{"name":"freema"},"license":"MIT","_id":"mcp-gsheets@1.6.0","maintainers":[{"name":"freema","email":"grasl.t@centrum.cz"}],"homepage":"https://github.com/freema/mcp-gsheets#readme","bugs":{"url":"https://github.com/freema/mcp-gsheets/issues"},"bin":{"mcp-gsheets":"dist/index.js"},"dist":{"shasum":"07f67ffb0dfe887a4f8d84fd6ce9089d3fdff7b4","tarball":"https://registry.npmjs.org/mcp-gsheets/-/mcp-gsheets-1.6.0.tgz","fileCount":6,"integrity":"sha512-JGO6FJO9lvz5+1JE6DNZexbG5TNfzRX3SVdD1TUIxmd4L9LkqCzFkNWOWWlihzDX8ctQxC73YO4xbPZ+YGQrLA==","signatures":[{"sig":"MEQCIC9c6xrRubEGV601Mk/MD4kl6PcXRQuQ+uQ0LrOb6y5SAiB026RWez3BgzOMhJAnr8kOM3UUS918CsH21WE7DRodUw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mcp-gsheets@1.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":642376},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"66fc209fadc7a85f227bb5585007ad7fe1e5b325","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","check":"npm run typecheck && npm run lint && npm run format:check","clean":"rm -rf dist","setup":"node scripts/setup-mcp-config.js","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","test:ui":"vitest --ui","lint:fix":"eslint src --ext .ts --fix","test:run":"vitest run","check:all":"npm run check && npm run test:run && npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js","typecheck":"tsc --noEmit","test:watch":"vitest watch","test:sheets":"node scripts/test-sheets-tools.js","format:check":"prettier --check \"src/**/*.ts\"","inspector:dev":"NODE_ENV=development npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"freema","email":"grasl.t@centrum.cz"},"repository":{"url":"git+https://github.com/freema/mcp-gsheets.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol (MCP) server for Google Sheets API integration","directories":{},"_nodeVersion":"18.20.8","dependencies":{"zod":"^3.22.4","googleapis":"^164.1.0","@modelcontextprotocol/sdk":"^1.17.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","tsup":"^8.0.0","dotenv":"^17.2.1","eslint":"^8.57.1","vitest":"^3.1.4","prettier":"^3.5.3","@vitest/ui":"^3.1.4","typescript":"^5.3.3","@types/node":"^24.1.0","@vitest/coverage-v8":"^3.1.4","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.0","@typescript-eslint/parser":"^6.21.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-gsheets_1.6.0_1770195452555_0.7109541687562158","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"mcp-gsheets","version":"1.7.0","keywords":["mcp","model-context-protocol","google-sheets","spreadsheet","api","claude","ai"],"author":{"name":"freema"},"license":"MIT","_id":"mcp-gsheets@1.7.0","maintainers":[{"name":"freema","email":"grasl.t@centrum.cz"}],"homepage":"https://github.com/freema/mcp-gsheets#readme","bugs":{"url":"https://github.com/freema/mcp-gsheets/issues"},"bin":{"mcp-gsheets":"dist/index.js"},"dist":{"shasum":"7da13c264adc6b7c7af378755600004df793a319","tarball":"https://registry.npmjs.org/mcp-gsheets/-/mcp-gsheets-1.7.0.tgz","fileCount":6,"integrity":"sha512-1Bdc5MzmX+fLnTrAk2c7fveOB5qqTbnR7YNiotnjK7P3JkNP4G7ICtVwQ9BMoFUZ05ciBcPJSgKLL6LovaHlTw==","signatures":[{"sig":"MEQCIHTbD17Kimr2vQtDsvuRgzVWETn4zy89oZQ4hGEV8strAiBAwOJKweJ/sVK37NfkmKw00AHhIYMb4pZqJMgZAtIf7Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mcp-gsheets@1.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":835891},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2b5949997f9c3aa8d78dd05bc5a3d6bc42bd0a77","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src","test":"vitest","build":"tsup","check":"npm run typecheck && npm run lint && npm run format:check","clean":"rm -rf dist","setup":"node scripts/setup-mcp-config.js","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","test:ui":"vitest --ui","lint:fix":"eslint src --fix","test:run":"vitest run","check:all":"npm run check && npm run test:run && npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js","typecheck":"tsc --noEmit","test:watch":"vitest watch","test:sheets":"node scripts/test-sheets-tools.js","format:check":"prettier --check \"src/**/*.ts\"","inspector:dev":"NODE_ENV=development npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"freema","email":"grasl.t@centrum.cz"},"repository":{"url":"git+https://github.com/freema/mcp-gsheets.git","type":"git"},"_npmVersion":"10.9.7","description":"Model Context Protocol (MCP) server for Google Sheets API integration","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.22.4","googleapis":"^171.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","dotenv":"^17.4.2","eslint":"^9.0.0","vitest":"^4.0.0","globals":"^15.0.0","prettier":"^3.8.3","@eslint/js":"^9.0.0","@vitest/ui":"^4.0.0","typescript":"^5.3.3","@types/node":"^24.1.0","typescript-eslint":"^8.0.0","@vitest/coverage-v8":"^4.0.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-gsheets_1.7.0_1776340372001_0.8850828498720373","host":"s3://npm-registry-packages-npm-production"}},"1.7.1":{"name":"mcp-gsheets","version":"1.7.1","keywords":["mcp","model-context-protocol","google-sheets","spreadsheet","api","claude","ai"],"author":{"name":"freema"},"license":"MIT","_id":"mcp-gsheets@1.7.1","maintainers":[{"name":"freema","email":"grasl.t@centrum.cz"}],"homepage":"https://github.com/freema/mcp-gsheets#readme","bugs":{"url":"https://github.com/freema/mcp-gsheets/issues"},"bin":{"mcp-gsheets":"dist/index.js"},"dist":{"shasum":"eb35b9c9a75b79376c344e1f6da7ce632efcfabe","tarball":"https://registry.npmjs.org/mcp-gsheets/-/mcp-gsheets-1.7.1.tgz","fileCount":6,"integrity":"sha512-bOHcBn0Fkp+y1PiUv1SdTniyTOuEbhMm/scnx6wpDneu3GncbIKPHgR25tqaVH247pCo312dkm1RK2XH0jtdWw==","signatures":[{"sig":"MEQCIBySewUSEU1Ms75A5/KQ2O3L8XjYmtaNvmdzRiL1z3IuAiBElj7luYu/n8xF8jq5zaZjfuzrzhyc/a0+y3dc21Bg8w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mcp-gsheets@1.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":833071},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"9f0388d97996878fc2d8f29e777ef5dabbef9f86","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src","test":"vitest","build":"tsup","check":"npm run typecheck && npm run lint && npm run format:check","clean":"rm -rf dist","setup":"node scripts/setup-mcp-config.js","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","test:ui":"vitest --ui","lint:fix":"eslint src --fix","test:run":"vitest run","check:all":"npm run check && npm run test:run && npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js","typecheck":"tsc --noEmit","test:watch":"vitest watch","test:sheets":"node scripts/test-sheets-tools.js","format:check":"prettier --check \"src/**/*.ts\"","inspector:dev":"NODE_ENV=development npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"freema","email":"grasl.t@centrum.cz"},"repository":{"url":"git+https://github.com/freema/mcp-gsheets.git","type":"git"},"_npmVersion":"10.9.7","description":"Model Context Protocol (MCP) server for Google Sheets API integration","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.22.4","googleapis":"^171.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","dotenv":"^17.4.2","eslint":"^9.0.0","vitest":"^4.0.0","globals":"^15.0.0","prettier":"^3.8.3","@eslint/js":"^9.0.0","@vitest/ui":"^4.0.0","typescript":"^5.3.3","@types/node":"^24.1.0","typescript-eslint":"^8.0.0","@vitest/coverage-v8":"^4.0.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-gsheets_1.7.1_1776342053852_0.535521610810556","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"mcp-gsheets","version":"1.8.0","keywords":["mcp","model-context-protocol","google-sheets","spreadsheet","api","claude","ai"],"author":{"name":"freema"},"license":"MIT","_id":"mcp-gsheets@1.8.0","maintainers":[{"name":"freema","email":"grasl.t@centrum.cz"}],"homepage":"https://github.com/freema/mcp-gsheets#readme","bugs":{"url":"https://github.com/freema/mcp-gsheets/issues"},"bin":{"mcp-gsheets":"dist/index.js"},"dist":{"shasum":"059ecdadef3d3824af0ea51ddc2999ea6748576a","tarball":"https://registry.npmjs.org/mcp-gsheets/-/mcp-gsheets-1.8.0.tgz","fileCount":6,"integrity":"sha512-Ep8yK65EANjvJaofJnQak1kS0m1JehtOV+MvEBlb1bk311F8jqyt2tbnCbn8afL3lMRvc4GbtiVssOcr7LOn0Q==","signatures":[{"sig":"MEUCIQDwly2yUgRQTU4Vzq/yUMSpcO6HUj3bqXMY5kdDt6XsHgIgQ7r9zp6p3rODRFMTAtFgI3qUwZ3mh7RSsbiJyTqab8E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mcp-gsheets@1.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":857777},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"50c5fbd1506edc2937c4879b628559c190eecf55","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src","test":"vitest","build":"tsup","check":"npm run typecheck && npm run lint && npm run format:check","clean":"rm -rf dist","setup":"node scripts/setup-mcp-config.js","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","test:ui":"vitest --ui","lint:fix":"eslint src --fix","test:run":"vitest run","check:all":"npm run check && npm run test:run && npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js","typecheck":"tsc --noEmit","test:watch":"vitest watch","test:sheets":"node scripts/test-sheets-tools.js","format:check":"prettier --check \"src/**/*.ts\"","inspector:dev":"NODE_ENV=development npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"freema","email":"grasl.t@centrum.cz"},"repository":{"url":"git+https://github.com/freema/mcp-gsheets.git","type":"git"},"_npmVersion":"10.9.7","description":"Model Context Protocol (MCP) server for Google Sheets API integration","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.22.4","googleapis":"^171.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","dotenv":"^17.4.2","eslint":"^9.0.0","vitest":"^4.0.0","globals":"^15.0.0","prettier":"^3.8.3","@eslint/js":"^9.0.0","@vitest/ui":"^4.0.0","typescript":"^5.3.3","@types/node":"^24.1.0","typescript-eslint":"^8.0.0","@vitest/coverage-v8":"^4.0.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-gsheets_1.8.0_1776781471373_0.6265473567155593","host":"s3://npm-registry-packages-npm-production"}},"1.8.1":{"name":"mcp-gsheets","version":"1.8.1","keywords":["mcp","model-context-protocol","google-sheets","spreadsheet","api","claude","ai"],"author":{"name":"freema"},"license":"MIT","_id":"mcp-gsheets@1.8.1","maintainers":[{"name":"freema","email":"grasl.t@centrum.cz"}],"homepage":"https://github.com/freema/mcp-gsheets#readme","bugs":{"url":"https://github.com/freema/mcp-gsheets/issues"},"bin":{"mcp-gsheets":"dist/index.js"},"dist":{"shasum":"ff1ece88c5ab3192a879da3614bb8a8e2746eb27","tarball":"https://registry.npmjs.org/mcp-gsheets/-/mcp-gsheets-1.8.1.tgz","fileCount":6,"integrity":"sha512-/MOaCDOYYv/1vpCexN5SOaj64hps49L9FllqVNRacNToZ/Ji5n96ZFQz5JVpnhzmCmyTr2DxIigMfgPpIaCiqw==","signatures":[{"sig":"MEYCIQDOdN6wG1/U/IOe0+TRjowLSyzJrbPouKUdPsyTktu1BQIhAPosaIZAJ0vgU5+NWQ62F8gVYdo3BS5rIuyZZFN9wjnq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mcp-gsheets@1.8.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":857871},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"4655901b82fcf3364e0927fae170a0f996ab44fd","mcpName":"io.github.freema/mcp-gsheets","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src","test":"vitest","build":"tsup","check":"npm run typecheck && npm run lint && npm run format:check","clean":"rm -rf dist","setup":"node scripts/setup-mcp-config.js","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","test:ui":"vitest --ui","lint:fix":"eslint src --fix","test:run":"vitest run","check:all":"npm run check && npm run test:run && npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js","typecheck":"tsc --noEmit","test:watch":"vitest watch","test:sheets":"node scripts/test-sheets-tools.js","format:check":"prettier --check \"src/**/*.ts\"","inspector:dev":"NODE_ENV=development npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"freema","email":"grasl.t@centrum.cz"},"repository":{"url":"git+https://github.com/freema/mcp-gsheets.git","type":"git"},"_npmVersion":"10.9.7","description":"Model Context Protocol (MCP) server for Google Sheets API integration","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.22.4","googleapis":"^171.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","dotenv":"^17.4.2","eslint":"^9.0.0","vitest":"^4.0.0","globals":"^15.0.0","prettier":"^3.8.3","@eslint/js":"^9.0.0","@vitest/ui":"^4.0.0","typescript":"^5.3.3","@types/node":"^24.1.0","typescript-eslint":"^8.0.0","@vitest/coverage-v8":"^4.0.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-gsheets_1.8.1_1777205351178_0.1824735090792844","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"mcp-gsheets","version":"1.9.0","keywords":["mcp","model-context-protocol","google-sheets","spreadsheet","api","claude","ai"],"author":{"name":"freema"},"license":"MIT","_id":"mcp-gsheets@1.9.0","maintainers":[{"name":"freema","email":"grasl.t@centrum.cz"}],"homepage":"https://github.com/freema/mcp-gsheets#readme","bugs":{"url":"https://github.com/freema/mcp-gsheets/issues"},"bin":{"mcp-gsheets":"dist/index.js"},"dist":{"shasum":"83f66f21ce5708f5538e59d6fad8a9cc32734e18","tarball":"https://registry.npmjs.org/mcp-gsheets/-/mcp-gsheets-1.9.0.tgz","fileCount":6,"integrity":"sha512-pcT49kL67WHjxGx6/vTjg/EKnnFfpM3ms2SGus5wDN9KgvVKQxT3zabiQhXZT3Fz+q5E92BrW1dqZw/FhhR//Q==","signatures":[{"sig":"MEYCIQDiqtcDCYuMej+FcsQP1A2Dj8UBZ4fHMwZxZJqxeKz9/QIhAIzgaN7x9FvzfWItFlh9JwH37cW1pXnCG8zWp/UxPpYv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mcp-gsheets@1.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":875928},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"fa2975b260c92ff23e85112c841f0e14241bb8a3","mcpName":"io.github.freema/mcp-gsheets","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src","test":"vitest","build":"tsup","check":"npm run typecheck && npm run lint && npm run format:check","clean":"rm -rf dist","setup":"node scripts/setup-mcp-config.js","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","test:ui":"vitest --ui","lint:fix":"eslint src --fix","test:run":"vitest run","check:all":"npm run check && npm run test:run && npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js","typecheck":"tsc --noEmit","test:watch":"vitest watch","test:sheets":"node scripts/test-sheets-tools.js","format:check":"prettier --check \"src/**/*.ts\"","inspector:dev":"NODE_ENV=development npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"freema","email":"grasl.t@centrum.cz"},"repository":{"url":"git+https://github.com/freema/mcp-gsheets.git","type":"git"},"_npmVersion":"10.9.8","description":"Model Context Protocol (MCP) server for Google Sheets API integration","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.22.4","googleapis":"^171.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","dotenv":"^17.4.2","eslint":"^9.0.0","vitest":"^4.0.0","globals":"^15.0.0","prettier":"^3.8.3","@eslint/js":"^9.0.0","@vitest/ui":"^4.0.0","typescript":"^5.3.3","@types/node":"^24.1.0","typescript-eslint":"^8.0.0","@vitest/coverage-v8":"^4.0.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-gsheets_1.9.0_1783657173479_0.9089747072174936","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"mcp-gsheets","version":"1.10.0","keywords":["mcp","model-context-protocol","google-sheets","spreadsheet","api","claude","ai"],"author":{"name":"freema"},"license":"MIT","_id":"mcp-gsheets@1.10.0","maintainers":[{"name":"freema","email":"grasl.t@centrum.cz"}],"homepage":"https://github.com/freema/mcp-gsheets#readme","bugs":{"url":"https://github.com/freema/mcp-gsheets/issues"},"bin":{"mcp-gsheets":"dist/index.js"},"dist":{"shasum":"392637ea47ef4165986e33826ae98b2fdcf0aaf4","tarball":"https://registry.npmjs.org/mcp-gsheets/-/mcp-gsheets-1.10.0.tgz","fileCount":6,"integrity":"sha512-bPyzZteafuMuAtnZPpaQk7lClBDSE+8PMHtoDZ0Ltb44yAEVzY8wfKxCt+03U/oOxYKsnLdpGsv7Gt4FPPLv6w==","signatures":[{"sig":"MEUCIQCTA+/tx2SEHqVwkATULoo/ptshxhDdzCQILsknCGtZkAIgbCDoAjDrCSRcDCOk7wu+G3/yIbss3olE0AS/C8tQ4Eg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mcp-gsheets@1.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":882942},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"b7095beda065e7814f4fa742944208193303ff52","mcpName":"io.github.freema/mcp-gsheets","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src","test":"vitest","build":"tsup","check":"npm run typecheck && npm run lint && npm run format:check","clean":"rm -rf dist","setup":"node scripts/setup-mcp-config.js","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","test:ui":"vitest --ui","lint:fix":"eslint src --fix","test:run":"vitest run","check:all":"npm run check && npm run test:run && npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js","typecheck":"tsc --noEmit","test:watch":"vitest watch","test:sheets":"node scripts/test-sheets-tools.js","format:check":"prettier --check \"src/**/*.ts\"","inspector:dev":"NODE_ENV=development npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"freema","email":"grasl.t@centrum.cz"},"repository":{"url":"git+https://github.com/freema/mcp-gsheets.git","type":"git"},"_npmVersion":"10.9.8","description":"Model Context Protocol (MCP) server for Google Sheets API integration","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.22.4","googleapis":"^171.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","dotenv":"^17.4.2","eslint":"^9.0.0","vitest":"^4.0.0","globals":"^15.0.0","prettier":"^3.8.3","@eslint/js":"^9.0.0","@vitest/ui":"^4.0.0","typescript":"^5.3.3","@types/node":"^24.1.0","typescript-eslint":"^8.0.0","@vitest/coverage-v8":"^4.0.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-gsheets_1.10.0_1785138369655_0.03229233575013435","host":"s3://npm-registry-packages-npm-production"}},"1.10.1":{"name":"mcp-gsheets","version":"1.10.1","keywords":["mcp","model-context-protocol","google-sheets","spreadsheet","api","claude","ai"],"author":{"name":"freema"},"license":"MIT","_id":"mcp-gsheets@1.10.1","maintainers":[{"name":"freema","email":"grasl.t@centrum.cz"}],"homepage":"https://github.com/freema/mcp-gsheets#readme","bugs":{"url":"https://github.com/freema/mcp-gsheets/issues"},"bin":{"mcp-gsheets":"dist/index.js"},"dist":{"shasum":"08e9134cd8e814408aad949f71ef5c0576738b02","tarball":"https://registry.npmjs.org/mcp-gsheets/-/mcp-gsheets-1.10.1.tgz","fileCount":6,"integrity":"sha512-bwKSm/IxWGNRQ+qVexBbhVaC8bOIXOuB7QmCrmY301czMaPDRY8gMDNAdIuwQQkNoznGUai9nXrN128sUK6BRQ==","signatures":[{"sig":"MEYCIQDIe1Dk09YiSewk2OuOAdEhW44jcfbdVld4LtcWKgdA2wIhANdJTzSjK+OxtdeZ1uzRoNHczvEHA5vH8grIC7KLM19S","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mcp-gsheets@1.10.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1190884},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"0fd573a293c1fc55048f38b996267bce6f30f52a","mcpName":"io.github.freema/mcp-gsheets","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src","test":"vitest","build":"tsup","check":"npm run typecheck && npm run lint && npm run format:check","clean":"rm -rf dist","setup":"node scripts/setup-mcp-config.js","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","test:ui":"vitest --ui","lint:fix":"eslint src --fix","test:run":"vitest run","check:all":"npm run check && npm run test:run && npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js","typecheck":"tsc --noEmit","test:watch":"vitest watch","test:sheets":"node scripts/test-sheets-tools.js","format:check":"prettier --check \"src/**/*.ts\"","inspector:dev":"NODE_ENV=development npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"freema","email":"grasl.t@centrum.cz"},"repository":{"url":"git+https://github.com/freema/mcp-gsheets.git","type":"git"},"_npmVersion":"10.9.8","description":"Model Context Protocol (MCP) server for Google Sheets API integration","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","googleapis":"^171.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","dotenv":"^17.4.2","eslint":"^10.8.0","vitest":"^4.0.0","globals":"^17.8.0","prettier":"^3.8.3","@eslint/js":"^10.0.1","@vitest/ui":"^4.0.0","typescript":"^5.3.3","@types/node":"^24.1.0","typescript-eslint":"^8.0.0","@vitest/coverage-v8":"^4.0.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-gsheets_1.10.1_1786370722989_0.8410812761817319","host":"s3://npm-registry-packages-npm-production"}},"1.10.2":{"name":"mcp-gsheets","version":"1.10.2","keywords":["mcp","model-context-protocol","google-sheets","spreadsheet","api","claude","ai"],"author":{"name":"freema"},"license":"MIT","_id":"mcp-gsheets@1.10.2","maintainers":[{"name":"freema","email":"grasl.t@centrum.cz"}],"homepage":"https://github.com/freema/mcp-gsheets#readme","bugs":{"url":"https://github.com/freema/mcp-gsheets/issues"},"bin":{"mcp-gsheets":"dist/index.js"},"dist":{"shasum":"88d6b004e5ca5ec156ec51b2bd95b314da0db38f","tarball":"https://registry.npmjs.org/mcp-gsheets/-/mcp-gsheets-1.10.2.tgz","fileCount":6,"integrity":"sha512-H5LKmR9Z/k7VUx+Os/Kvkiqq4xyQt/e83b2yptO/XR+kqlqiZIeQf5LRNn0oLjuxjZPzEdfj2eXiAxL3cFfsWA==","signatures":[{"sig":"MEQCIF3ZULhe/jabVH+k5UjyV9M1xE3V315AkbTSBDQPMv44AiBF8gizt6sUxLUUlemkaZBLdUTUFeAPdJQ2PGinVBr/5Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mcp-gsheets@1.10.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1190666},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"5218a33ae8b24a1b00993d909d1fda14b76b5427","mcpName":"io.github.freema/mcp-gsheets","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src","test":"vitest","build":"tsup","check":"npm run typecheck && npm run lint && npm run format:check","clean":"rm -rf dist","setup":"node scripts/setup-mcp-config.js","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","test:ui":"vitest --ui","lint:fix":"eslint src --fix","test:run":"vitest run","check:all":"npm run check && npm run test:run && npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js","typecheck":"tsc --noEmit","test:watch":"vitest watch","test:sheets":"node scripts/test-sheets-tools.js","format:check":"prettier --check \"src/**/*.ts\"","inspector:dev":"NODE_ENV=development npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"freema","email":"grasl.t@centrum.cz"},"repository":{"url":"git+https://github.com/freema/mcp-gsheets.git","type":"git"},"_npmVersion":"10.9.8","description":"Model Context Protocol (MCP) server for Google Sheets API integration","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","googleapis":"^171.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","dotenv":"^17.4.2","eslint":"^10.8.0","vitest":"^4.0.0","globals":"^17.8.0","prettier":"^3.8.3","@eslint/js":"^10.0.1","@vitest/ui":"^4.0.0","typescript":"^5.3.3","@types/node":"^24.1.0","typescript-eslint":"^8.0.0","@vitest/coverage-v8":"^4.0.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-gsheets_1.10.2_1786870589692_0.5074233635957723","host":"s3://npm-registry-packages-npm-production"}},"1.10.3":{"_id":"mcp-gsheets@1.10.3","bin":{"mcp-gsheets":"dist/index.js"},"bugs":{"url":"https://github.com/freema/mcp-gsheets/issues"},"dist":{"shasum":"fd93b8ff89ecbfbad13aedaa6ad7e3bc5b20679c","tarball":"https://registry.npmjs.org/mcp-gsheets/-/mcp-gsheets-1.10.3.tgz","fileCount":6,"integrity":"sha512-6xyySVArjTIXkt24bmTSBFEZY02QsP/sGstjGES6ktVSbCFscPYFmDiBaCYeC8+0eHKc1D+sq7n8Iho7X6SEjw==","signatures":[{"sig":"MEUCIHH5WaKQd9CWN+Dr7XxpdsWBP/I/0uw3yJ4kMl9h5p4GAiEA2UyyNLkGVwchuhiIJqNqQi1RyCpoAYu0YHI1w0waUyk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIG91qXPSkryegPHxo69F3XFUiWLxf542/dTR/aneNdVNAiEAxEcwE7EzTUvbWi1bmL0FJsGrnUfoFIS12pXEAhP/iV0="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mcp-gsheets@1.10.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1403099},"main":"dist/index.js","name":"mcp-gsheets","type":"module","types":"dist/index.d.ts","author":{"name":"freema"},"engines":{"node":">=20.0.0"},"gitHead":"91fb3c5af35168ce93d52397cff9942621e68618","license":"MIT","mcpName":"io.github.freema/mcp-gsheets","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src","test":"vitest","build":"tsup","check":"npm run typecheck && npm run lint && npm run format:check","clean":"rm -rf dist","setup":"node scripts/setup-mcp-config.js","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","test:ui":"vitest --ui","lint:fix":"eslint src --fix","test:run":"vitest run","check:all":"npm run check && npm run test:run && npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js","typecheck":"tsc --noEmit","test:watch":"vitest watch","test:sheets":"node scripts/test-sheets-tools.js","format:check":"prettier --check \"src/**/*.ts\"","inspector:dev":"NODE_ENV=development npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build"},"version":"1.10.3","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:21056b90-09cc-4945-8cf1-1db936117071"}},"homepage":"https://github.com/freema/mcp-gsheets#readme","keywords":["mcp","model-context-protocol","google-sheets","spreadsheet","api","claude","ai"],"repository":{"url":"git+https://github.com/freema/mcp-gsheets.git","type":"git"},"_npmVersion":"11.19.0","description":"Model Context Protocol (MCP) server for Google Sheets API integration","directories":{},"maintainers":[{"name":"freema","email":"grasl.t@centrum.cz"}],"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.6.5","googleapis":"^176.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","tsup":"^8.5.1","dotenv":"^17.4.2","eslint":"^10.8.0","vitest":"^4.0.0","globals":"^17.8.0","prettier":"^3.9.8","@eslint/js":"^10.0.1","@vitest/ui":"^4.0.0","typescript":"^5.3.3","@types/node":"^24.1.0","typescript-eslint":"^8.0.0","@vitest/coverage-v8":"^4.0.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.5.6"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-gsheets_1.10.3_1789817654876_0.13222412095443414"}}},"time":{"created":"2025-06-04T04:38:36.503Z","modified":"2026-09-19T11:34:15.292Z","1.0.0":"2025-06-04T04:38:36.703Z","1.3.0":"2025-08-28T11:52:29.960Z","1.4.1":"2025-08-28T12:00:48.944Z","1.4.3":"2025-08-28T12:29:24.034Z","1.5.0":"2025-09-22T13:03:07.916Z","1.5.2":"2025-10-09T16:33:17.122Z","1.5.3":"2025-11-04T19:25:04.890Z","1.5.4":"2025-12-09T08:17:20.227Z","1.6.0":"2026-02-04T08:57:32.689Z","1.7.0":"2026-04-16T11:52:52.224Z","1.7.1":"2026-04-16T12:20:54.014Z","1.8.0":"2026-04-21T14:24:31.515Z","1.8.1":"2026-04-26T12:09:11.393Z","1.9.0":"2026-07-10T04:19:33.679Z","1.10.0":"2026-07-27T07:46:09.847Z","1.10.1":"2026-08-10T14:05:23.139Z","1.10.2":"2026-08-16T08:56:29.851Z","1.10.3":"2026-09-19T11:34:14.982Z"},"bugs":{"url":"https://github.com/freema/mcp-gsheets/issues"},"author":{"name":"freema"},"license":"MIT","homepage":"https://github.com/freema/mcp-gsheets#readme","keywords":["mcp","model-context-protocol","google-sheets","spreadsheet","api","claude","ai"],"repository":{"url":"git+https://github.com/freema/mcp-gsheets.git","type":"git"},"description":"Model Context Protocol (MCP) server for Google Sheets API integration","maintainers":[{"name":"freema","email":"grasl.t@centrum.cz"}],"readme":"<!-- mcp-name: io.github.freema/mcp-gsheets -->\n\n# MCP Google Sheets Server\n\n<a href=\"https://glama.ai/mcp/servers/@freema/mcp-gsheets\">\n  <img width=\"380\" height=\"200\" src=\"https://glama.ai/mcp/servers/@freema/mcp-gsheets/badge\" />\n</a>\n\n[![npm version](https://badge.fury.io/js/mcp-gsheets.svg)](https://www.npmjs.com/package/mcp-gsheets)\n![CI](https://github.com/freema/mcp-gsheets/workflows/CI/badge.svg)\n![Coverage](https://codecov.io/gh/freema/mcp-gsheets/branch/main/graph/badge.svg)\n![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)\n![TypeScript](https://img.shields.io/badge/TypeScript-5.0%2B-007ACC?logo=typescript&logoColor=white)\n![Node](https://img.shields.io/badge/Node.js-20%2B-339933?logo=node.js&logoColor=white)\n![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?logo=prettier&logoColor=white)\n\nA Model Context Protocol (MCP) server for Google Sheets API integration. Enables reading, writing, and managing Google Sheets documents directly from your MCP client (e.g., Claude Code, Claude Desktop, Cursor, etc.).\n\n## Key Features\n\n- **Complete Google Sheets Integration**: Read, write, and manage spreadsheets\n- **Advanced Operations**: Batch operations, formatting, charts, and conditional formatting\n- **Flexible Authentication**: Support for both file-based and JSON string credentials\n- **Production Ready**: Built with TypeScript, comprehensive error handling, and full test coverage\n\n## Requirements\n\n- [Node.js](https://nodejs.org/) v20 or higher\n- [Google Cloud Project](https://console.cloud.google.com) with Sheets API enabled\n- Service Account with JSON key file\n- [npm](https://www.npmjs.com/)\n\n## Getting Started\n\n### Quick Install (Recommended)\n\nAdd the following config to your MCP client:\n\n```json\n{\n  \"mcpServers\": {\n    \"mcp-gsheets\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"mcp-gsheets@latest\"],\n      \"env\": {\n        \"GOOGLE_PROJECT_ID\": \"your-project-id\",\n        \"GOOGLE_APPLICATION_CREDENTIALS\": \"/absolute/path/to/service-account-key.json\"\n      }\n    }\n  }\n}\n```\n\n> [!NOTE]\n> Using `mcp-gsheets@latest` ensures that your MCP client will always use the latest version of the MCP Google Sheets server.\n\n### MCP Client Configuration\n\n<details>\n  <summary>Claude Code</summary>\n  Use the Claude Code CLI to add the MCP Google Sheets server (<a href=\"https://docs.anthropic.com/en/docs/claude-code/mcp\">guide</a>):\n\n```bash\nclaude mcp add mcp-gsheets npx mcp-gsheets@latest\n```\n\nAfter adding, edit your Claude Code config to add the required environment variables:\n\n```json\n{\n  \"mcpServers\": {\n    \"mcp-gsheets\": {\n      \"command\": \"npx\",\n      \"args\": [\"mcp-gsheets@latest\"],\n      \"env\": {\n        \"GOOGLE_PROJECT_ID\": \"your-project-id\",\n        \"GOOGLE_APPLICATION_CREDENTIALS\": \"/absolute/path/to/service-account-key.json\"\n      }\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Claude Desktop</summary>\n\nAdd to your Claude Desktop config:\n- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`\n- Windows: `%APPDATA%\\Claude\\claude_desktop_config.json`\n- Linux: `~/.config/claude/claude_desktop_config.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"mcp-gsheets\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"mcp-gsheets@latest\"],\n      \"env\": {\n        \"GOOGLE_PROJECT_ID\": \"your-project-id\",\n        \"GOOGLE_APPLICATION_CREDENTIALS\": \"/absolute/path/to/service-account-key.json\"\n      }\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Cursor</summary>\n\nGo to `Cursor Settings` → `MCP` → `New MCP Server`. Use the config provided above.\n\n</details>\n\n<details>\n  <summary>Cline</summary>\n\nFollow https://docs.cline.bot/mcp/configuring-mcp-servers and use the config provided above.\n\n</details>\n\n<details>\n  <summary>Other MCP Clients</summary>\n\nFor other MCP clients, use the standard configuration format shown above. Ensure the `command` is set to `npx` and include the environment variables for Google Cloud authentication.\n\n</details>\n\n### Google Cloud Setup\n\n1. Go to [Google Cloud Console](https://console.cloud.google.com)\n2. Create a new project or select existing\n3. Enable Google Sheets API:\n   - Navigate to \"APIs & Services\" → \"Library\"\n   - Search for \"Google Sheets API\" and click \"Enable\"\n4. Create Service Account:\n   - Go to \"APIs & Services\" → \"Credentials\"\n   - Click \"Create Credentials\" → \"Service Account\"\n   - In the service accounts list, click the three dots in the `Actions` column → `Manage keys` → `Add key` → `Create new key` → select JSON format\n   - Download the JSON key file\n5. Share your spreadsheets:\n   - Open your Google Sheet\n   - Click Share and add the service account email (from JSON file)\n   - Grant \"Editor\" permissions\n\n### Alternative Authentication Methods\n\n#### Option 1: JSON String Authentication\n\nInstead of using a file path for credentials, you can provide the service account credentials directly as a JSON string. This is useful for containerized environments, CI/CD pipelines, or when you want to avoid managing credential files.\n\n```json\n{\n  \"mcpServers\": {\n    \"mcp-gsheets\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"mcp-gsheets@latest\"],\n      \"env\": {\n        \"GOOGLE_PROJECT_ID\": \"your-project-id\",\n        \"GOOGLE_SERVICE_ACCOUNT_KEY\": \"{\\\"type\\\":\\\"service_account\\\",\\\"project_id\\\":\\\"your-project\\\",\\\"private_key_id\\\":\\\"...\\\",\\\"private_key\\\":\\\"-----BEGIN PRIVATE KEY-----\\\\n...\\\\n-----END PRIVATE KEY-----\\\\n\\\",\\\"client_email\\\":\\\"...@....iam.gserviceaccount.com\\\",\\\"client_id\\\":\\\"...\\\",\\\"auth_uri\\\":\\\"https://accounts.google.com/o/oauth2/auth\\\",\\\"token_uri\\\":\\\"https://oauth2.googleapis.com/token\\\",\\\"auth_provider_x509_cert_url\\\":\\\"https://www.googleapis.com/oauth2/v1/certs\\\",\\\"client_x509_cert_url\\\":\\\"...\\\"}\"\n      }\n    }\n  }\n}\n```\n\n**Note**: When using `GOOGLE_SERVICE_ACCOUNT_KEY`:\n- The entire JSON must be on a single line\n- All quotes must be escaped with backslashes\n- Newlines in the private key must be represented as `\\\\n`\n- If the JSON includes a `project_id`, you can omit `GOOGLE_PROJECT_ID`\n\n#### Option 2: Private Key Authentication (Simplified)\n\nFor the most user-friendly approach, you can provide just the private key and email directly. This is the simplest method and requires only two fields from your service account JSON:\n\n```json\n{\n  \"mcpServers\": {\n    \"mcp-gsheets\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"mcp-gsheets@latest\"],\n      \"env\": {\n        \"GOOGLE_PRIVATE_KEY\": \"-----BEGIN PRIVATE KEY-----\\\\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCgR6bvMNOUHZ29\\\\n+YgbVHAXsT/s+L/jnXTCB193zikCzspSBSfxLu8VRDjkNq9WUoDxizTATzMFNvNf\\\\n...\\\\n-----END PRIVATE KEY-----\\\\n\",\n        \"GOOGLE_CLIENT_EMAIL\": \"spreadsheet@your-project.iam.gserviceaccount.com\"\n      }\n    }\n  }\n}\n```\n\n**Note**: When using `GOOGLE_PRIVATE_KEY`:\n- Newlines in the private key should be represented as `\\\\n`\n- The private key must include the `-----BEGIN PRIVATE KEY-----` and `-----END PRIVATE KEY-----` markers\n- The client email should be the service account email from your JSON file\n- `GOOGLE_PROJECT_ID` is optional when using this method\n\n## Local Development Setup\n\nIf you want to develop or contribute to this project, you can clone and build it locally:\n\n```bash\n# Clone the repository\ngit clone https://github.com/freema/mcp-gsheets.git\ncd mcp-gsheets\n\n# Install dependencies\nnpm install\n\n# Build the project\nnpm run build\n```\n\n### Interactive Setup Script\n\nRun the interactive setup script to configure your local MCP client:\n\n```bash\nnpm run setup\n```\n\nThis will:\n- Guide you through the configuration\n- Automatically detect your Node.js installation (including nvm)\n- Find your Claude Desktop config\n- Create the proper JSON configuration\n- Optionally create a .env file for development\n\n### Manual Local Configuration\n\nIf you prefer manual configuration with a local build, add to your MCP client config:\n\n```json\n{\n  \"mcpServers\": {\n    \"mcp-gsheets\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/mcp-gsheets/dist/index.js\"],\n      \"env\": {\n        \"GOOGLE_PROJECT_ID\": \"your-project-id\",\n        \"GOOGLE_APPLICATION_CREDENTIALS\": \"/absolute/path/to/service-account-key.json\"\n      }\n    }\n  }\n}\n```\n\n## 📦 Build & Development\n\n### Development Commands\n\n```bash\n# Development mode with hot reload\nnpm run dev\n\n# Build for production\nnpm run build\n\n# Type checking\nnpm run typecheck\n\n# Clean build artifacts\nnpm run clean\n\n# Run MCP inspector for debugging\nnpm run inspector\n\n# Run MCP inspector in development mode\nnpm run inspector:dev\n```\n\n### Task Runner (Alternative)\n\nIf you have [Task](https://taskfile.dev) installed:\n\n```bash\n# Install dependencies\ntask install\n\n# Build the project\ntask build\n\n# Run in development mode\ntask dev\n\n# Run linter\ntask lint\n\n# Format code\ntask fmt\n\n# Run all checks\ntask check\n```\n\n### Development Setup\n\n1. Create `.env` file for testing:\n```bash\ncp .env.example .env\n# Edit .env with your credentials:\n# GOOGLE_PROJECT_ID=your-project-id\n# GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json\n# TEST_SPREADSHEET_ID=your-test-spreadsheet-id\n```\n\n2. Run in development mode:\n```bash\nnpm run dev  # Watch mode with auto-reload\n```\n\n## 🎚️ Reducing context cost with toolsets\n\nAll 44 tools together cost about **9,900 tokens of context in every session**,\nbefore the model does anything. Most workflows need a fraction of that.\n`GSHEETS_TOOLSETS` limits which tools the server exposes:\n\n```json\n{\n  \"mcpServers\": {\n    \"gsheets\": {\n      \"command\": \"npx\",\n      \"args\": [\"mcp-gsheets\"],\n      \"env\": {\n        \"GOOGLE_PROJECT_ID\": \"your-project-id\",\n        \"GOOGLE_APPLICATION_CREDENTIALS\": \"/path/to/key.json\",\n        \"GSHEETS_TOOLSETS\": \"core,charts\"\n      }\n    }\n  }\n}\n```\n\n| Toolset | Tools | What it covers |\n|---|---|---|\n| `core` | 11 | Read/write values, metadata, sheet structure, create spreadsheet |\n| `sheets` | 9 | Sheet lifecycle, rows and columns |\n| `formatting` | 15 | Colours, borders, merges, conditional rules, links, dates |\n| `charts` | 3 | Create, update, delete charts |\n| `tables` | 4 | Native tables |\n| `analysis` | 2 | Full-sheet snapshot, range comparison |\n\nMeasured `tools/list` cost:\n\n| Configuration | Tools | ≈ Tokens |\n|---|---|---|\n| _unset_ (default, all toolsets) | 44 | 9,875 |\n| `GSHEETS_TOOLSETS=core` | 11 | 1,986 |\n| `GSHEETS_TOOLSETS=core,sheets` | 20 | 3,548 |\n| `GSHEETS_READ_ONLY=true` | 16 | 3,599 |\n| `GSHEETS_TOOLSETS=core` + read-only | 6 | 912 |\n\nNotes:\n\n- **The default is unchanged** — leave `GSHEETS_TOOLSETS` unset and you get\n  every tool, exactly as before.\n- **`core` is always included.** `GSHEETS_TOOLSETS=charts` means \"charts as\n  well as core\", not \"charts only\" — without core the server cannot read a cell.\n- **A typo is a startup error**, not a silently smaller tool list.\n- `GSHEETS_READ_ONLY=true` drops every writing tool and can be combined with\n  `GSHEETS_TOOLSETS`. It is enforced when a tool is called, not just when the\n  list is built, so a client cannot write by naming a hidden tool.\n\nAll tools also carry MCP annotations (`readOnlyHint`, `destructiveHint`,\n`idempotentHint`), so clients can skip confirmation prompts on reads and warn\nbefore destructive operations.\n\n## 📋 Available Tools\n\n### Reading Data\n\n| Tool | Description | Key Parameters |\n|------|-------------|----------------|\n| `sheets_get_values` | Read cell values from a single range | `spreadsheetId`, `range` (A1 notation), `valueRenderOption` |\n| `sheets_batch_get_values` | Read cell values from multiple ranges in one request | `spreadsheetId`, `ranges` (array of A1 ranges) |\n| `sheets_get_metadata` | Get spreadsheet metadata: title, locale, sheets list with IDs, row/column counts | `spreadsheetId` |\n| `sheets_check_access` | Verify that the service account can access a spreadsheet | `spreadsheetId` |\n\n### Writing Data\n\n| Tool | Description | Key Parameters |\n|------|-------------|----------------|\n| `sheets_update_values` | Write values to a single range (overwrites existing content) | `spreadsheetId`, `range`, `values` (2D array), `valueInputOption` |\n| `sheets_batch_update_values` | Write values to multiple ranges in one request | `spreadsheetId`, `data` (array of `{range, values}`), `valueInputOption` |\n| `sheets_append_values` | Append rows after the last row of an existing table. **Default `insertDataOption` is `OVERWRITE`** — set `INSERT_ROWS` to push existing rows down | `spreadsheetId`, `range`, `values`, `valueInputOption`, `insertDataOption` |\n| `sheets_clear_values` | Clear all values in a range (preserves formatting) | `spreadsheetId`, `range` |\n| `sheets_insert_rows` | Insert blank or pre-filled rows at a specific position | `spreadsheetId`, `range` (anchor), `rows`, `position` (BEFORE/AFTER), `values` |\n| `sheets_delete_columns` | Delete one or more columns using a full-column A1 range | `spreadsheetId`, `range` (e.g. `Sheet1!B:D`) |\n| `sheets_delete_rows` | Delete one or more rows using a full-row A1 range | `spreadsheetId`, `range` (e.g. `Sheet1!2:4`) |\n| `sheets_insert_link` | Insert a hyperlink formula into a cell | `spreadsheetId`, `range`, `url`, `label` |\n| `sheets_insert_date` | Insert a date/datetime value formatted correctly into a cell | `spreadsheetId`, `range`, `date`, `format` |\n\n### Sheet Management\n\n| Tool | Description | Key Parameters |\n|------|-------------|----------------|\n| `sheets_create_spreadsheet` | Create a new Google Sheets file | `title`, `sheets` (optional initial sheet configs) |\n| `sheets_insert_sheet` | Add a new sheet tab to an existing spreadsheet | `spreadsheetId`, `title`, `index` |\n| `sheets_delete_sheet` | Remove a sheet tab by its numeric sheet ID | `spreadsheetId`, `sheetId` |\n| `sheets_duplicate_sheet` | Copy a sheet within the same spreadsheet | `spreadsheetId`, `sheetId`, `newSheetName`, `insertSheetIndex` |\n| `sheets_copy_to` | Copy a sheet to a different spreadsheet | `spreadsheetId`, `sheetId`, `destinationSpreadsheetId` |\n| `sheets_update_sheet_properties` | Rename a sheet, change tab colour, toggle grid lines, etc. | `spreadsheetId`, `sheetId`, `properties` |\n| `sheets_batch_delete_sheets` | Delete multiple sheet tabs in one request | `spreadsheetId`, `sheetIds` (array) |\n\n### Cell Formatting\n\n| Tool | Description | Key Parameters |\n|------|-------------|----------------|\n| `sheets_format_cells` | Apply background colour, font style, alignment and number format to a range | `spreadsheetId`, `range`, `format` |\n| `sheets_batch_format_cells` | Apply different formats to multiple ranges in one request | `spreadsheetId`, `requests` (array of `{range, format}`) |\n| `sheets_update_borders` | Set or remove borders on a range (style, width, colour per side) | `spreadsheetId`, `range`, `borders` |\n| `sheets_merge_cells` | Merge a range of cells | `spreadsheetId`, `range`, `mergeType` (MERGE_ALL / MERGE_COLUMNS / MERGE_ROWS) |\n| `sheets_unmerge_cells` | Unmerge previously merged cells in a range | `spreadsheetId`, `range` |\n| `sheets_add_conditional_formatting` | Add a conditional formatting rule (gradient or boolean) to a range | `spreadsheetId`, `range`, `rule` |\n\n### Native Tables\n\n| Tool | Description | Key Parameters |\n|------|-------------|----------------|\n| `sheets_add_table` | Create a native Google Sheets table with typed columns and optional dropdown values | `spreadsheetId`, `sheetName`, `range`, `name`, `columns` |\n| `sheets_update_table` | Update an existing native Google Sheets table by table ID using an explicit field mask | `spreadsheetId`, `tableId`, `fields`, `name`, `range`, `columns` |\n| `sheets_delete_table` | Delete a native Google Sheets table by table ID | `spreadsheetId`, `tableId` |\n| `sheets_get_tables` | Read native tables for a spreadsheet or a specific sheet | `spreadsheetId`, `sheetName` |\n\n### Charts\n\n| Tool | Description | Key Parameters |\n|------|-------------|----------------|\n| `sheets_create_chart` | Create a bar, line, pie, column or other chart on a sheet | `spreadsheetId`, `sheetId`, `chartSpec`, `position` |\n| `sheets_update_chart` | Modify an existing chart's spec or position | `spreadsheetId`, `chartId`, `chartSpec`, `position` |\n| `sheets_delete_chart` | Remove a chart from a spreadsheet | `spreadsheetId`, `chartId` |\n\n### Read / Snapshot Tools\n\n| Tool | Description | Key Parameters |\n|------|-------------|----------------|\n| `sheets_get_merged_cells` | Return all merged cell ranges for a sheet, with A1 notation and raw GridRange coordinates | `spreadsheetId`, `sheetName` |\n| `sheets_get_sheet_dimensions` | Return column widths, row heights, frozen column/row counts, and hidden flags for every column and row | `spreadsheetId`, `sheetName` |\n| `sheets_get_sheet_formatting` | Read raw cell formatting (background colour, font, borders, alignment, number format) for a range without returning cell values | `spreadsheetId`, `range` |\n| `sheets_get_conditional_formatting` | Read all conditional formatting rules and banded (alternating-colour) ranges defined on a sheet | `spreadsheetId`, `sheetName` |\n| `sheets_get_sheet_structure` | Lightweight structural metadata only — no per-cell data. Returns dimensions, frozen rows/cols, tab colour, column widths, row heights, hidden columns/rows, and all merges in A1 notation. Single fast API call | `spreadsheetId`, `sheetName` |\n| `sheets_get_formatting_compact` | Read cell formatting for a range and return it as compact A1Range→format pairs (run-length encoded). Identical adjacent cells are collapsed into rectangular ranges — reduces output by 90 %+ compared to per-cell data | `spreadsheetId`, `sheetName`, `range`, `useEffectiveFormat`, `fields` |\n| `sheets_get_full_sheet_snapshot` | Master one-shot tool — returns all structural and formatting metadata (merges, dimensions, conditional formatting, and optionally cell formatting) in a single API call. Supports `fields` filter and `compactMode` to limit response size | `spreadsheetId`, `sheetName`, `includeFormattingRange`, `fields`, `compactMode` |\n| `sheets_get_basic_filter` | Read the Basic Filter (AutoFilter) configuration for a sheet, including filtered range, sort specs, and per-column filter criteria (hidden values, conditions, colour filters) | `spreadsheetId`, `sheetName` |\n| `sheets_get_data_validation` | Read data validation rules (checkboxes, dropdowns, custom formulas) from a sheet or range. Returns compact run-length-encoded list of unique rules grouped by cell ranges | `spreadsheetId`, `sheetName`, `range` |\n\n## 🔧 Code Quality\n\n### Linting\n\n```bash\n# Run ESLint\nnpm run lint\n\n# Fix auto-fixable issues\nnpm run lint:fix\n```\n\n### Formatting\n\n```bash\n# Check formatting with Prettier\nnpm run format:check\n\n# Format code\nnpm run format\n```\n\n### Type Checking\n\n```bash\n# Run TypeScript type checking\nnpm run typecheck\n```\n\n## ❗ Troubleshooting\n\n### Common Issues\n\n**\"Authentication failed\"**\n- If using file-based auth: Verify JSON key path is absolute and correct\n- If using JSON string auth: Ensure JSON is properly escaped and valid\n- If using private key auth: Check that the private key includes BEGIN/END markers and newlines are escaped as `\\\\n`\n- Verify GOOGLE_CLIENT_EMAIL is a valid service account email\n- Check GOOGLE_PROJECT_ID matches your project (or is included in JSON for full JSON auth)\n- Ensure Sheets API is enabled\n\n**\"Permission denied\"**\n- Share spreadsheet with service account email\n- Service account needs \"Editor\" role\n- Check email in JSON file (client_email field)\n\n**\"Spreadsheet not found\"**\n- Verify spreadsheet ID from URL\n- Format: `https://docs.google.com/spreadsheets/d/[SPREADSHEET_ID]/edit`\n\n**MCP Connection Issues**\n- Ensure you're using the built version (`dist/index.js`)\n- Check that Node.js path is correct in Claude Desktop config\n- Look for errors in Claude Desktop logs\n- Use `npm run inspector` to debug\n\n## 🔍 Finding IDs\n\n### Spreadsheet ID\nFrom the URL:\n```\nhttps://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit\n                                        ↑ This is the spreadsheet ID\n```\n\n### Sheet ID\nUse `sheets_get_metadata` to list all sheets with their IDs.\n\n## 📝 Tips\n\n1. Always test with a copy of your data\n2. Use batch operations for better performance\n3. Set appropriate permissions (read-only vs edit)\n4. Check rate limits for large operations\n5. Use `sheets_check_access` to verify permissions before operations\n\n## 📘 Tool Details\n\n### sheets_get_sheet_structure\n\nReturns lightweight structural/dimensional metadata for a sheet without any per-cell data. Much faster and cheaper than `sheets_get_full_sheet_snapshot` when you only need layout information.\n\n**Parameters:**\n- `spreadsheetId` (required): The ID of the spreadsheet\n- `sheetName` (required): Name of the sheet (tab)\n\n**Returns:** `sheetName`, `sheetId`, `sheetIndex`, `tabColor`, `tabColorStyle`, `dimensions` (`rowCount`, `columnCount`), `frozen` (`rowCount`, `columnCount`), `columnWidths` (array of pixel sizes), `rowHeights` (array of pixel sizes), `hiddenColumns` (0-based indices), `hiddenRows` (0-based indices), `mergeCount`, `merges` (A1 notation array)\n\n---\n\n### sheets_get_formatting_compact\n\nRead cell formatting for a range and return it as compact A1Range → format pairs. Adjacent cells with identical formatting are collapsed into rectangular ranges (run-length encoded), reducing output by 90 %+ compared to per-cell data.\n\n**Parameters:**\n- `spreadsheetId` (required): The ID of the spreadsheet\n- `sheetName` (required): Name of the sheet (tab)\n- `range` (required): Range without sheet prefix, e.g. `\"A1:Z85\"`\n- `useEffectiveFormat` (optional): `false` (default) = userEnteredFormat (only explicit overrides, smaller output); `true` = effectiveFormat (all inherited defaults)\n- `fields` (optional): Array of format field names to include, e.g. `[\"backgroundColor\", \"textFormat\", \"borders\"]`\n\n**Returns:** `{ range, formatType, rangeCount, data: { \"A1:C3\": { backgroundColor: {...} }, ... } }`\n\n**Supported fields:** `backgroundColor`, `backgroundColorStyle`, `textFormat`, `horizontalAlignment`, `verticalAlignment`, `wrapStrategy`, `textRotation`, `numberFormat`, `padding`, `borders`\n\n---\n\n### sheets_get_full_sheet_snapshot\n\nMaster one-shot tool that returns all structural and formatting metadata in a single API call.\n\n**Parameters:**\n- `spreadsheetId` (required): The ID of the spreadsheet\n- `sheetName` (required): Name of the sheet (tab)\n- `includeFormattingRange` (optional): If provided (e.g. `\"A1:Z100\"`), per-cell formatting is included in the response\n- `useEffectiveFormat` (optional): Use effectiveFormat instead of userEnteredFormat when including cell formatting (default: `false`)\n- `fields` (optional): Array of format field names to return, e.g. `[\"backgroundColor\", \"textFormat\"]` — reduces API transfer size and response size\n- `compactMode` (optional): When `true`, identical adjacent cells are collapsed into rectangular ranges (RLE). Reduces a typical 85×28 sheet from ~60 000 lines to ~500 lines (default: `false`)\n\n---\n\n\n\n### sheets_insert_rows\n\nInsert new rows at a specific position in a spreadsheet with optional data.\n\n**Parameters:**\n- `spreadsheetId` (required): The ID of the spreadsheet\n- `range` (required): A1 notation anchor point where rows will be inserted (e.g., \"Sheet1!A5\")\n- `rows` (optional): Number of rows to insert (default: 1)\n- `position` (optional): 'BEFORE' or 'AFTER' the anchor row (default: 'BEFORE')\n- `inheritFromBefore` (optional): Whether to inherit formatting from the row before (default: false)\n- `values` (optional): 2D array of values to fill the newly inserted rows\n- `valueInputOption` (optional): 'RAW' or 'USER_ENTERED' (default: 'USER_ENTERED')\n\n**Examples:**\n\n```javascript\n// Insert 1 empty row before row 5\n{\n  \"spreadsheetId\": \"your-spreadsheet-id\",\n  \"range\": \"Sheet1!A5\"\n}\n\n// Insert 3 rows after row 10 with data\n{\n  \"spreadsheetId\": \"your-spreadsheet-id\",\n  \"range\": \"Sheet1!A10\",\n  \"rows\": 3,\n  \"position\": \"AFTER\",\n  \"values\": [\n    [\"John\", \"Doe\", \"john@example.com\"],\n    [\"Jane\", \"Smith\", \"jane@example.com\"],\n    [\"Bob\", \"Johnson\", \"bob@example.com\"]\n  ]\n}\n```\n\n### sheets_delete_columns\n\nDelete one or more columns from a sheet using a full-column A1 range.\n\n**Parameters:**\n- `spreadsheetId` (required): The ID of the spreadsheet\n- `range` (required): Full-column A1 range to delete (e.g., \"Sheet1!B:D\" or \"Sheet1!C:C\")\n\n**Examples:**\n\n```javascript\n// Delete columns B through D from Sheet1\n{\n  \"spreadsheetId\": \"your-spreadsheet-id\",\n  \"range\": \"Sheet1!B:D\"\n}\n\n// Delete a single column from the first sheet\n{\n  \"spreadsheetId\": \"your-spreadsheet-id\",\n  \"range\": \"C:C\"\n}\n```\n\n### sheets_delete_rows\n\nDelete one or more rows from a sheet using a full-row A1 range.\n\n**Parameters:**\n- `spreadsheetId` (required): The ID of the spreadsheet\n- `range` (required): Full-row A1 range to delete (e.g., \"Sheet1!2:4\" or \"Sheet1!3:3\")\n\n**Examples:**\n\n```javascript\n// Delete rows 2 through 4 from Sheet1\n{\n  \"spreadsheetId\": \"your-spreadsheet-id\",\n  \"range\": \"Sheet1!2:4\"\n}\n\n// Delete a single row from the first sheet\n{\n  \"spreadsheetId\": \"your-spreadsheet-id\",\n  \"range\": \"3:3\"\n}\n```\n\n## 📋 Changelog\n\nSee [CHANGELOG.md](CHANGELOG.md) for a list of changes in each version.\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Run tests and linting (`npm run check`)\n4. Commit your changes (`git commit -m 'Add some amazing feature'`)\n5. Push to the branch (`git push origin feature/amazing-feature`)\n6. Open a Pull Request\n\n## 👤 Author\n\n**Tomáš Grásl** - [tomasgrasl.cz](https://www.tomasgrasl.cz/)\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","readmeFilename":"README.md"}