Smartsheet Integration
STDIOMCP server providing seamless integration with Smartsheet for automated operations and healthcare analytics.
MCP server providing seamless integration with Smartsheet for automated operations and healthcare analytics.
A Model Context Protocol (MCP) server that provides seamless integration with Smartsheet, enabling automated operations on Smartsheet documents through a standardized interface. This server bridges the gap between AI-powered automation tools and Smartsheet's powerful collaboration platform.
The Smartsheet MCP Server is designed to facilitate intelligent interactions with Smartsheet, providing a robust set of tools for document management, data operations, and column customization. It serves as a critical component in automated workflows, enabling AI systems to programmatically interact with Smartsheet data while maintaining data integrity and enforcing business rules.
Clinical Research Analytics
Hospital Operations
Healthcare Innovation
Automated Document Management
Data Operations
System Integration
The server integrates with:
get_column_map
(Read)
smartsheet_write
(Create)
smartsheet_update
(Update)
smartsheet_delete
(Delete)
smartsheet_search
(Search)
smartsheet_add_column
(Column Management)
smartsheet_delete_column
(Column Management)
smartsheet_rename_column
(Column Management)
smartsheet_bulk_update
(Conditional Updates)
start_batch_analysis
(Healthcare Analytics)
get_job_status
(Analysis Monitoring)
cancel_batch_analysis
(Job Control)
list_workspaces
(Workspace Management)
get_workspace
(Workspace Management)
create_workspace
(Workspace Management)
create_sheet_in_workspace
(Workspace Management)
list_workspace_sheets
(Workspace Management)
Column Type Management
Data Validation
Search Functionality
Metadata Handling
Healthcare Analytics
Batch Processing
Job Management
conda create -n cline_mcp_env python=3.12 nodejs -y conda activate cline_mcp_env
npm install
cd smartsheet_ops pip install -e . cd ..
npm run build
The server requires proper configuration in your MCP settings. You can use it with both Claude Desktop and Cline.
The configuration path depends on your operating system:
macOS:
~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
Windows:
%APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json
Linux:
~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
{ "mcpServers": { "smartsheet": { "command": "/Users/[username]/anaconda3/envs/cline_mcp_env/bin/node", "args": ["/path/to/smartsheet-server/build/index.js"], "env": { "PYTHON_PATH": "/Users/[username]/anaconda3/envs/cline_mcp_env/bin/python3", "SMARTSHEET_API_KEY": "your-api-key", "AZURE_OPENAI_API_KEY": "your-azure-openai-key", "AZURE_OPENAI_API_BASE": "your-azure-openai-endpoint", "AZURE_OPENAI_API_VERSION": "your-api-version", "AZURE_OPENAI_DEPLOYMENT": "your-deployment-name" }, "disabled": false, "autoApprove": [ "get_column_map", "smartsheet_write", "smartsheet_update", "smartsheet_delete", "smartsheet_search", "smartsheet_add_column", "smartsheet_delete_column", "smartsheet_rename_column", "smartsheet_bulk_update", "start_batch_analysis", "get_job_status", "cancel_batch_analysis", "list_workspaces", "get_workspace", "create_workspace", "create_sheet_in_workspace", "list_workspace_sheets" ] } } }
The server will start automatically when Cline or Claude Desktop needs it. However, you can also start it manually for testing.
macOS/Linux:
# Activate the environment conda activate cline_mcp_env # Start the server PYTHON_PATH=/Users/[username]/anaconda3/envs/cline_mcp_env/bin/python3 SMARTSHEET_API_KEY=your-api-key node build/index.js
Windows:
:: Activate the environment conda activate cline_mcp_env :: Start the server set PYTHON_PATH=C:\Users\[username]\anaconda3\envs\cline_mcp_env\python.exe set SMARTSHEET_API_KEY=your-api-key node build\index.js
conda activate cline_mcp_env pip show smartsheet-python-sdk
// Get column mapping and sample data const result = await use_mcp_tool({ server_name: "smartsheet", tool_name: "get_column_map", arguments: { sheet_id: "your-sheet-id", }, });
// Write new rows to Smartsheet const result = await use_mcp_tool({ server_name: "smartsheet", tool_name: "smartsheet_write", arguments: { sheet_id: "your-sheet-id", column_map: { "Column 1": "1234567890", "Column 2": "0987654321", }, row_data: [ { "Column 1": "Value 1", "Column 2": "Value 2", }, ], }, });
// Basic text search const result = await use_mcp_tool({ server_name: "smartsheet", tool_name: "smartsheet_search", arguments: { sheet_id: "your-sheet-id", pattern: "search text", options: { case_sensitive: false, whole_word: false, columns: ["Column1", "Column2"], // Optional: limit search to specific columns }, }, }); // Search PICKLIST column with exact matching const result = await use_mcp_tool({ server_name: "smartsheet", tool_name: "smartsheet_search", arguments: { sheet_id: "your-sheet-id", pattern: "In Progress", options: { columns: ["Status"], // PICKLIST column case_sensitive: true, whole_word: true, }, }, });
// Update existing rows const result = await use_mcp_tool({ server_name: "smartsheet", tool_name: "smartsheet_update", arguments: { sheet_id: "your-sheet-id", column_map: { Status: "850892021780356", Notes: "6861293012340612", }, updates: [ { row_id: "7670198317295492", data: { Status: "In Progress", Notes: "Updated via MCP server", }, }, ], }, });
// Delete rows from Smartsheet const result = await use_mcp_tool({ server_name: "smartsheet", tool_name: "smartsheet_delete", arguments: { sheet_id: "your-sheet-id", row_ids: ["7670198317295492", "7670198317295493"], }, });
// Example 1: Pediatric Innovation Scoring const result = await use_mcp_tool({ server_name: "smartsheet", tool_name: "start_batch_analysis", arguments: { sheet_id: "your-sheet-id", type: "custom", sourceColumns: ["Ideas", "Implementation_Details"], targetColumn: "Pediatric_Score", customGoal: "Score each innovation 1-100 based on pediatric healthcare impact. Consider: 1) Direct benefit to child patients, 2) Integration with pediatric workflows, 3) Implementation feasibility in children's hospital, 4) Safety considerations for pediatric use. Return only a number.", }, }); // Example 2: Clinical Note Summarization const result = await use_mcp_tool({ server_name: "smartsheet", tool_name: "start_batch_analysis", arguments: { sheet_id: "your-sheet-id", type: "summarize", sourceColumns: ["Clinical_Notes"], targetColumn: "Note_Summary", }, }); // Example 3: Patient Satisfaction Analysis const result = await use_mcp_tool({ server_name: "smartsheet", tool_name: "start_batch_analysis", arguments: { sheet_id: "your-sheet-id", type: "sentiment", sourceColumns: ["Patient_Feedback"], targetColumn: "Satisfaction_Score", }, });
// List all accessible workspaces const workspaces = await use_mcp_tool({ server_name: "smartsheet", tool_name: "list_workspaces", arguments: {}, }); // Get details of a specific workspace const workspace = await use_mcp_tool({ server_name: "smartsheet", tool_name: "get_workspace", arguments: { workspace_id: "6621332407379844", }, }); // Create a new workspace const newWorkspace = await use_mcp_tool({ server_name: "smartsheet", tool_name: "create_workspace", arguments: { name: "Project Management", }, }); // Create a sheet in a workspace const newSheet = await use_mcp_tool({ server_name: "smartsheet", tool_name: "create_sheet_in_workspace", arguments: { workspace_id: "6621332407379844", name: "Task Tracker", columns: [ { title: "Task Name", type: "TEXT_NUMBER" }, { title: "Due Date", type: "DATE" }, { title: "Status", type: "PICKLIST", options: ["Not Started", "In Progress", "Completed"], }, ], }, }); // List all sheets in a workspace const sheets = await use_mcp_tool({ server_name: "smartsheet", tool_name: "list_workspace_sheets", arguments: { workspace_id: "6621332407379844", }, });
For development with auto-rebuild:
npm run watch
Since MCP servers communicate over stdio, debugging can be challenging. The server implements comprehensive error logging and provides detailed error messages through the MCP protocol.
Key debugging features:
The server implements a multi-layer error handling approach:
MCP Layer
CLI Layer
Operations Layer
Contributions are welcome! Please ensure: