Smartsheet MCP Server
A Model Context Protocol (MCP) server for interacting with the Smartsheet API. This server provides tools for searching, retrieving, and updating Smartsheet sheets through the MCP protocol.
Table of Contents
Disclaimer
MCP is a new technology. This integration relies on a SMARTSHEET API token allowing access to your account. While powerful, they can be susceptible to prompt injection when processing untrusted data. We recommend exercising caution and reviewing actions taken through these clients to ensure secure operation.
Features
Get detailed information about sheets in Smartsheet
Create, update, and delete sheets and rows
Create version backups of sheets at specific timestamps
Webhooks: Create and manage real-time notifications
Sharing: Share sheets, workspaces, reports, and folders
Cross-Sheet References: Create cell links and cross-sheet formulas
Bulk Operations: Move/copy rows, bulk updates, sorting
Export/Import: Export to CSV/Excel/PDF, import CSV data
Summary Fields: Manage sheet summary sections
Templates: Create sheets from templates
Favorites: Manage user favorites
Groups: Manage groups and members
Events/Audit: Access audit logs and event streams
Formatted responses optimized for AI consumption
Installation
Clone the repository:
git clone https://github.com/smartsheet-platform/smar-mcp.git cd smar-mcpInstall dependencies:
npm installCreate a
.envfile in the project root with your Smartsheet API token:SMARTSHEET_API_KEY=your_smartsheet_api_tokenYou can obtain a Smartsheet API token from the Smartsheet Developer Portal.
Build the project:
npm run build
Usage
There are several ways to run the MCP server with the .env file loaded:
Using npm scripts (recommended)
Start the server with environment variables loaded from the .env file:
This uses the -r dotenv/config flag to ensure dotenv is loaded before the application code runs.
Or build and start in one command:
Using node directly
You can also run the server directly with Node.js and the -r flag:
This ensures that dotenv is loaded before the application code runs.
Alternatively, you can run without the -r flag:
In this case, the application code will load dotenv itself (we've included import { config } from "dotenv"; config(); at the top of the entry file).
The server will start and display: "Smartsheet MCP Server running on stdio"
Available MCP Tools
get_sheet
Retrieves the current state of a sheet, including rows, columns, and cells.
Parameters:
sheetId(string, required): The ID of the sheet to retrieveinclude(string, optional): Comma-separated list of elements to include (e.g., 'format,formulas')
get_sheet_version
Gets the current version number of a sheet.
Parameters:
sheetId(string, required): The ID of the sheet
get_cell_history
Retrieves the history of changes for a specific cell.
Parameters:
sheetId(string, required): The ID of the sheetrowId(string, required): The ID of the rowcolumnId(string, required): The ID of the columninclude(string, optional): Optional parameter to include additional informationpageSize(number, optional): Number of history entries to return per pagepage(number, optional): Page number to return
update_rows
Updates rows in a sheet, including cell values, formatting, and formulae.
Parameters:
sheetId(string, required): The ID of the sheetrows(array, required): Array of row objects to update
add_rows
Adds new rows to a sheet.
Parameters:
sheetId(string, required): The ID of the sheetrows(array, required): Array of row objects to add
delete_rows
Deletes rows from a sheet. This tool is only available when the ALLOW_DELETE_TOOLS environment variable is set to 'true'.
Parameters:
sheetId(string, required): The ID of the sheetrowIds(array, required): Array of row IDs to deleteignoreRowsNotFound(boolean, optional): If true, don't throw an error if rows are not found
get_sheet_location
Gets the folder ID where a sheet is located.
Parameters:
sheetId(string, required): The ID of the sheet
copy_sheet
Creates a copy of the specified sheet in the same folder.
Parameters:
sheetId(string, required): The ID of the sheet to copydestinationName(string, required): Name for the sheet copydestinationFolderId(string, optional): ID of the destination folder (same as source if not specified)
create_sheet
Creates a new sheet.
Parameters:
name(string, required): Name for the new sheetcolumns(array, required): Array of column objectsfolderId(string, optional): ID of the folder where the sheet should be created
create_version_backup
Creates a backup sheet with data from a specific timestamp.
Parameters:
sheetId(string, required): The ID of the source sheettimestamp(string, required): The ISO 8601 timestamp to use for historical data (e.g., '2025-03-27T13:00:00Z')archiveName(string, optional): Name for the archive sheet (defaults to 'Original Sheet Name - Archive YYYY-MM-DD')includeFormulas(boolean, optional, default: true): Whether to include formulas in the archiveincludeFormatting(boolean, optional, default: true): Whether to include formatting in the archivebatchSize(number, optional, default: 100): Number of rows to process in each batchmaxConcurrentRequests(number, optional, default: 5): Maximum number of concurrent API requests
Webhook Tools
list_webhooks
Lists all webhooks for the authenticated user.
get_webhook
Gets details of a specific webhook.
Parameters:
webhookId(number, required): The ID of the webhook to retrieve
create_webhook
Creates a new webhook to receive notifications when a sheet changes.
Parameters:
name(string, required): Name for the webhookcallbackUrl(string, required): URL to receive webhook callbacksscope(string, required): Scope of the webhook (currently only 'sheet' is supported)scopeObjectId(number, required): ID of the object to monitor (e.g., sheet ID)events(array, required): Events to trigger the webhook (e.g., ['.'] for all events)version(number, optional): API version for webhook callbacks (default: 1)
update_webhook
Updates an existing webhook (enable/disable or change callback URL).
Parameters:
webhookId(number, required): The ID of the webhook to updateenabled(boolean, optional): Whether the webhook is enabledcallbackUrl(string, optional): New callback URL for the webhook
delete_webhook
Deletes a webhook. Only available when ALLOW_DELETE_TOOLS=true.
Parameters:
webhookId(number, required): The ID of the webhook to delete
reset_webhook_secret
Resets the shared secret for a webhook.
Parameters:
webhookId(number, required): The ID of the webhook
Sharing Tools
list_sheet_shares
Lists all shares (users/groups with access) for a sheet.
Parameters:
sheetId(number, required): The ID of the sheet
share_sheet
Shares a sheet with users or groups.
Parameters:
sheetId(number, required): The ID of the sheet to shareshares(array, required): Array of share objects withemail,groupId,accessLevel,subject,message,ccMe
update_sheet_share
Updates the access level of an existing share.
Parameters:
sheetId(number, required): The ID of the sheetshareId(string, required): The ID of the share to updateaccessLevel(string, required): New access level (VIEWER, EDITOR, EDITOR_SHARE, ADMIN, OWNER)
delete_sheet_share
Removes sharing access from a sheet. Only available when ALLOW_DELETE_TOOLS=true.
Parameters:
sheetId(number, required): The ID of the sheetshareId(string, required): The ID of the share to delete
list_workspace_shares / share_workspace
Similar to sheet sharing but for workspaces.
list_report_shares / share_report
Similar to sheet sharing but for reports.
list_folder_shares / share_folder
Similar to sheet sharing but for folders.
Cross-Sheet Reference Tools
list_cross_sheet_references
Lists all cross-sheet references defined for a sheet.
Parameters:
sheetId(number, required): The ID of the sheet
get_cross_sheet_reference
Gets a specific cross-sheet reference.
Parameters:
sheetId(number, required): The ID of the sheetreferenceId(number, required): The ID of the cross-sheet reference
create_cross_sheet_reference
Creates a cross-sheet reference to use in formulas like VLOOKUP, INDEX, etc.
Parameters:
sheetId(number, required): The ID of the destination sheetname(string, required): Name for the cross-sheet referencesourceSheetId(number, required): ID of the source sheet to referencestartRowId(number, optional): ID of the first row in the rangeendRowId(number, optional): ID of the last row in the rangestartColumnId(number, optional): ID of the first column in the rangeendColumnId(number, optional): ID of the last column in the range
create_cell_link
Creates a cell link that syncs a cell's value from another sheet.
Parameters:
sheetId(number, required): The ID of the destination sheetrowId(number, required): The ID of the destination rowcolumnId(number, required): The ID of the destination columnsourceSheetId(number, required): The ID of the source sheetsourceRowId(number, required): The ID of the source rowsourceColumnId(number, required): The ID of the source column
remove_cell_link
Removes a cell link from a cell.
Parameters:
sheetId(number, required): The ID of the sheetrowId(number, required): The ID of the rowcolumnId(number, required): The ID of the column
get_cell_links
Gets all cell links information for a sheet.
Parameters:
sheetId(number, required): The ID of the sheet
Bulk Operations Tools
move_rows
Moves rows from one sheet to another.
Parameters:
sourceSheetId(number, required): The ID of the source sheetrowIds(array, required): Array of row IDs to movedestinationSheetId(number, required): The ID of the destination sheettoTop(boolean, optional): Move rows to the toptoBottom(boolean, optional): Move rows to the bottomparentId(number, optional): ID of the parent row in the destinationsiblingId(number, optional): ID of the sibling row in the destination
copy_rows
Copies rows from one sheet to another.
Parameters:
Same as
move_rows
move_sheet
Moves a sheet to a different folder or workspace.
Parameters:
sheetId(number, required): The ID of the sheet to movefolderId(number, optional): ID of the destination folderworkspaceId(number, optional): ID of the destination workspace
bulk_delete_rows
Deletes multiple rows from a sheet. Only available when ALLOW_DELETE_TOOLS=true.
Parameters:
sheetId(number, required): The ID of the sheetrowIds(array, required): Array of row IDs to deleteignoreRowsNotFound(boolean, optional): If true, don't error if rows are not found
bulk_add_rows
Adds multiple rows to a sheet in a single operation.
Parameters:
sheetId(number, required): The ID of the sheetrows(array, required): Array of row objects withtoTop,toBottom,parentId,siblingId,cells
bulk_update_rows
Updates multiple rows in a sheet in a single operation.
Parameters:
sheetId(number, required): The ID of the sheetrows(array, required): Array of row objects withidandcells
sort_rows
Sorts rows in a sheet by one or more columns.
Parameters:
sheetId(number, required): The ID of the sheetsortCriteria(array, required): Array of sort criteria withcolumnIdanddirection(ASCENDING/DESCENDING)
Export/Import Tools
export_sheet_to_csv
Exports a sheet to CSV format.
Parameters:
sheetId(number, required): The ID of the sheet to export
export_sheet_to_excel
Exports a sheet to Excel format (returns base64 encoded content).
Parameters:
sheetId(number, required): The ID of the sheet to export
export_sheet_to_pdf
Exports a sheet to PDF format (returns base64 encoded content).
Parameters:
sheetId(number, required): The ID of the sheet to exportpaperSize(string, optional): Paper size (LETTER, LEGAL, WIDE, ARCHD, A4, A3, A2, A1, A0)
import_csv_to_new_sheet
Imports CSV content into a new sheet.
Parameters:
csvContent(string, required): The CSV content to importsheetName(string, required): Name for the new sheetheaderRowIndex(number, optional): Row index for headers (default: 0)primaryColumnIndex(number, optional): Column index for the primary column (default: 0)
import_csv_to_existing_sheet
Imports CSV content as new rows in an existing sheet.
Parameters:
sheetId(number, required): The ID of the sheet to import intocsvContent(string, required): The CSV content to import
get_sheet_as_json
Gets a sheet in JSON format with optional filtering and pagination.
Parameters:
sheetId(number, required): The ID of the sheetinclude(array, optional): Elements to include (e.g., ['attachments', 'discussions'])exclude(array, optional): Elements to excluderowIds(array, optional): Specific row IDs to returncolumnIds(array, optional): Specific column IDs to returnfilterId(number, optional): Filter ID to applypageSize(number, optional): Number of rows per pagepage(number, optional): Page number
Summary Fields Tools
get_summary_fields
Gets all summary fields for a sheet (the sheet summary section).
Parameters:
sheetId(number, required): The ID of the sheet
get_summary_field
Gets a specific summary field by ID.
Parameters:
sheetId(number, required): The ID of the sheetfieldId(number, required): The ID of the summary field
add_summary_fields
Adds new summary fields to a sheet.
Parameters:
sheetId(number, required): The ID of the sheetfields(array, required): Array of field objects withtitle,type,formula,objectValue,index
update_summary_fields
Updates existing summary fields.
Parameters:
sheetId(number, required): The ID of the sheetfields(array, required): Array of field objects withid,title,formula,objectValue,index,locked
delete_summary_fields
Deletes summary fields from a sheet. Only available when ALLOW_DELETE_TOOLS=true.
Parameters:
sheetId(number, required): The ID of the sheetfieldIds(array, required): Array of summary field IDs to delete
Template Tools
list_public_templates
Lists all publicly available Smartsheet templates.
list_user_templates
Lists templates created by the user.
create_sheet_from_template
Creates a new sheet from a template.
Parameters:
templateId(number, required): The ID of the template to usesheetName(string, required): Name for the new sheetfolderId(number, optional): ID of the folder to create the sheet inworkspaceId(number, optional): ID of the workspace to create the sheet inincludes(array, optional): Elements to include from the template (data, attachments, discussions, cellLinks, forms)
create_sheet_in_folder_from_template
Creates a new sheet in a folder from a template.
Parameters:
folderId(number, required): The ID of the destination foldertemplateId(number, required): The ID of the template to usesheetName(string, required): Name for the new sheetincludes(array, optional): Elements to include from the template
create_sheet_in_workspace_from_template
Creates a new sheet in a workspace from a template.
Parameters:
workspaceId(number, required): The ID of the destination workspacetemplateId(number, required): The ID of the template to usesheetName(string, required): Name for the new sheetincludes(array, optional): Elements to include from the template
Favorites Tools
list_favorites
Lists all favorites for the current user.
add_favorites
Adds items to favorites.
Parameters:
favorites(array, required): Array of objects withtype(sheet, folder, report, template, workspace, sight) andobjectId
add_sheet_to_favorites
Adds a sheet to favorites.
Parameters:
sheetId(number, required): The ID of the sheet to favorite
add_folder_to_favorites / add_workspace_to_favorites / add_report_to_favorites / add_dashboard_to_favorites
Similar tools for other object types.
remove_favorites
Removes items from favorites. Only available when ALLOW_DELETE_TOOLS=true.
Parameters:
type(string, required): Type of items to removeobjectIds(array, required): Array of item IDs to remove from favorites
remove_sheet_from_favorites
Removes a sheet from favorites. Only available when ALLOW_DELETE_TOOLS=true.
Parameters:
sheetId(number, required): The ID of the sheet to remove from favorites
Groups Tools
list_groups
Lists all groups in the organization.
get_group
Gets details of a specific group.
Parameters:
groupId(number, required): The ID of the group
create_group
Creates a new group.
Parameters:
name(string, required): Name for the groupdescription(string, optional): Description for the groupmembers(array, optional): Initial members to add (array of objects withemail)
update_group
Updates an existing group.
Parameters:
groupId(number, required): The ID of the group to updatename(string, optional): New name for the groupdescription(string, optional): New description for the groupownerId(number, optional): ID of the new owner
delete_group
Deletes a group. Only available when ALLOW_DELETE_TOOLS=true.
Parameters:
groupId(number, required): The ID of the group to delete
add_group_members
Adds members to a group.
Parameters:
groupId(number, required): The ID of the groupmembers(array, required): Array of members to add (objects withemail)
remove_group_member
Removes a member from a group. Only available when ALLOW_DELETE_TOOLS=true.
Parameters:
groupId(number, required): The ID of the groupuserId(number, required): The ID of the user to remove
get_group_members
Gets all members of a group.
Parameters:
groupId(number, required): The ID of the group
Events/Audit Tools
get_events
Gets events from the audit log (requires admin privileges).
Parameters:
since(string, optional): ISO 8601 datetime or stream position to start frommaxCount(number, optional): Maximum number of events to return (1-10000)numericDates(boolean, optional): Return dates as milliseconds since epoch
get_events_since
Gets events since a specific timestamp.
Parameters:
timestamp(string, required): ISO 8601 datetime to start frommaxCount(number, optional): Maximum number of events to return
get_recent_events
Gets events from the last 24 hours.
Parameters:
maxCount(number, optional): Maximum number of events to return
get_events_by_object_type
Gets events filtered by object type.
Parameters:
objectType(string, required): Type of object to filter by (SHEET, WORKSPACE, FOLDER, REPORT, etc.)since(string, optional): ISO 8601 datetime to start frommaxCount(number, optional): Maximum number of events to return
get_events_by_action
Gets events filtered by action type.
Parameters:
action(string, required): Action type to filter by (CREATE, UPDATE, DELETE, MOVE, COPY, etc.)since(string, optional): ISO 8601 datetime to start frommaxCount(number, optional): Maximum number of events to return
get_all_events
Gets all events by paginating through the stream (may take time for large result sets).
Parameters:
since(string, required): ISO 8601 datetime to start frommaxTotal(number, optional): Maximum total number of events to retrieve
API Endpoint Coverage
This table outlines the Smartsheet API endpoints, whether they are currently covered by SMAR-MCP tools, and their suitability for MCP.
Legend:
Yes: Endpoint is well-suited for MCP integration
No: Endpoint is not suitable for MCP (e.g., binary data, streaming, or requires specialized handling)
Consider: Endpoint could work with MCP but may have limitations (e.g., potentially large responses that need pagination or filtering)
API Path | Covered by SMAR-MCP? | HTTP Method(s) | SMAR-MCP Tool(s) | Suitable for MCP? | Reason for Unsuitability/Consideration |
| No | GET | N/A | Consider | List operation. Response size can vary. Consider pagination/filters. |
| No | GET | N/A | Yes | Retrieves a specific contact. |
| Yes | GET |
| Yes | Event stream with pagination support. |
| Yes | GET, POST |
| Yes | Manages user favorites. |
| Yes | GET, POST |
| Yes | Manages user favorites by type. |
| Yes | GET, PUT, DELETE |
| Yes | Manages a specific user favorite. |
| No | GET | N/A | Consider | Filtered event stream. Potentially large. Needs specific handling. |
| Yes | GET, PUT, DELETE |
| Yes | Retrieves a specific folder. |
| No | POST | N/A | Yes | Copies a folder. |
| Yes | POST |
| Yes | Manages sub-folders (create). List via |
| No | POST | N/A | Yes | Moves a folder. |
| Yes | GET, POST |
| Yes | List/Manage folder shares. |
| Yes | POST |
| Yes | Manages sheets within a folder. |
| No | POST | N/A | Yes | Imports a sheet into a folder. |
| No | GET | N/A | Yes | Accesses personal folders (Smartsheet specific, likely |
| Yes | GET, POST |
| Yes | List/Create groups. |
| Yes | GET, PUT, DELETE |
| Yes | Get/Update/Delete specific group. |
| Yes | GET, POST |
| Yes | List/Add group members. |
| Yes | DELETE |
| Yes | Removes a specific group member. |
| No | GET | N/A | Yes | Lists folders in the user's home. |
| No | POST | N/A | Consider | Generates URLs for images. Response size depends on request. |
| Yes | GET |
| Consider | List operation. Response size can vary. |
| Yes | GET, PUT, DELETE |
| Yes | Retrieves a specific report. |
| No | POST | N/A | Yes | Sends a report via email. |
| No | GET, PUT, DELETE | N/A | Yes | Manages report publishing. |
| Yes | GET, POST |
| Yes | List/Manage report shares. |
| No | GET, PUT, DELETE | N/A | Yes | Manages a specific report share. |
| Yes | GET |
| Consider | Global search. Response size can be very large. |
| Yes | GET |
| Consider | Search within a specific sheet. Response size can vary. |
| No | GET | N/A | Yes | Retrieves server information. Small response. |
| Yes | GET, POST |
| Consider | List operation (not exposed as tool). Response size can be very large. |
| Yes | POST |
| Yes | Imports a sheet from CSV. |
| Yes | GET, PUT, DELETE |
| Yes | Retrieves/exports a specific sheet. |
| Yes | GET, POST |
| Consider | List/Manage attachments. Involves binary data. |
| Yes | GET, DELETE |
| Consider | Get/Delete specific attachment. Involves binary data. |
| No | GET | N/A | Consider | List attachment versions. |
| No | GET, POST | N/A | Consider | List/Manage automation rules. |
| No | GET, PUT, DELETE | N/A | Yes | Get/Update/Delete specific automation rule. |
| Yes | GET, POST |
| Yes | List/Add columns. |
| Yes | GET, PUT, DELETE |
| Yes | Get/Update/Delete specific column. |
| No | GET, DELETE | N/A | Yes | Get/Delete specific comment. |
| No | GET, POST | N/A | Consider | Manage attachments for a comment. Involves binary data. |
| Yes | POST |
| Yes | Copies a sheet. |
| Yes | GET, POST |
| Yes | List/Create cross-sheet references. |
| Yes | GET, DELETE |
| Yes | Get specific cross-sheet reference. |
| Yes | GET, POST |
| Consider | List discussions. Response size can vary. |
| No | GET, DELETE | N/A | Yes | Get/Delete specific discussion. |
| No | GET, POST | N/A | Consider | Manage attachments for a discussion. Involves binary data. |
| No | GET, POST | N/A | Consider | List/Add comments to a discussion. |
| No | POST | N/A | Yes | Sends a sheet via email. |
| Yes | POST |
| Yes | Moves a sheet to folder/workspace. |
| No | GET, POST | N/A | Consider | List/Manage proofs. |
| No | GET, PUT | N/A | Yes | Get/Update specific proof. |
| No | GET, POST | N/A | Consider | Manage attachments for a proof. Involves binary data. |
| No | GET, POST | N/A | Consider | Manage discussions for a proof. |
| No | POST | N/A | Yes | Manage request actions for a proof. |
| No | GET, POST | N/A | Consider | Manage requests for a proof. |
| No | GET | N/A | Consider | List versions of a proof. |
| No | GET, PUT, DELETE | N/A | Yes | Manages sheet publishing. |
| Yes | GET, POST, PUT, DELETE |
| Yes | Manages rows with bulk support. |
| Yes | POST |
| Yes | Copies rows within or between sheets. |
| No | POST | N/A | Yes | Sends rows via email. |
| Yes | POST |
| Yes | Imports CSV rows to existing sheet. |
| Yes | POST |
| Yes | Moves rows within or between sheets. |
| Yes | GET, PUT, DELETE |
| Yes | Get/Update/Delete specific row. |
| Yes | GET, POST |
| Consider | Manage attachments for a row. Involves binary data. |
| No | GET, POST, DELETE | N/A | Consider | Manage cell images. Involves binary data. |
| Yes | GET |
| Yes | Retrieves cell history. Response size can vary. |
| Yes | GET, POST |
| Yes | Manages discussions for a row. |
| No | GET, POST | N/A | Consider | Manage proofs for a row. |
| No | GET | N/A | Consider | List sent update requests. |
| No | GET, DELETE | N/A | Yes | Get/Delete specific sent update request. |
| Yes | GET, POST |
| Yes | List/Manage sheet shares. |
| Yes | GET, PUT, DELETE |
| Yes | Get/Update/Delete specific sheet share. |
| Yes | POST |
| Yes | Sorts a sheet. |
| Yes | GET |
| Yes | Get sheet summary. |
| Yes | GET, POST, PUT, DELETE |
| Yes | Full summary field management. |
| No | GET, POST, DELETE | N/A | Consider | Manage images for a sheet summary field. Involves binary data. |
| Yes | GET, POST |
| Consider | List/Manage update requests. |
| No | GET, PUT, DELETE | N/A | Yes | Get/Update/Delete specific update request. |
| Yes | GET |
| Yes | Retrieves sheet version. Small response. |
| No | GET, POST | N/A | Consider | List dashboards. Response size can vary. |
| No | GET, PUT, DELETE | N/A | Yes | Get specific dashboard. Response can be large. |
| No | POST | N/A | Yes | Copies a dashboard. |
| No | POST | N/A | Yes | Moves a dashboard. |
| No | GET, PUT, DELETE | N/A | Yes | Manages dashboard publishing. |
| No | GET, POST | N/A | Consider | List/Manage dashboard shares. |
| No | GET, PUT, DELETE | N/A | Yes | Get/Update/Delete specific dashboard share. |
| Yes | GET |
| Yes | List user templates. |
| Yes | GET |
| Yes | List public templates. |
| No | POST | N/A | No | OAuth token endpoint. Handled by auth flow, not direct MCP tool. |
| Yes | GET, POST |
| Consider | List users. Response size can be very large. Requires admin. |
| Yes | GET |
| Yes | Retrieves current user details. Small response. |
| No | GET | N/A | Consider | List sheets owned by or shared with users. Potentially large. |
| No | GET, PUT, DELETE | N/A | Yes | Get specific user. |
| No | GET, POST | N/A | Yes | Manage alternate emails for a user. |
| No | GET, DELETE | N/A | Yes | Manage a specific alternate email. |
| No | POST | N/A | Yes | Makes an alternate email primary. |
| No | DELETE | N/A | Yes | Deactivates a user. (Admin) |
| No | GET, PUT, DELETE | N/A | Consider | Manage user profile image. Involves binary data. |
| No | POST | N/A | Yes | Reactivates a user. (Admin) |
| Yes | GET, POST |
| Yes | List/Create webhooks. |
| Yes | GET, PUT, DELETE |
| Yes | Get/Update/Delete specific webhook. |
| Yes | POST |
| Yes | Resets webhook shared secret. |
| Yes | GET, POST |
| Consider | List workspaces. Response size can vary. Create is fine. |
| Yes | GET, PUT, DELETE |
| Yes | Get specific workspace. Response can be large. |
| No | POST | N/A | Yes | Copies a workspace. |
| Yes | POST |
| Yes | Manages folders within a workspace. |
| Yes | GET, POST |
| Yes | List/Manage workspace shares. |
| Yes | GET, PUT, DELETE |
| Yes | Get/Update/Delete specific workspace share. |
| No | GET | N/A | Consider | List sheets in workspace. List via |
| No | POST | N/A | Yes | Imports a sheet into a workspace. |
Note: The
Example Usage
Here's an example of how to use the create_version_backup tool to create a backup of a sheet at a specific timestamp:
Environment Variables
SMARTSHEET_API_KEY: Your Smartsheet API token (required)ALLOW_DELETE_TOOLS: Set to 'true' to enable deletion operations like delete_rows (default: false)
Development
Prerequisites
Node.js 16 or higher
npm 7 or higher
Building
Project Structure
src/index.ts: Main entry point and MCP tool definitionssrc/smartsheet-direct-api.ts: Direct API client for Smartsheetsrc/smartsheet-utils.ts: Utility functions for common operationssrc/smartsheet-workflows.ts: Implementation of complex workflowssrc/smartsheet-types: Classes representing Smartsheet API objectstests/: Test files for various functionalityscripts/: Utility scriptsexamples/: Example usage files.env: Environment variables.env.example: Template for environment variablesclaude_desktop_config-example.json: Example claude desktop config to connect with the tool - Set your Smartsheet key in the env setting.
Testing
Follow the steps at https://modelcontextprotocol.io/quickstart/server under "Testing your server with Claude for Desktop"
See claude_desktop_config-example.json as an example config to use
Roo:
Run npm run dev and make sure your MCP is running locally.
In the Roo Code plug-in, click on the MCP Servers button then Edit MCP Settings. Copy over the text in the claude_desktop_config-example.json file over (it should be the same) and make the necessary changes to match your environment.
You should see the MCP Service listed above the Edit MCP Settings button. If not, check that your config is correct and your API key is properly set. If it is, try restarting VS Code.
Contributing
This project uses Semantic Release for automated versioning and changelog generation based on commit messages.
Commit Message Format
We follow the Conventional Commits specification for commit messages:
Types
feat: A new feature (minor version bump)fix: A bug fix (patch version bump)docs: Documentation only changesstyle: Changes that do not affect the meaning of the coderefactor: A code change that neither fixes a bug nor adds a featureperf: A code change that improves performancetest: Adding missing tests or correcting existing testschore: Changes to the build process or auxiliary tools
Breaking Changes
Breaking changes should be indicated by adding BREAKING CHANGE: in the commit message body or by appending a ! after the type/scope:
or
Development Workflow
Fork the repository
Create your feature branch (
git checkout -b feature/amazing-feature)Make your changes
Commit your changes using the conventional commit format
Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
When your PR is merged to the main branch, semantic-release will automatically:
Determine the next version number based on commit messages
Generate release notes
Create a GitHub release
Update the CHANGELOG.md file