sheetsdb-mcp-server
Provides tools to interact with Google Sheets via the SheetsDB API, enabling CRUD operations such as reading, importing, updating, and deleting data, along with header management and smart data addition.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@sheetsdb-mcp-serverAdd new contact John, email john@example.com to my contacts sheet"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SheetsDB MCP Server
A Model Context Protocol (MCP) server that enables Claude to interact with Google Sheets through the SheetsDB API.
Features
Smart Data Addition - Automatically detects empty vs existing sheets
Header Management - Uses SheetsDB's
/keysendpoint for reliable header detectionCRUD Operations - Read, import, update, and delete sheet data
Simple & Reliable - Just 6 focused tools, ~150 lines of code
Related MCP server: Brainstorm MCP
Tools Available
get_keys- Get column headers from sheetsmart_add_data- Intelligently add data (import_json for empty sheets, create for existing)read_sheet- Read data from sheetimport_json- Import JSON data to empty sheetsupdate_row- Update specific rowsdelete_rows- Delete rows by criteria
Quick Start
Prerequisites
Node.js 18+
SheetsDB account and API endpoint
Claude Desktop or compatible MCP client
Installation
Clone this repository:
git clone https://github.com/yourusername/sheetsdb-mcp-server.git cd sheetsdb-mcp-serverInstall dependencies:
npm installTest the server:
npm start
Local Claude Desktop Setup
Add to your claude_desktop_config.json:
{
"mcpServers": {
"sheetsdb": {
"command": "node",
"args": ["/path/to/your/sheetsdb-mcp-server/server.js"]
}
}
}Deploy with Smithery.ai
Push to GitHub:
git add . git commit -m "Initial commit" git push origin mainDeploy on Smithery.ai:
Go to Smithery.ai
Click "Deploy MCP with GitHub"
Select this repository
The
mcp-config.jsonwill be automatically detected
Use in Claude:
Get your Smithery deployment URL
Add to Claude Desktop config or use directly
Usage Examples
Adding Meal Data
User: "Add chicken dinner (340 calories, 25g protein) to my calorie tracker: https://sheetdb.io/api/v1/your-id"
Claude will:
1. Call get_keys to check headers
2. Call smart_add_data with proper mapping
3. Either create headers (first time) or add to existing sheetReading Data
User: "Show me my last 5 meals"
Claude: [Uses read_sheet with limit=5]Updating Entries
User: "Update yesterday's breakfast calories to 350"
Claude: [Uses update_row to find and modify the entry]Configuration
The server expects SheetsDB endpoints in this format:
https://sheetdb.io/api/v1/YOUR_SHEET_IDNo additional configuration required - just provide the endpoint when using tools.
Security Notes
Endpoints are validated to ensure they're legitimate SheetsDB URLs
No API keys stored in the server (SheetsDB handles auth via URL)
All requests go directly to SheetsDB's secure endpoints
Contributing
Fork the repository
Create a feature branch
Make your changes
Test thoroughly
Submit a pull request
License
MIT License - see LICENSE file for details
Support
Create an issue for bugs or feature requests
Check SheetsDB documentation for API-specific questions
See MCP documentation for protocol details
Available Tools
6 toolsdelete_rowsB
Delete rows from a Google Sheet
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Value to search for (rows with this value will be deleted) | |
| column | Yes | Column name to search in | |
| endpoint | Yes | The SheetsDB API endpoint |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. However, it only states the basic action and does not clarify whether all matching rows are deleted, if matching is exact, whether deletion is permanent, or what output is returned. This lack of behavioral detail is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no extraneous words. It front-loads the action and resource, making it highly scannable. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and no annotations, the description is incomplete. It does not explain the deletion scope, matching behavior, or any side effects. The description leaves out critical contextual information that an agent would need to invoke the tool correctly and anticipate results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% parameter description coverage, including that 'value' is searched for and rows with that value are deleted. The tool description adds no additional parameter semantics beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete rows from a Google Sheet' clearly states the verb (delete) and resource (rows from a Google Sheet), making the tool's purpose unambiguous. It also distinguishes itself from sibling tools like update_row and read_sheet by specifying a removal operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or suggest appropriate use cases, leaving the agent without context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_keysB
Get column headers (keys) from the first row of the sheet
| Name | Required | Description | Default |
|---|---|---|---|
| endpoint | Yes | The SheetsDB API endpoint |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states the action and does not mention whether the operation is read-only, what happens on an empty sheet, or any error/auth considerations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that directly states the tool's purpose. There is no wasted wording, making it highly concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter, but the description lacks an explicit return format (e.g., an array of strings) and does not mention the intended use case relative to read_sheet. Since no output schema exists, more detail would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage for the single 'endpoint' parameter, including a description. The tool description adds no additional meaning beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets column headers (keys) from the first row of the sheet, using a specific verb and resource. This distinguishes it from sibling tools like read_sheet and update_row.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as read_sheet. It only states what it does without contextualizing its appropriate use case or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_jsonA
Import JSON data to a Google Sheet (creates headers and data). Use for empty sheets or first-time setup.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Array of objects to import. Headers created from object keys. | |
| endpoint | Yes | The SheetsDB API endpoint |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses header creation and data import, but does not state whether existing data is overwritten, whether the operation is destructive, or any error/return behavior. For a mutation tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, purposeful sentences. The first states the core function, the second adds usage context. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with only 2 well-documented parameters and clear purpose, but lacks behavioral details (e.g., what happens if sheet is not empty) and has no output schema. It is adequate for basic selection but misses important operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both 'endpoint' and 'data' described. The description adds 'creates headers and data' but does not explain parameter syntax or edge cases beyond what the schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool imports JSON data into a Google Sheet and creates headers and data, distinguishing it from siblings like smart_add_data. The phrase 'Use for empty sheets or first-time setup' further specifies its unique role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance ('Use for empty sheets or first-time setup'). It does not explicitly name alternatives or exclusions, but the context clearly separates it from append/update/read operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_sheetB
Read data from a Google Sheet via SheetsDB
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Optional limit on number of rows to return | |
| endpoint | Yes | The SheetsDB API endpoint (e.g., https://sheetdb.io/api/v1/your-sheet-id) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does indicate that the tool reads data (implying non-destructive), but it fails to disclose expected return format, default row limits, pagination behavior, or any side effects. The word 'read' is the only behavioral signal, and it lacks the contextual depth needed for safe autonomous invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no redundant wording. It is front-loaded with the verb and resource, but it may be too terse to convey full utility. Still, it earns its place with a clear subject and method.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only two parameters, the description is too minimal to be fully contextual. It does not explain what 'data' means (all rows? specific columns?), how the 'limit' parameter affects behavior, or what the response looks like. These gaps leave an agent uncertain about the tool's behavior beyond the basic read operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides descriptions for both parameters (endpoint and limit), achieving 100% schema coverage. The description itself does not add semantic meaning about parameters beyond that, so per the rubric, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'read' and identifies the resource as 'a Google Sheet' via 'SheetsDB'. This clearly distinguishes it from sibling write/delete tools like update_row and delete_rows, and from get_keys, which deals with keys rather than sheet data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. It simply states what it does, without mentioning any exclusions, prerequisites, or preference over sibling tools. The verb 'read' implies a read operation, but there is no direct comparison or contrast.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
smart_add_dataB
Step 1: ALWAYS call get_keys first to check headers. Step 2: Based on keys result, either import_json (no headers) or create rows (has headers). This tool requires get_keys to be called first in the same conversation.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| headers | Yes | Headers obtained from get_keys tool - REQUIRED parameter from previous get_keys call | |
| endpoint | Yes | The SheetsDB API endpoint |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It mentions the dependency on get_keys and the conditional use of import_json or create_rows, but does not describe side effects, output, error behavior, or what happens if get_keys is not called. The transparency is minimal and does not meet the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences with a clear numbered step structure. It front-loads the critical prerequisite ('ALWAYS call get_keys first') and every sentence contributes to usage guidance. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema and no annotations, the description does not explain what smart_add_data returns or how it executes the add operation. It over-relies on sibling tool names and does not fully describe the tool's own behavior, leaving significant gaps for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% and the schema provides solid descriptions for data, headers, and endpoint, including the source of headers from get_keys. The description adds no additional parameter details, but the schema largely covers semantics, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description focuses on a two-step workflow involving get_keys and choosing between import_json or create_rows, but never explicitly states that smart_add_data itself adds data to the endpoint. The purpose is implied as a smart router, but the verb+resource is not clearly articulated, making it vague rather than tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage instructions: 'ALWAYS call get_keys first' and 'requires get_keys to be called first in the same conversation.' It clearly distinguishes when to use import_json (no headers) vs create_rows (has headers), naming the exact alternatives and the decision condition. This fully guides tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_rowB
Update specific rows in a Google Sheet
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | New data to update matching rows with | |
| value | Yes | Value to search for | |
| column | Yes | Column name to search in | |
| endpoint | Yes | The SheetsDB API endpoint |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only says 'Update specific rows,' failing to mention that it searches by column/value, updates all matching rows, or any side effects/return behavior. This is minimal and does not go beyond the purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single straightforward sentence that communicates the core functionality without excess words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
As a mutation tool with no annotations and no output schema, the description is too sparse. It doesn't explain matching logic, behavior on no matches, or response format, making it incomplete for reliable use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter descriptions in the schema already cover 100% of the parameters (endpoint, column, value, data). The description adds no additional parameter semantics, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update'), the target ('specific rows in a Google Sheet'), and distinguishes this from sibling tools like delete_rows and smart_add_data by implying modification rather than deletion or addition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit when-to-use guidance, alternatives, or exclusions. It only states what the tool does, leaving usage context to be inferred from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
6 tool updates
v1.0.0- First observed
delete_rows - First observed
get_keys - First observed
import_json - First observed
read_sheet - First observed
smart_add_data - First observed
update_row
TDQS
The tools are largely distinct (read, update, delete, get headers), but smart_add_data and import_json have overlapping responsibilities, and smart_add_data's dependency on get_keys creates a confusing workflow boundary.
Most tools follow verb_noun naming (read_sheet, get_keys, update_row, delete_rows), but smart_add_data breaks the pattern with an adjective prefix and a less clear verb_noun structure.
Six tools is well within the ideal range and covers core CRUD operations plus a helper for headers and a meta-tool for smart insertion, which feels appropriately scoped.
The set covers create (import_json/smart_add_data), read (read_sheet), update (update_row), and delete (delete_rows), but lacks a simple 'add_row' tool and the smart_add_data description references an undefined 'create rows' operation, leaving minor gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
Hosted MCP server for AI-driven data ops. Create apps, manage schemas, and CRUD structured data.
Related MCP Servers
- AlicenseBqualityAmaintenanceMCP server for Google Sheets - Read, write and manipulate spreadsheets through Claude Desktop442,51797MIT
- -licenseNot gradedqualityNot gradedmaintenanceAn MCP server that connects Claude to Google Sheets for enhanced brainstorming and structured data output, enabling seamless capture, organization, and manipulation of ideas directly within spreadsheets.-
- AlicenseNot gradedqualityFmaintenanceA comprehensive MCP server for Google Sheets integration with Claude, enabling spreadsheet discovery, data manipulation, and formatting through natural language commands and slash commands.19MIT
- AlicenseNot gradedqualityBmaintenanceA local MCP server that lets Claude read and write Google Sheets through the Google Sheets API v4, using OAuth2 authentication with your own Google account.221MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/SarthakS97/sheetsdb-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server