getSpreadsheetLABSCO SUMMARY
Your Apps Script holds the permissions, not this server.
That is the whole design: by routing through a web app you deployed, the Google authorisation stays with a script under your control and the assistant never receives a Google credential. The cost is a setup step nobody else asks for — you have to write and deploy the Apps Script first. Output as markdown tables is a small thing that matters, since a model reads a table far better than serialised cells.
What it is
A read path to Google Sheets that deliberately avoids the Google authentication dance. Instead of holding OAuth credentials, it calls a Google Apps Script web app you deploy yourself, which does the sheet access — so the permissions stay inside your own script and the server only holds its URL and key.
What you get
- A spreadsheet's basic information from its URL — name, id and the list of sheets with their row and column counts —
getSpreadsheet - One named sheet's data, returned formatted as a markdown table so the model reads a grid rather than a flat blob —
getSheetData - A mock mode that returns test data when the environment variables are unset, so the wiring can be exercised before any real sheet is connected
Requirements
A Google Apps Script web app that you create and deploy, implementing the sheet-access API described in the repository, plus an access key you choose. Then two environment variables: GAS_WEB_APP_URL pointing at the deployment, and GAS_API_KEY. Node.js; install from a clone with npm install and npm run build, then point your client at build/index.js. With the variables unset the server runs in mock mode and does not touch any real spreadsheet.
Setup effort
Build from source — git clone https://github.com/HosakaKeigo/spreadsheet-mcp-server.git
USE CASES
Asking questions about a spreadsheet you maintain
Point at the sheet URL and have its rows read back as a table the model can reason over.
Finding the right tab in a large workbook
Read the sheet list with row and column counts before pulling any data.
Connecting sheets without handing over Google credentials
Deploy the Apps Script yourself and give the server only its URL and key, keeping the sheet permissions on your side.
2 tools
Listed in project docs. Your client may show a different list.
getSheetDataBEFORE YOU INSTALL
What to know first
Tools you get
2 tools named in the project's documentation.
Requires
- GAS_API_KEY in your environment
- GAS_WEB_APP_URL in your environment
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Server setup
git clone https://github.com/HosakaKeigo/spreadsheet-mcp-server.git
cd spreadsheet-mcp-server
npm install
npm run buildMCP Clients
Claude Desktop
{
"mcpServers": {
"spreadsheet": {
"command": "node",
"args": [
"<YOUR_ABSOLUTE_PATH_TO_PROJECT>/build/index.js"
],
"env": {
"GAS_WEB_APP_URL": "https://script.google.com/macros/s/<YOUR_DEPLOYMENT_ID>/exec",
"GAS_API_KEY": "<YOUR_GAS_API_KEY>"
}
}
}
}