智能协作服务

@terilios/smartsheet-server
0 Stars 357 次浏览 terilios 更新于 2026-08-23

提供了与Smartsheet的无缝集成,通过标准化接口实现对Smartsheet文档的自动化操作,该接口将基于AI的自动化工具与Smartsheet的协作平台相连接。

该服务暂未提供标准配置,请参考 README 手动接入

可用工具 (12 个)

该服务在 MCP 协议中暴露的工具,AI 可按需调用

smartsheet_add_column 7 个参数 需填 3 项

Add a new column to a Smartsheet

必填参数:sheet_id、title、type

smartsheet_delete_column 3 个参数 需填 2 项

Delete a column from a Smartsheet

必填参数:sheet_id、column_id

smartsheet_rename_column 4 个参数 需填 3 项

Rename a column in a Smartsheet

必填参数:sheet_id、column_id、new_title

get_column_map 1 个参数 需填 1 项

Get column mapping and sample data from a Smartsheet

必填参数:sheet_id

smartsheet_write 3 个参数 需填 3 项

Write data to a Smartsheet

必填参数:sheet_id、row_data、column_map

smartsheet_update 3 个参数 需填 3 项

Update existing rows in a Smartsheet

必填参数:sheet_id、updates、column_map

smartsheet_delete 2 个参数 需填 2 项

Delete rows from a Smartsheet

必填参数:sheet_id、row_ids

smartsheet_search 3 个参数 需填 2 项

Search for content in a Smartsheet

必填参数:sheet_id、pattern

start_batch_analysis 6 个参数 需填 5 项

Start a batch analysis job using Azure OpenAI

必填参数:sheet_id、type、sourceColumns、targetColumn、rowIds

cancel_batch_analysis 2 个参数 需填 2 项

Cancel a running batch analysis job

必填参数:sheet_id、jobId

get_job_status 2 个参数 需填 2 项

Get the status of a batch analysis job

必填参数:sheet_id、jobId

smartsheet_bulk_update 3 个参数 需填 2 项

Perform conditional bulk updates on a Smartsheet

必填参数:sheet_id、rules

服务介绍

Smartsheet MCP 服务器

一个提供与 Smartsheet 无缝集成的模型上下文协议(MCP)服务器,通过标准化接口实现对 Smartsheet 文档的自动化操作。该服务器架起了由 AI 驱动的自动化工具与 Smartsheet 强大的协作平台之间的桥梁。

概览

Smartsheet MCP 服务器旨在促进与 Smartsheet 的智能交互,提供了一整套文档管理、数据操作和列自定义的强大工具。作为自动化工作流程中的关键组件,它使 AI 系统能够以编程方式与 Smartsheet 数据进行交互,同时保持数据完整性和执行业务规则。

主要优势

  • 智能集成:无缝连接 AI 系统与 Smartsheet 协作平台
  • 数据完整性:在操作过程中强制执行验证规则并维护引用完整性
  • 公式管理:自动保留和更新公式引用
  • 灵活配置:支持多种列类型及复杂数据结构
  • 错误恢复能力:在多个层面实施全面的错误处理和验证
  • 医疗分析:针对临床和研究数据的专业分析能力
  • 批量处理:高效处理大型医疗数据集
  • 自定义评分:为医疗项目和研究提供灵活的评分系统

使用案例

  1. 临床研究分析

    • 协议合规性评分
    • 患者数据分析
    • 研究影响评估
    • 临床试验数据处理
    • 自动化研究报告摘要
  2. 医院运营

    • 资源利用率分析
    • 患者满意度评分
    • 部门效率指标
    • 员工绩效分析
    • 质量指标跟踪
  3. 医疗创新

    • 儿科一致性评分
    • 创新影响评估
    • 研究优先级排序
    • 实施可行性分析
    • 临床价值评估
  4. 自动化文档管理

    • 程序化的表格结构调整
    • 动态列创建与管理
    • 自动化数据验证和格式化
  5. 数据操作

    • 批量数据更新并附带完整性检查
    • 智能重复项检测
    • 公式感知修改
  6. 系统集成

    • AI驱动的表格定制
    • 自动报告工作流
    • 跨系统数据同步

