智能协作服务
提供了与Smartsheet的无缝集成,通过标准化接口实现对Smartsheet文档的自动化操作,该接口将基于AI的自动化工具与Smartsheet的协作平台相连接。
可用工具 (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 协作平台
- 数据完整性:在操作过程中强制执行验证规则并维护引用完整性
- 公式管理:自动保留和更新公式引用
- 灵活配置:支持多种列类型及复杂数据结构
- 错误恢复能力:在多个层面实施全面的错误处理和验证
- 医疗分析:针对临床和研究数据的专业分析能力
- 批量处理:高效处理大型医疗数据集
- 自定义评分:为医疗项目和研究提供灵活的评分系统
使用案例
-
临床研究分析
- 协议合规性评分
- 患者数据分析
- 研究影响评估
- 临床试验数据处理
- 自动化研究报告摘要
-
医院运营
- 资源利用率分析
- 患者满意度评分
- 部门效率指标
- 员工绩效分析
- 质量指标跟踪
-
医疗创新
- 儿科一致性评分
- 创新影响评估
- 研究优先级排序
- 实施可行性分析
- 临床价值评估
-
自动化文档管理
- 程序化的表格结构调整
- 动态列创建与管理
- 自动化数据验证和格式化
-
数据操作
- 批量数据更新并附带完整性检查
- 智能重复项检测
- 公式感知修改
-
系统集成
- 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
-
TypeScript MCP 层 (
src/index.ts)- 处理MCP协议通信
- 注册和管理可用工具
- 将请求路由到Python实现
- 管理配置和错误处理
-
Python CLI 层 (
smartsheet_ops/cli.py)- 提供操作的命令行接口
- 处理参数解析和验证
- 实现重复检测
- 管理JSON数据格式化
-
核心操作层 (
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
功能
工具
-
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
-
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
- Writes new rows to Smartsheet with intelligent handling of:
-
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
-
smartsheet_delete(Delete)- Deletes rows from a Smartsheet
- Supports batch deletion of multiple rows
- Validates row existence and permissions
- Returns detailed operation results
-
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
-
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
-
smartsheet_rename_column(Column Management)- Renames columns while preserving relationships
- Updates formula references automatically
- Maintains data integrity
- Validates name uniqueness
- Returns detailed update information
-
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
-
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
-
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
-
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 访问令牌
环境设置
- 创建一个专用的 conda 环境:
conda create -n cline_mcp_env python=3.12 nodejs -y
conda activate cline_mcp_env
- 安装 Node.js 依赖项:
npm install
- 安装 Python 包:
cd smartsheet_ops
pip install -e .
cd ..
- 构建 TypeScript 服务器:
npm run build
配置
服务器需要在您的 MCP 设置中进行适当的配置。您可以将其与 Claude Desktop 和 Cline 一起使用。
1. 获取您的 Smartsheet API 密钥
- 登录到 Smartsheet
- 转到账户 → 个人设置 → API 访问
- 生成一个新的访问令牌
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
验证安装
- 启动时,服务器应输出 "Smartsheet MCP server running on stdio"
- 使用任何 MCP 工具(例如 get_column_map)测试连接
- 检查 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
},
},
});
批量更新操作提供:
-
操作符支持:
equals: 精确值匹配contains: 子字符串匹配greaterThan: 数字/日期比较lessThan: 数字/日期比较isEmpty: 空/空值检查isNotEmpty: 值存在检查
-
特定类型功能:
- TEXT_NUMBER: 字符串/数字比较
- DATE: ISO 日期解析和比较
- PICKLIST: 选项验证
- CHECKBOX: 布尔处理
-
处理选项:
batchSize: 控制更新批次大小(默认 500)lenientMode: 错误时继续- 每个请求多个规则
- 每个规则多次更新
-
结果跟踪:
- 尝试的总行数
- 成功/失败计数
- 详细的错误信息
- 每行失败详情
## Development
For development with auto-rebuild:
```bash
npm run watch
调试
由于 MCP 服务器通过 stdio 进行通信,调试可能会很困难。服务器实现了全面的错误日志记录,并通过 MCP 协议提供了详细的错误消息。
关键调试功能:
- 向 stderr 记录错误
- MCP 响应中的详细错误消息
- 多层次的类型验证
- 全面的操作结果报告
- 列操作的依赖性分析
- 公式引用跟踪
错误处理
服务器实现了一个多层次的错误处理方法:
-
MCP 层
- 验证工具参数
- 处理协议级错误
- 提供格式化的错误响应
- 管理超时和重试
-
CLI 层
- 验证命令参数
- 处理执行错误
- 以 JSON 格式化错误消息
- 验证列操作
-
操作层
- 处理 Smartsheet API 错误
- 验证数据类型和格式
- 提供详细的错误上下文
- 管理列依赖
- 验证公式引用
- 确保数据完整性
贡献
欢迎贡献!请确保:
- TypeScript/Python 代码遵循现有风格
- 新功能包括适当的错误处理
- 更改保持向后兼容
- 更新包含适当的文档
- 列操作维护数据完整性
- 公式引用得到适当处理