Agent-Native Calendar
Agent-Native Google Calendar - manage events, sync, and public booking
Description from the maker (original English)
MCP server for Google Sheets API — read, write, format, batch operations.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
You need
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"gsheets": {
"command": "npx",
"args": [
"-y",
"mcp-gsheets"
],
"env": {
"GOOGLE_PROJECT_ID": "your-value",
"GOOGLE_APPLICATION_CREDENTIALS": "your-value",
"GOOGLE_SERVICE_ACCOUNT_KEY": "your-value",
"GOOGLE_PRIVATE_KEY": "your-value",
"GOOGLE_CLIENT_EMAIL": "your-value"
}
}
}
}Run this in your terminal
claude mcp add gsheets --env GOOGLE_PROJECT_ID=your-value --env GOOGLE_APPLICATION_CREDENTIALS=your-value --env GOOGLE_SERVICE_ACCOUNT_KEY=your-value --env GOOGLE_PRIVATE_KEY=your-value --env GOOGLE_CLIENT_EMAIL=your-value -- npx -y mcp-gsheetsPaste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"gsheets": {
"command": "npx",
"args": [
"-y",
"mcp-gsheets"
],
"env": {
"GOOGLE_PROJECT_ID": "your-value",
"GOOGLE_APPLICATION_CREDENTIALS": "your-value",
"GOOGLE_SERVICE_ACCOUNT_KEY": "your-value",
"GOOGLE_PRIVATE_KEY": "your-value",
"GOOGLE_CLIENT_EMAIL": "your-value"
}
}
}
}Paste into .vscode/mcp.json in your project
{
"servers": {
"gsheets": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mcp-gsheets"
],
"env": {
"GOOGLE_PROJECT_ID": "your-value",
"GOOGLE_APPLICATION_CREDENTIALS": "your-value",
"GOOGLE_SERVICE_ACCOUNT_KEY": "your-value",
"GOOGLE_PRIVATE_KEY": "your-value",
"GOOGLE_CLIENT_EMAIL": "your-value"
}
}
}
}GOOGLE_APPLICATION_CREDENTIALS envGOOGLE_CLIENT_EMAIL envValues marked secret are keys to your account. Never share them or paste them into a chat.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 5, 2026
The registry name was verified with the GitHub account freema, which owns the repo
Code last changed 4 days ago
Uses MIT
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Needs the server’s tool list first; this check starts in the next step
Compared only with servers in this prototype, not the whole registry.
It passed 3 of 3 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: GOOGLE_PROJECT_ID, GOOGLE_SERVICE_ACCOUNT_KEY, GOOGLE_PRIVATE_KEY
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed 4 days ago, and the latest version (1.11.0) reached the registry 11 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: Agent-Native Calendar, Excel MCP Server, MCP Server for Excel
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Agent-Native Google Calendar - manage events, sync, and public booking
Lets AI create and edit Excel files itself, including formulas, charts and PivotTables, without Excel installed.
Excel automation for AI - Sheets, Power Query, DAX, VBA, Tables, Ranges and more. Windows only.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
A 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.).
Add the following config to your MCP client:
{
"mcpServers": { "mcp-gsheets": { "command": "npx", "args": ["-y", "mcp-gsheets@latest"], "env": { "GOOGLE_PROJECT_ID": "your-project-id", "GOOGLE_APPLICATION_CREDENTIALS": "/absolute/path/to/service-account-key.json" } } } }
[!NOTE]
Using
mcp-gsheets@latestensures that your MCP client will always use the latest version of the MCP Google Sheets server.
Claude Code Use the Claude Code CLI to add the MCP Google Sheets server ( guide ):
claude mcp add mcp-gsheets npx mcp-gsheets@latest
After adding, edit your Claude Code config to add the required environment variables:
{
"mcpServers": { "mcp-gsheets": { "command": "npx", "args": ["mcp-gsheets@latest"], "env": { "GOOGLE_PROJECT_ID": "your-project-id", "GOOGLE_APPLICATION_CREDENTIALS": "/absolute/path/to/service-account-key.json" } } } }
Claude Desktop
Add to your Claude Desktop config:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/claude/claude_desktop_config.json{
"mcpServers": { "mcp-gsheets": { "command": "npx", "args": ["-y", "mcp-gsheets@latest"], "env": { "GOOGLE_PROJECT_ID": "your-project-id", "GOOGLE_APPLICATION_CREDENTIALS": "/absolute/path/to/service-account-key.json" } } } }
Cursor
Go to Cursor Settings → MCP → New MCP Server. Use the config provided above.
Cline
Follow https://docs.cline.bot/mcp/configuring-mcp-servers and use the config provided above.
Other MCP Clients
For 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.
Actions column → Manage keys → Add key → Create new key → select JSON formatInstead 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.
{
"mcpServers": { "mcp-gsheets": { "command": "npx", "args": ["-y", "mcp-gsheets@latest"], "env": { "GOOGLE_PROJECT_ID": "your-project-id", "GOOGLE_SERVICE_ACCOUNT_KEY": "{\"type\":\"service_account\",\"project_id\":\"your-project\",\"private_key_id\":\"...\",\"private_key\":\"[PopNx MCP ตัดค่าที่หน้าตาเหมือนกุญแจออก]\\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\":\"...\"}" } } } }
Note: When using GOOGLE_SERVICE_ACCOUNT_KEY:
\\nproject_id, you can omit GOOGLE_PROJECT_IDFor 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:
{
"mcpServers": { "mcp-gsheets": { "command": "npx", "args": ["-y", "mcp-gsheets@latest"], "env": { "GOOGLE_PRIVATE_KEY": "[PopNx MCP ตัดค่าที่หน้าตาเหมือนกุญแจออก]\\n", "GOOGLE_CLIENT_EMAIL": "spreadsheet@your-project.iam.gserviceaccount.com" } } } }
Note: When using GOOGLE_PRIVATE_KEY:
\\n[PopNx MCP ตัดค่าที่หน้าตาเหมือนกุญแจออก] markersGOOGLE_PROJECT_ID is optional when using this methodIf you want to develop or contribute to this project, you can clone and build it locally:
# Clone the repository
git clone https://github.com/freema/mcp-gsheets.git cd mcp-gsheets
npm install
npm run build
Run the interactive setup script to configure your local MCP client:
npm run setup
This will:
If you prefer manual configuration with a local build, add to your MCP client config:
{
"mcpServers": { "mcp-gsheets": { "command": "node", "args": ["/absolute/path/to/mcp-gsheets/dist/index.js"], "env": { "GOOGLE_PROJECT_ID": "your-project-id", "GOOGLE_APPLICATION_CREDENTIALS": "/absolute/path/to/service-account-key.json" } } } }
# Development mode with hot reload
npm run dev
npm run build
npm run typecheck
npm run clean
npm run inspector
npm run inspector:dev
If you have Task installed:
# Install dependencies
task install
task build
task dev
task lint
task fmt
task check
.env file for testing:cp .env.example .env
npm run dev # Watch mode with auto-reload
All 44 tools together cost about 9,900 tokens of context in every session, before the model does anything. Most workflows need a fraction of that. GSHEETS_TOOLSETS limits which tools the server exposes:
{
"mcpServers": { "gsheets": { "command": "npx", "args": ["mcp-gsheets"], "env": { "GOOGLE_PROJECT_ID": "your-project-id", "GOOGLE_APPLICATION_CREDENTIALS": "/path/to/key.json", "GSHEETS_TOOLSETS": "core,charts" } } } }
| Toolset | Tools | What it covers |
|---|---|---|
core | 11 | Read/write values, metadata, sheet structure, create spreadsheet |
sheets | 9 | Sheet lifecycle, rows and columns |
formatting | 15 | Colours, borders, merges, conditional rules, links, dates |
charts | 3 | Create, update, delete charts |
tables | 4 | Native tables |
analysis | 2 | Full-sheet snapshot, range comparison |
Measured tools/list cost:
| Configuration | Tools | ≈ Tokens |
|---|---|---|
| _unset_ (default, all toolsets) | 44 | 9,875 |
GSHEETS_TOOLSETS=core | 11 | 1,986 |
GSHEETS_TOOLSETS=core,sheets | 20 | 3,548 |
GSHEETS_READ_ONLY=true | 16 | 3,599 |
GSHEETS_TOOLSETS=core + read-only | 6 | 912 |
Notes:
GSHEETS_TOOLSETS unset and you get every tool, exactly as before.GSHEETS_TOOLSETS=charts means "charts as well as core", not "charts only" — without core the server cannot read a cell.GSHEETS_READ_ONLY=true drops every writing tool and can be combined with GSHEETS_TOOLSETS. It is enforced when a tool is called, not just when the list is built, so a client cannot write by naming a hidden tool.All tools also carry MCP annotations (readOnlyHint, destructiveHint, idempotentHint), so clients can skip confirmation prompts on reads and warn before destructive operations.
| Tool | Description | Key Parameters |
|---|---|---|
sheets_get_values | Read cell values from a single range | spreadsheetId, range (A1 notation), valueRenderOption |
sheets_batch_get_values | Read cell values from multiple ranges in one request | spreadsheetId, ranges (array of A1 ranges) |
sheets_get_metadata | Get spreadsheet metadata: title, locale, sheets list with IDs, row/column counts | spreadsheetId |
sheets_check_access | Verify that the service account can access a spreadsheet | spreadsheetId |
| Tool | Description | Key Parameters |
|---|---|---|
sheets_update_values | Write values to a single range (overwrites existing content) | spreadsheetId, range, values (2D array), valueInputOption |
|