集成点

该服务器与以下部分集成:

  • 用于数据操作的 Smartsheet API
  • 用于标准化通信的 MCP 协议
  • 通过 stdio 接口与本地开发工具集成
  • 通过结构化日志与监控系统集成

架构

服务器实现了 MCP 和 Smartsheet 之间的桥接架构:

graph LR
    subgraph MCP[MCP Layer]
        direction TB
        A[Client Request] --> B[TypeScript MCP Server]
        B --> C[Tool Registry]
        B --> D[Config Management]
    end

    subgraph CLI[CLI Layer]
        direction TB
        E[Python CLI] --> F[Argument Parser]
        F --> G[Command Router]
        G --> H[JSON Formatter]
    end

    subgraph Core[Core Operations]
        direction TB
        I[Smartsheet API Client] --> J[Column Manager]
        J --> K[Data Validator]
        J --> L[Formula Parser]
    end

    MCP --> CLI --> Core

    style A fill:#f9f,stroke:#333
    style I fill:#bbf,stroke:#333
  1. TypeScript MCP 层 (src/index.ts)

    • 处理MCP协议通信
    • 注册和管理可用工具
    • 将请求路由到Python实现
    • 管理配置和错误处理
  2. Python CLI 层 (smartsheet_ops/cli.py)

    • 提供操作的命令行接口
    • 处理参数解析和验证
    • 实现重复检测
    • 管理JSON数据格式化
  3. 核心操作层 (smartsheet_ops/__init__.py)

    • 实现Smartsheet API交互
    • 处理复杂列类型管理
    • 提供数据规范化和验证
    • 管理系统列和公式解析

列管理流程

sequenceDiagram
    participant C as Client
    participant M as MCP Server
    participant P as Python CLI
    participant S as Smartsheet API

    C->>M: Column Operation Request
    M->>P: Parse & Validate Request

    alt Add Column
        P->>S: Validate Column Limit
        S-->>P: Sheet Info
        P->>S: Create Column
        S-->>P: Column Created
        P->>S: Get Column Details
        S-->>P: Column Info
    else Delete Column
        P->>S: Check Dependencies
        S-->>P: Formula References
        alt Has Dependencies
            P-->>M: Dependency Error
            M-->>C: Cannot Delete
        else No Dependencies
            P->>S: Delete Column
            S-->>P: Success
        end
    else Rename Column
        P->>S: Check Name Uniqueness
        S-->>P: Validation Result
        P->>S: Update Column Name
        S-->>P: Name Updated
        P->>S: Update Formula References
        S-->>P: References Updated
    end

    P-->>M: Operation Result
    M-->>C: Formatted Response

错误处理流程

flowchart TD
    A[Client Request] --> B{MCP Layer}
    B -->|Validation Error| C[Return Error Response]
    B -->|Valid Request| D{CLI Layer}

    D -->|Parse Error| E[Format JSON Error]
    D -->|Valid Command| F{Core Operations}

    F -->|API Error| G[Handle API Exception]
    F -->|Validation Error| H[Check Error Type]
    F -->|Success| I[Format Success Response]

    H -->|Dependencies| J[Return Dependency Info]
    H -->|Limits| K[Return Limit Error]
    H -->|Data| L[Return Validation Details]

    G --> M[Format Error Response]
    J --> N[Send to Client]
    K --> N
    L --> N
    I --> N

    style A fill:#f9f,stroke:#333
    style N fill:#bbf,stroke:#333

功能

工具

  1. get_column_map (Read)

    • Retrieves column mapping and sample data from a Smartsheet
    • Provides detailed column metadata including:
      • Column types (system columns, formulas, picklists)
      • Validation rules
      • Format specifications
      • Auto-number configurations
    • Returns sample data for context
    • Includes usage examples for writing data
  2. smartsheet_write (Create)

    • Writes new rows to Smartsheet with intelligent handling of:
      • System-managed columns
      • Multi-select picklist values
      • Formula-based columns
    • Implements automatic duplicate detection
    • Returns detailed operation results including row IDs
  3. smartsheet_update (Update)

    • Updates existing rows in a Smartsheet
    • Supports partial updates (modify specific fields)
    • Maintains data integrity with validation
    • Handles multi-select fields consistently
    • Returns success/failure details per row
  4. smartsheet_delete (Delete)

    • Deletes rows from a Smartsheet
    • Supports batch deletion of multiple rows
    • Validates row existence and permissions
    • Returns detailed operation results
  5. smartsheet_add_column (Column Management)

    • Adds new columns to a Smartsheet
    • Supports all column types:
      • TEXT_NUMBER
      • DATE
      • CHECKBOX
      • PICKLIST
      • CONTACT_LIST
    • Configurable options:
      • Position index
      • Validation rules
      • Formula definitions
      • Picklist options
    • Enforces column limit (400) with validation
    • Returns detailed column information
  6. smartsheet_delete_column (Column Management)

    • Safely deletes columns with dependency checking
    • Validates formula references before deletion
    • Prevents deletion of columns used in formulas
    • Returns detailed dependency information
    • Supports force deletion option
  7. smartsheet_rename_column (Column Management)

    • Renames columns while preserving relationships
    • Updates formula references automatically
    • Maintains data integrity
    • Validates name uniqueness
    • Returns detailed update information
  8. smartsheet_bulk_update (Conditional Updates)

    • Performs conditional bulk updates based on rules
    • Supports complex condition evaluation:
      • Multiple operators (equals, contains, greaterThan, etc.)
      • Type-specific comparisons (text, dates, numbers)
      • Empty/non-empty checks
    • Batch processing with configurable size
    • Comprehensive error handling and rollback
    • Detailed operation results tracking
  9. start_batch_analysis (Healthcare Analytics)

    • Processes entire sheets or selected rows with AI analysis
    • Supports multiple analysis types:
      • Summarization of clinical notes
      • Sentiment analysis of patient feedback
      • Custom scoring for healthcare initiatives
      • Research impact assessment
    • Features:
      • Automatic batch processing (50 rows per batch)
      • Progress tracking and status monitoring
      • Error handling with detailed reporting
      • Customizable analysis goals
      • Support for multiple source columns
  10. get_job_status (Analysis Monitoring)

    • Tracks batch analysis progress
    • Provides detailed job statistics:
      • Total rows to process
      • Processed row count
      • Failed row count
      • Processing timestamps
    • Real-time status updates
    • Comprehensive error reporting
  11. cancel_batch_analysis (Job Control)

    • Cancels running batch analysis jobs
    • Graceful process termination
    • Maintains data consistency
    • Returns final job status

关键功能

  • 列类型管理

    • 处理系统列类型(如 AUTO_NUMBER, CREATED_DATE 等)
    • 支持公式解析和依赖跟踪
    • 管理选择列表选项和多选值
    • 全面的列操作(添加、删除、重命名)
    • 公式引用的保留和更新
  • 数据验证

    • 自动检测重复项
    • 列类型验证
    • 数据格式验证
    • 列依赖性分析
    • 名称唯一性验证
  • 元数据处理

    • 提取和处理列元数据
    • 处理验证规则
    • 管理格式规范
    • 跟踪公式依赖
    • 维护列关系
  • 医疗分析

    • 临床笔记摘要
    • 患者反馈情感分析
    • 协议合规评分
    • 研究影响评估
    • 资源利用分析
  • 批量处理

    • 自动行分批(每批50行)
    • 进度跟踪和监控
    • 错误处理和恢复
    • 可自定义的处理目标
    • 支持多列分析
  • 任务管理

    • 实时状态监控
    • 详细进度跟踪
    • 错误报告和日志记录
    • 任务取消支持
    • 批量操作控制

设置

前提条件

  • Node.js 和 npm
  • Conda(用于环境管理)
  • Smartsheet API 访问令牌

环境设置

  1. 创建一个专用的 conda 环境:
conda create -n cline_mcp_env python=3.12 nodejs -y
conda activate cline_mcp_env
  1. 安装 Node.js 依赖项:
npm install
  1. 安装 Python 包:
cd smartsheet_ops
pip install -e .
cd ..
  1. 构建 TypeScript 服务器:
npm run build

配置

服务器需要在您的 MCP 设置中进行适当的配置。您可以将其与 Claude Desktop 和 Cline 一起使用。

1. 获取您的 Smartsheet API 密钥

  1. 登录到 Smartsheet
  2. 转到账户 → 个人设置 → API 访问
  3. 生成一个新的访问令牌

2. 为 Cline 配置

配置路径取决于您的操作系统:

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"
      ]
    }
  }
}

3. 为 Claude Desktop 配置(可选)

配置路径取决于您的操作系统:

macOS

~/Library/Application Support/Claude/claude_desktop_config.json

Windows

%APPDATA%\Claude\claude_desktop_config.json

Linux

~/.config/Claude/claude_desktop_config.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"
      ]
    }
  }
}

启动服务器

当 Cline 或 Claude Desktop 需要时,服务器将自动启动。但是,您也可以手动启动它进行测试。

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

验证安装

  1. 启动时,服务器应输出 "Smartsheet MCP server running on stdio"
  2. 使用任何 MCP 工具(例如 get_column_map)测试连接
  3. 检查 Python 环境是否已安装 smartsheet 包:
    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",
      },
    ],
  },
});

更新数据(更新)

// 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)

// 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",
  },
});

// Example 4: Protocol Compliance Scoring
const result = await use_mcp_tool({
  server_name: "smartsheet",
  tool_name: "start_batch_analysis",
  arguments: {
    sheet_id: "your-sheet-id",
    type: "custom",
    sourceColumns: ["Protocol_Steps", "Documentation", "Outcomes"],
    targetColumn: "Compliance_Score",
    customGoal:
      "Score protocol compliance 1-100. Consider: 1) Adherence to required steps, 2) Documentation completeness, 3) Safety measures followed, 4) Outcome reporting. Return only a number.",
  },
});

// Example 5: Research Impact Assessment
const result = await use_mcp_tool({
  server_name: "smartsheet",
  tool_name: "start_batch_analysis",
  arguments: {
    sheet_id: "your-sheet-id",
    type: "custom",
    sourceColumns: ["Research_Findings", "Clinical_Applications"],
    targetColumn: "Impact_Score",
    customGoal:
      "Score research impact 1-100 based on potential benefit to pediatric healthcare. Consider: 1) Clinical relevance, 2) Implementation potential, 3) Patient outcome improvement, 4) Cost-effectiveness. Return only a number.",
  },
});

// Monitor Analysis Progress
const status = await use_mcp_tool({
  server_name: "smartsheet",
  tool_name: "get_job_status",
  arguments: {
    sheet_id: "your-sheet-id",
    jobId: "job-id-from-start-analysis",
  },
});

// Cancel Analysis if Needed
const cancel = await use_mcp_tool({
  server_name: "smartsheet",
  tool_name: "cancel_batch_analysis",
  arguments: {
    sheet_id: "your-sheet-id",
    jobId: "job-id-to-cancel",
  },
});

管理列

// Add a new column
const result = await use_mcp_tool({
  server_name: "smartsheet",
  tool_name: "smartsheet_add_column",
  arguments: {
    sheet_id: "your-sheet-id",
    title: "New Column",
    type: "TEXT_NUMBER",
    index: 2, // Optional position
    validation: true, // Optional
    formula: "=[Column1]+ [Column2]", // Optional
  },
});

// Delete a column
const result = await use_mcp_tool({
  server_name: "smartsheet",
  tool_name: "smartsheet_delete_column",
  arguments: {
    sheet_id: "your-sheet-id",
    column_id: "1234567890",
    validate_dependencies: true, // Optional, default true
  },
});

// Rename a column
const result = await use_mcp_tool({
  server_name: "smartsheet",
  tool_name: "smartsheet_rename_column",
  arguments: {
    sheet_id: "your-sheet-id",
    column_id: "1234567890",
    new_title: "Updated Column Name",
    update_references: true, // Optional, default true
  },
});

### Conditional Bulk Updates

The `smartsheet_bulk_update` tool provides powerful conditional update capabilities. Here are examples ranging from simple to complex:

#### Simple Condition Examples

```typescript
// Example 1: Basic equals comparison
const result = await use_mcp_tool({
  server_name: "smartsheet",
  tool_name: "smartsheet_bulk_update",
  arguments: {
    sheet_id: "your-sheet-id",
    rules: [{
      conditions: [{
        columnId: "status-column-id",
        operator: "equals",
        value: "Pending"
      }],
      updates: [{
        columnId: "status-column-id",
        value: "In Progress"
      }]
    }]
  }
});

// Example 2: Contains text search
const result = await use_mcp_tool({
  server_name: "smartsheet",
  tool_name: "smartsheet_bulk_update",
  arguments: {
    sheet_id: "your-sheet-id",
    rules: [{
      conditions: [{
        columnId: "description-column-id",
        operator: "contains",
        value: "urgent"
      }],
      updates: [{
        columnId: "priority-column-id",
        value: "High"
      }]
    }]
  }
});

// Example 3: Empty value check
const result = await use_mcp_tool({
  server_name: "smartsheet",
  tool_name: "smartsheet_bulk_update",
  arguments: {
    sheet_id: "your-sheet-id",
    rules: [{
      conditions: [{
        columnId: "assignee-column-id",
        operator: "isEmpty"
      }],
      updates: [{
        columnId: "status-column-id",
        value: "Unassigned"
      }]
    }]
  }
});

特定类型比较

// Example 1: Date comparison
const result = await use_mcp_tool({
  server_name: "smartsheet",
  tool_name: "smartsheet_bulk_update",
  arguments: {
    sheet_id: "your-sheet-id",
    rules: [
      {
        conditions: [
          {
            columnId: "due-date-column-id",
            operator: "lessThan",
            value: "2025-02-01T00:00:00Z", // ISO date format
          },
        ],
        updates: [
          {
            columnId: "status-column-id",
            value: "Due Soon",
          },
        ],
      },
    ],
  },
});

// Example 2: Numeric comparison
const result = await use_mcp_tool({
  server_name: "smartsheet",
  tool_name: "smartsheet_bulk_update",
  arguments: {
    sheet_id: "your-sheet-id",
    rules: [
      {
        conditions: [
          {
            columnId: "progress-column-id",
            operator: "greaterThan",
            value: 80, // Numeric value
          },
        ],
        updates: [
          {
            columnId: "status-column-id",
            value: "Nearly Complete",
          },
        ],
      },
    ],
  },
});

// Example 3: Picklist validation
const result = await use_mcp_tool({
  server_name: "smartsheet",
  tool_name: "smartsheet_bulk_update",
  arguments: {
    sheet_id: "your-sheet-id",
    rules: [
      {
        conditions: [
          {
            columnId: "category-column-id",
            operator: "equals",
            value: "Bug", // Must match picklist option exactly
          },
        ],
        updates: [
          {
            columnId: "priority-column-id",
            value: "High",
          },
        ],
      },
    ],
  },
});

复杂多条件示例

// Example 1: Multiple conditions with different operators
const result = await use_mcp_tool({
  server_name: "smartsheet",
  tool_name: "smartsheet_bulk_update",
  arguments: {
    sheet_id: "your-sheet-id",
    rules: [
      {
        conditions: [
          {
            columnId: "priority-column-id",
            operator: "equals",
            value: "High",
          },
          {
            columnId: "due-date-column-id",
            operator: "lessThan",
            value: "2025-02-01T00:00:00Z",
          },
          {
            columnId: "progress-column-id",
            operator: "lessThan",
            value: 50,
          },
        ],
        updates: [
          {
            columnId: "status-column-id",
            value: "At Risk",
          },
          {
            columnId: "flag-column-id",
            value: true,
          },
        ],
      },
    ],
  },
});

// Example 2: Multiple rules with batch processing
const result = await use_mcp_tool({
  server_name: "smartsheet",
  tool_name: "smartsheet_bulk_update",
  arguments: {
    sheet_id: "your-sheet-id",
    rules: [
      {
        conditions: [
          {
            columnId: "status-column-id",
            operator: "equals",
            value: "Complete",
          },
          {
            columnId: "qa-status-column-id",
            operator: "isEmpty",
          },
        ],
        updates: [
          {
            columnId: "qa-status-column-id",
            value: "Ready for QA",
          },
        ],
      },
      {
        conditions: [
          {
            columnId: "status-column-id",
            operator: "equals",
            value: "In Progress",
          },
          {
            columnId: "progress-column-id",
            operator: "equals",
            value: 100,
          },
        ],
        updates: [
          {
            columnId: "status-column-id",
            value: "Complete",
          },
        ],
      },
    ],
    options: {
      lenientMode: true, // Continue on errors
      batchSize: 100, // Process in smaller batches
    },
  },
});

批量更新操作提供:

  1. 操作符支持:

    • equals: 精确值匹配
    • contains: 子字符串匹配
    • greaterThan: 数字/日期比较
    • lessThan: 数字/日期比较
    • isEmpty: 空/空值检查
    • isNotEmpty: 值存在检查
  2. 特定类型功能:

    • TEXT_NUMBER: 字符串/数字比较
    • DATE: ISO 日期解析和比较
    • PICKLIST: 选项验证
    • CHECKBOX: 布尔处理
  3. 处理选项:

    • batchSize: 控制更新批次大小(默认 500)
    • lenientMode: 错误时继续
    • 每个请求多个规则
    • 每个规则多次更新
  4. 结果跟踪:

    • 尝试的总行数
    • 成功/失败计数
    • 详细的错误信息
    • 每行失败详情

## Development

For development with auto-rebuild:

```bash
npm run watch

调试

由于 MCP 服务器通过 stdio 进行通信,调试可能会很困难。服务器实现了全面的错误日志记录,并通过 MCP 协议提供了详细的错误消息。

关键调试功能:

  • 向 stderr 记录错误
  • MCP 响应中的详细错误消息
  • 多层次的类型验证
  • 全面的操作结果报告
  • 列操作的依赖性分析
  • 公式引用跟踪

错误处理

服务器实现了一个多层次的错误处理方法:

  1. MCP 层

    • 验证工具参数
    • 处理协议级错误
    • 提供格式化的错误响应
    • 管理超时和重试
  2. CLI 层

    • 验证命令参数
    • 处理执行错误
    • 以 JSON 格式化错误消息
    • 验证列操作
  3. 操作层

    • 处理 Smartsheet API 错误
    • 验证数据类型和格式
    • 提供详细的错误上下文
    • 管理列依赖
    • 验证公式引用
    • 确保数据完整性

贡献

欢迎贡献!请确保:

  1. TypeScript/Python 代码遵循现有风格
  2. 新功能包括适当的错误处理
  3. 更改保持向后兼容
  4. 更新包含适当的文档
  5. 列操作维护数据完整性
  6. 公式引用得到适当处理

相关 MCP 服务