Token导航 LogoToken导航TokenDH.com
Smartsheet MCP logo
AI代理stdio官方级别未说明来源级核验

Smartsheet MCP

MCP Server

一个提供与Smartsheet无缝集成的模型上下文协议(MCP)服务器,支持通过标准化接口对Smartsheet文档进行自动化操作,特别适用于医疗健康数据分析和工作流管理。

工具数

34

提示词数

0

GitHub Stars

11

资源数

0
数据管理PythonClaude工作流自动化Claude DesktopClaudeCline

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

terilios

提供方

terilios

最后核验

2026/5/17 20:20

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install -e .

详细介绍

智能表MCP服务器

![Tests](https://github.com/terilios/smartsheet-server/actions/workflows/test.yml) ![MIT License](LICENSE) ](https://github.com/terilios/smartsheet-server/releases)

](package.json) ](smartsheet_ops/setup.py)

一种模型上下文协议(MCP)服务器,提供与Smartsheet的无缝集成,通过标准化界面实现Smartsheet文档的自动化操作。该服务器弥合了人工智能驱动的自动化工具和Smartsheet强大的协作平台之间的差距。

概述

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

主要优势

  • 智能集成:将人工智能系统与Smartsheet的协作平台无缝连接
  • 数据完整性:强制执行验证规则并维护跨操作的引用完整性
  • 配方管理:自动保留和更新公式引用
  • 灵活的配置:支持各种列类型和复杂的数据结构
  • 差错恢复:在多个层实现全面的错误处理和验证
  • 医疗保健分析:临床和研究数据的专业分析能力
  • 批处理:高效处理大型医疗数据集
  • 自定义评分:灵活的医疗保健倡议和研究评分系统

用例

  1. 临床研究分析

- 协议合规性评分 - 患者数据分析 - 研究影响评估 - 临床试验数据处理 - 自动研究笔记摘要

  1. 医院运营

- 资源利用分析 - 患者满意度评分 - 部门效率指标 - 员工绩效分析 - 质量指标跟踪

  1. 医疗创新

- 儿科对齐评分 - 创新影响评估 - 研究优先级 - 实施可行性分析 - 临床价值评估

  1. 自动化文档管理

- 程序化图纸结构修改 - 动态列创建和管理 - 自动数据验证和格式化

  1. 数据运营

- 通过完整性检查进行批量数据更新 - 智能重复检测 - 公式感知修改

  1. 系统集成

- 人工智能驱动的纸张定制 - 自动化报告工作流程 - 跨系统数据同步

集成点

服务器与以下设备集成:

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

特性

工具(34个可用)

  1. get_column_map (阅读)

- 从Smartsheet检索列映射和示例数据 - 提供详细的列元数据,包括: - 列类型(系统列、公式、选择列表) - 验证规则 - 格式规范 - 自动编号配置 - 返回上下文的示例数据 - 包括写入数据的使用示例

  1. get_sheet_info (阅读-别名)

- 别名为 get_column_map 提供相同的功能 - 保持与现有集成的向后兼容性

  1. smartsheet_write (创建)

- 通过智能处理将新行写入Smartsheet: - 系统管理列 - 多选选择列表值 - 基于公式的列 - 实现自动重复检测 - 将新行附加到工作表底部 (在现有条目之后) - 返回包括行ID在内的详细操作结果

  1. smartsheet_update (更新)

- 更新智能表中的现有行 - 支持部分更新(修改特定字段) - 通过验证保持数据完整性 - 一致地处理多选字段 - 按行返回成功/失败的详细信息

  1. smartsheet_delete (删除)

- 从智能表中删除行 - 支持批量删除多行 - 验证行是否存在和权限 - 返回详细的操作结果

  1. smartsheet_search (搜索)

- 跨工作表执行高级搜索 - 支持多种搜索模式: - 支持正则表达式的文本搜索 - PICKLIST列的精确值匹配 - 区分大小写和整词选项 - 列特定搜索功能 - 退货: - 匹配的行ID(主要结果) - 详细的比赛信息 - 搜索元数据和统计数据

  1. smartsheet_add_column (栏目管理)

- 向智能表添加新列 - 支持所有列类型: - TEXT_编号 - 日期 - 复选框 - 选择列表 - 联系人列表 - 可配置选项: - 位置索引 - 验证规则 - 公式定义 - 选择列表选项 - 通过验证强制列限制(400) - 返回详细的列信息

  1. smartsheet_delete_column (栏目管理)

- 通过依赖性检查安全删除列 - 删除前验证公式引用 - 防止删除公式中使用的列 - 返回详细的依赖关系信息 - 支持强制删除选项

  1. smartsheet_rename_column (栏目管理)

- 在保留关系的同时重命名列 - 自动更新公式引用 - 维护数据完整性 - 验证名称唯一性 - 返回详细的更新信息

  1. smartsheet_bulk_update (有条件更新)

- 根据规则执行有条件的批量更新 - 支持复杂条件评估: - 多个运算符(等于、包含、大于等) - 特定类型的比较(文本、日期、数字) - 空/非空支票 - 可配置大小的批处理 - 全面的错误处理和回滚 - 详细操作结果跟踪

  1. get_all_row_ids (公用设施)

- 从智能表中检索所有行ID - 适用于批量操作和数据分析 - 返回行标识符的完整列表 - 高效支撑大纸张

  1. start_batch_analysis (医疗保健分析)

- 使用AI分析处理整个工作表或选定行 - 支持多种分析类型: - 临床记录总结 - 患者反馈的情绪分析 - 医疗保健计划的自定义评分 - 研究影响评估 - 特征: - 自动批处理(每批3行,以获得最佳性能) - 进度跟踪和状态监控 - 详细报告的错误处理 - 通过Azure OpenAI实现可定制的分析目标 - 支持多个源列 - 大文本的令牌感知内容分块

  1. get_job_status (分析监测)

- 跟踪批量分析进度 - 提供详细的作业统计信息: - 要处理的行总数 - 已处理行数 - 行计数失败 - 处理时间戳 - 实时状态更新 - 全面的错误报告

  1. cancel_batch_analysis (作业控制)

- 取消正在运行的批处理分析作业 - 优雅的进程终止 - 保持数据一致性 - 返回最终作业状态

  1. list_workspaces (工作区管理)

- 列出所有可访问的工作区 - 返回工作区ID、名称和永久链接 - 包括访问级别信息 - 支持组织范围内的工作空间发现

  1. get_workspace (工作区管理)

- 检索详细的工作区信息 - 返回包含的工作表、文件夹、报告和仪表板 - 提供访问级别和权限详细信息 - 支持工作区内容探索

  1. create_workspace (工作区管理)

- 使用指定名称创建新工作区 - 返回新的工作区ID和确认 - 启用程序化工作区组织 - 支持从弃用的文件夹端点迁移

  1. create_sheet_in_workspace (工作区管理)

- 直接在工作空间中创建新图纸 - 支持所有列类型和配置 - 返回新的工作表ID和详细信息 - 支持程序化工作表创建和组织

  1. list_workspace_sheets (工作区管理)

- 列出特定工作空间中的所有工作表 - 返回工作表ID、名称和永久链接 - 包括创建和修改时间戳 - 支持工作区内容发现

  1. smartsheet_upload_attachment (附件管理)

- 将文件上传到工作表、行或注释中 - 支持多种附件类型和文件大小验证 - 返回附件元数据和上传状态

  1. smartsheet_get_attachments (附件管理)

- 列出表或行的所有附件 - 返回全面的附件元数据 - 包括文件URL、大小和创建者信息

  1. smartsheet_download_attachment (附件管理)

- 将特定附件下载到本地文件系统 - 根据需要创建目录并验证下载 - 返回下载状态和文件信息

  1. smartsheet_delete_attachment (附件管理)

- 从工作表中删除附件 - 验证权限并返回删除状态

  1. smartsheet_create_discussion (讨论管理)

- 在工作表或行上创建新的讨论线程 - 支持初始注释和可选标题 - 返回讨论元数据和创建状态

  1. smartsheet_add_comment (讨论管理)

- 向现有讨论添加评论 - 保持线程化对话结构 - 返回评论详细信息和时间戳

  1. smartsheet_get_discussions (讨论管理)

- 列出工作表或行的所有讨论 - 可选择包含所有评论作为回应 - 返回讨论元数据和参与者信息

  1. smartsheet_get_comments (讨论管理)

- 获取特定讨论线程中的所有评论 - 包括附件信息(如果存在) - 返回按时间顺序排列的评论历史记录

  1. smartsheet_delete_comment (讨论管理)

- 从讨论中删除特定评论 - 删除前验证权限 - 返回删除确认

  1. smartsheet_get_cell_history (细胞历史和审计)

- 获取单个单元格的修改历史记录 - 包括用户归因和时间戳 - 跟踪值更改、公式和格式

  1. smartsheet_get_row_history (细胞历史和审计)

- 获取整行的更改历史记录 - 提供所有单元格更改的时间轴 - 支持特定列过滤和完整的审计跟踪

  1. smartsheet_get_sheet_cross_references (交叉表参考)

- 分析工作表中的所有跨工作表引用 - 识别引用其他工作表的公式 - 公式模式和依赖关系的详细分析

  1. smartsheet_find_sheet_references (交叉表参考)

- 查找引用特定目标工作表的所有工作表 - 在工作区或整个可访问的工作表中搜索 - 全面的参考地图绘制和影响分析

  1. smartsheet_validate_cross_references (交叉表参考)

- 验证所有跨表引用是否存在断开的链接 - 识别无法访问或已删除的参考表 - 为损坏的参考文献建议替代表格

  1. smartsheet_create_cross_reference (交叉表参考)

- 创建INDEX_MATCH、VLOOKUP、SUMIF、COUNTIF公式 - 以编程方式构建跨表引用公式 - 支持自定义公式模板和多种公式类型

资源(4个静态模板+5个动态模板)

服务器提供静态资源和动态资源模板,以增强数据访问和上下文信息。

静态资源

  1. smartsheet://templates/project-plan - 项目计划模板

- 带有最佳实践的预构建项目计划模板 - 包括用于任务管理的最佳列结构 - 提供有关依赖关系和资源分配的指导

  1. smartsheet://templates/task-tracker - 任务跟踪器模板

- 用于团队协作的简单任务跟踪模板 - 专注于进度监控,没有复杂的依赖关系 - 非常适合敏捷团队和简单的工作流程

  1. smartsheet://schemas/column-types - 列类型参考

- 所有支持的Smartsheet列类型的完整参考 - 包括每种类型的API支持级别(完整、有限、只读) - 对于理解列功能和限制至关重要

  1. smartsheet://best-practices/formulas - 配方最佳实践

- 常用公式模式和计算示例 - 性能和可维护性的最佳实践 - 交叉表参考指南

动态资源模板

  1. smartsheet://{sheet_id}/summary - 工作表摘要

- 自动生成包含关键指标和健康状态的摘要 - 进度指标和完成情况统计 - 表单数据的实时分析

  1. smartsheet://{sheet_id}/gantt-data - 甘特图数据

- 用于可视化的标准化甘特图数据格式 - 针对项目管理工具优化的时间线数据 - 依赖关系和关键路径信息

  1. smartsheet://{workspace_id}/overview - 工作区概览

- 工作空间内容的全面概述 - 结构化格式的所有工作表、报告和仪表板 - 访问级别和组织层次结构

  1. smartsheet://{sheet_id}/dependencies - 依赖关系图

- 项目表的可视化依赖关系映射 - 任务关系和关键路径分析 - 瓶颈识别和优化建议

  1. smartsheet://{sheet_id}/health-report - 工作表健康报告

- 识别数据质量问题的健康分析 - 缺失数据检测和破损配方识别 - 优化机会和建议

提示(6个可用)

智能提示模板,为常见的Smartsheet操作和分析提供指导性帮助。

  1. create_project_plan - 项目计划创建指南

- 使用最佳实践指导项目计划创建 - 基于项目类型和持续时间的模板建议 - 工作分解结构建议

  1. analyze_project_status - 项目健康分析

- 综合项目健康分析及建议 - 时间线遵守和资源利用洞察 - 风险识别和缓解策略

  1. optimize_workflow - 工作流程优化

- 改进图纸结构和工作流程的建议 - 自动化机会和效率提高 - 用户体验提升建议

  1. generate_insights - 数据洞察提取

- 从表格数据中提取关键见解和模式 - 趋势分析和异常检测 - 可操作的情报和决策支持

  1. create_dashboard_summary - 高管仪表板创建

- 从多个表格生成执行摘要 - 高级KPI跟踪和战略见解 - 以领导层为重点的报告和建议

  1. setup_conditional_formatting - 条件格式指南

- 逐步设置条件格式 - 可视化数据表示最佳实践 - 状态指示器和进度跟踪配置

核心能力

  • 列类型管理

- 处理系统列类型(AUTO_NUMBER、CREATED_DATE等) - 支持公式解析和依赖关系跟踪 - 管理选择列表选项和多选值 - 全面的列操作(添加、删除、重命名) - 公式参考保存和更新

  • 数据验证

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

  • 搜索功能

- 高级搜索功能 - 类型感知搜索: - PICKLIST值的精确匹配 - 文本字段的模式匹配 - 数字比较 - 可配置的搜索选项: - 区分大小写 - 整词匹配 - 列过滤 - 综合结果: - 匹配行的行ID - 详细的匹配上下文 - 搜索统计

  • 元数据处理

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

  • 医疗保健分析

- 使用Azure OpenAI进行临床记录摘要 - 患者反馈情绪分析 - 协议合规性评分 - 研究影响评估 - 资源利用分析 - 自定义分析,优化提示生成

  • 批处理

- 自动行批处理(每批3行,以获得最佳性能) - 进度跟踪和监控 - 错误处理和恢复 - 可定制的处理目标 - 多列分析支持 - 大文本的令牌感知内容分块 - 使用ThreadPoolExecutor进行后台作业处理

  • 作业管理

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

  • 交叉表参考

- 公式分析和依赖关系映射 - 跨表参考检测和验证 - 断链识别及修复建议 - 自动公式生成(INDEX_MATCH、VLOOKUP、SUMIF、COUNTIF) - 跨工作区的参考影响分析 - 自定义公式模板支持

设置

先决条件

  • Node.js和npm
  • Conda(环境管理)
  • Smartsheet API访问令牌
  • Azure OpenAI 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 ..

注意:Python包包括以下依赖项:

  • smartsheet-python-sdk -Smartsheet API客户端
  • python-dotenv -环境变量管理
  • openai -Azure OpenAI集成
  • tiktoken -用于AI分析的令牌计数
  1. 构建TypeScript服务器:
npm run build

配置

服务器支持两种传输模式:

  • STDIO传输 (默认):用于本地开发和CLI使用
  • HTTP传输:用于基于网络的客户端和网络访问

1.获取Smartsheet API密钥

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

2.配置STDIO传输(临床/本地)

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

macOS:

~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json

视窗:

%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",
        "--transport",
        "stdio"
      ],
      "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",
        "get_all_row_ids",
        "list_workspaces",
        "get_workspace",
        "create_workspace",
        "create_sheet_in_workspace",
        "list_workspace_sheets"
      ]
    }
  }
}

3.配置HTTP传输

对于基于web的MCP客户端或网络访问,请使用HTTP传输模式:

启动服务器:

# Start with default port (3000)
SMARTSHEET_API_KEY=your-api-key PYTHON_PATH=/path/to/python smartsheet-server --transport http

# Start with custom port
SMARTSHEET_API_KEY=your-api-key PYTHON_PATH=/path/to/python smartsheet-server --transport http --port 8080

客户端配置:

{
  "mcpServers": {
    "smartsheet-server": {
      "type": "http",
      "url": "http://localhost:3000/mcp",
      "headers": {
        "Authorization": "Bearer your-optional-auth-token"
      }
    }
  }
}

健康检查:

HTTP服务器提供健康检查端点:

curl http://localhost:3000/health
# Response: {"status":"ok","server":"smartsheet-mcp"}

启动服务器

STDIO传输(默认)

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

macOS/Linux:

# Activate the environment
conda activate cline_mcp_env

# Start with STDIO transport (default)
PYTHON_PATH=/Users/[username]/anaconda3/envs/cline_mcp_env/bin/python3 SMARTSHEET_API_KEY=your-api-key node build/index.js

# Or explicitly specify STDIO transport
PYTHON_PATH=/Users/[username]/anaconda3/envs/cline_mcp_env/bin/python3 SMARTSHEET_API_KEY=your-api-key node build/index.js --transport stdio

视窗:

:: Activate the environment
conda activate cline_mcp_env

:: Start with STDIO transport
set PYTHON_PATH=C:\Users\[username]\anaconda3\envs\cline_mcp_env\python.exe
set SMARTSHEET_API_KEY=your-api-key
node build\index.js --transport stdio

HTTP传输

对于基于web的客户端或网络访问:

macOS/Linux:

# Activate the environment
conda activate cline_mcp_env

# Start HTTP server on default port (3000)
PYTHON_PATH=/Users/[username]/anaconda3/envs/cline_mcp_env/bin/python3 SMARTSHEET_API_KEY=your-api-key node build/index.js --transport http

# Start HTTP server on custom port
PYTHON_PATH=/Users/[username]/anaconda3/envs/cline_mcp_env/bin/python3 SMARTSHEET_API_KEY=your-api-key node build/index.js --transport http --port 8080

视窗:

:: Activate the environment
conda activate cline_mcp_env

:: Start HTTP 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 --transport http --port 3000

命令行选项

# View help
node build/index.js --help

# Available options:
--transport     # "stdio" (default) or "http"
--port        # HTTP port (default: 3000, only used with --transport http)
--help, -h            # Show help message

验证安装

STDIO传输

  1. 启动时,服务器应输出“Smartsheet MCP服务器在stdio上运行”
  2. 使用任何MCP工具(例如get_column_map)测试连接

HTTP传输

  1. 启动时,服务器应输出“Smartsheet MCP服务器在HTTP端口3000上运行”
  2. 测试运行状况端点: curl http://localhost:3000/health
  3. 预期响应: {"status":"ok","server":"smartsheet-mcp"}

Python环境

检查Python环境是否安装了所需的包:

conda activate cline_mcp_env
pip show smartsheet-python-sdk openai tiktoken python-dotenv

Python包应包含以下关键依赖项:

  • smartsheet-python-sdk>=2.105.1 -Smartsheet API客户端
  • openai>=1.0.0 -Azure OpenAI集成
  • tiktoken>=0.5.0 -用于AI分析的令牌计数
  • python-dotenv>=1.0.0 -环境变量管理

使用示例

获取列信息(已读)

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

// 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",
    rowIds: ["row1", "row2", "row3"], // Optional: specify rows, or omit for all rows
    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",
    rowIds: ["row1", "row2"], // Optional: specify rows, or omit for all rows
  },
});

// 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",
    rowIds: ["row1", "row2"], // Optional: specify rows, or omit for all rows
  },
});

// Example 4: Get All Row IDs for Batch Processing
const allRows = await use_mcp_tool({
  server_name: "smartsheet",
  tool_name: "get_all_row_ids",
  arguments: {
    sheet_id: "your-sheet-id",
  },
});

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

工作区管理示例

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

资源使用示例

// Access static resources
const projectTemplate = await access_mcp_resource({
  server_name: "smartsheet",
  uri: "smartsheet://templates/project-plan",
});

const columnTypes = await access_mcp_resource({
  server_name: "smartsheet",
  uri: "smartsheet://schemas/column-types",
});

const formulaGuide = await access_mcp_resource({
  server_name: "smartsheet",
  uri: "smartsheet://best-practices/formulas",
});

// Access dynamic resources
const sheetSummary = await access_mcp_resource({
  server_name: "smartsheet",
  uri: "smartsheet://8596778555232132/summary",
});

const ganttData = await access_mcp_resource({
  server_name: "smartsheet",
  uri: "smartsheet://8596778555232132/gantt-data",
});

const workspaceOverview = await access_mcp_resource({
  server_name: "smartsheet",
  uri: "smartsheet://6621332407379844/overview",
});

const dependencyMap = await access_mcp_resource({
  server_name: "smartsheet",
  uri: "smartsheet://8596778555232132/dependencies",
});

const healthReport = await access_mcp_resource({
  server_name: "smartsheet",
  uri: "smartsheet://8596778555232132/health-report",
});

提示使用示例

// Project plan creation guidance
const projectPlanPrompt = await use_mcp_tool({
  server_name: "smartsheet",
  tool_name: "get_prompt",
  arguments: {
    name: "create_project_plan",
    arguments: {
      project_name: "Website Redesign",
      project_type: "software",
      duration_estimate: "3 months",
    },
  },
});

// Project health analysis
const analysisPrompt = await use_mcp_tool({
  server_name: "smartsheet",
  tool_name: "get_prompt",
  arguments: {
    name: "analyze_project_status",
    arguments: {
      sheet_id: "8596778555232132",
      focus_area: "timeline",
    },
  },
});

// Workflow optimization suggestions
const optimizationPrompt = await use_mcp_tool({
  server_name: "smartsheet",
  tool_name: "get_prompt",
  arguments: {
    name: "optimize_workflow",
    arguments: {
      sheet_id: "8596778555232132",
      workflow_type: "approval",
    },
  },
});

// Data insights extraction
const insightsPrompt = await use_mcp_tool({
  server_name: "smartsheet",
  tool_name: "get_prompt",
  arguments: {
    name: "generate_insights",
    arguments: {
      sheet_id: "8596778555232132",
      insight_type: "bottlenecks",
    },
  },
});

// Executive dashboard creation
const dashboardPrompt = await use_mcp_tool({
  server_name: "smartsheet",
  tool_name: "get_prompt",
  arguments: {
    name: "create_dashboard_summary",
    arguments: {
      workspace_id: "6621332407379844",
      summary_focus: "risks",
    },
  },
});

// Conditional formatting setup
const formattingPrompt = await use_mcp_tool({
  server_name: "smartsheet",
  tool_name: "get_prompt",
  arguments: {
    name: "setup_conditional_formatting",
    arguments: {
      sheet_id: "8596778555232132",
      formatting_goal: "status indicators",
    },
  },
});

发展

对于自动重建的开发:

npm run watch

CI/CD管道

该项目通过GitHub Actions实现了一个全面的8级CI/CD管道,确保所有组件的代码质量、安全性和可靠性。

管道结构

CI/CD管道由8个并行和顺序运行的协调作业组成,以实现最佳效率:

  1. TypeScript质量检查 -ESLint、类型检查、格式验证
  2. Python质量检查 -黑色,Flake8,MyPy类型检查
  3. TypeScript测试 -Node.js 16、18、20上的覆盖率矩阵测试
  4. Python测试 -Python 3.8、3.9、3.10、3.11上的矩阵测试,覆盖率
  5. 综合覆盖范围 -统一覆盖报告和Codecov集成
  6. 集成测试 -端到端验证和MCP服务器启动验证
  7. 安全扫描 -npm审计、Python安全、Bandit安全分析
  8. 构建和打包 -工件创建和部署验证

关键管道特征

质量保证:

  • 多语言支持:完整的TypeScript和Python管道覆盖
  • 矩阵测试:跨平台兼容性验证
  • 代码质量门:ESLint、黑色、Flake8、MyPy、TypeScript严格模式
  • 保险范围执行:自动覆盖阈值验证
  • 安全扫描:与安全部门和Bandit进行定期漏洞评估

性能优化:

  • 并行执行:独立作业同时运行,以获得更快的反馈
  • 智能高速缓存:跨运行缓存的节点模块和Python依赖项
  • 条件执行:仅对PR进行性能测试,全面覆盖主
  • 工件管理:构建保存7-30天的工件

集成和部署:

  • MCP协议验证:服务器启动和协议合规性测试
  • Docker支持:多平台容器构建(linux/amd64、linux/arm64)
  • 自动发布:已标记版本并生成更改日志的版本
  • 依赖管理:每周安全审计和更新自动化

工作流触发器

# Comprehensive testing on main branches
- push: [main, develop]
- pull_request: [main, develop]

# Additional workflows
- release: version tags (v*.*.*)
- security: weekly dependency scans
- performance: PR-specific testing

状态监控

![CI Pipeline](https://github.com/terilios/smartsheet-server/actions/workflows/ci.yml) ![Security Scan](https://github.com/terilios/smartsheet-server/actions/workflows/dependency-update.yml) ![Codecov Coverage](https://codecov.io/gh/terilios/smartsheet-server)

该管道提供全面的通知和工件管理,确保所有利益相关者都能了解构建状态、测试结果和部署准备情况。

测试和质量保证

该项目通过自动化的CI/CD管道在TypeScript和Python组件之间保持全面的测试覆盖率和质量保证。

测试基础设施

测试状态:54/54个TypeScript测试通过,5/5个Python测试通过

我们的全面测试策略包括:

  • 单元测试:TypeScript的Jest(54个测试),Python的pytest(5个核心测试)
  • 集成测试:跨组件测试和MCP协议验证
  • 代码质量:ESLint,TypeScript检查,黑色,Flake8,MyPy
  • 安全扫描:npm审计、Python安全检查、Bandit分析
  • 覆盖率分析:将覆盖率报告与Codecov集成相结合
  • 性能测试:启动时间测量和基准跟踪

测试覆盖率概述

当前覆盖指标:

  • TypeScript覆盖率:全面覆盖MCP服务器实施
  • Python覆盖率:核心操作和CLI功能
  • 合并报告:两种语言的统一覆盖分析
  • 自动跟踪:通过Codecov进行实时覆盖监测

快速测试命令

# Essential testing commands for daily development
npm run ci:check          # Pre-commit validation (recommended before push)
npm run test:all          # Run all tests with coverage
npm run coverage          # Full coverage analysis with combined reporting
npm run coverage:open     # View coverage reports in browser

# Individual test suites
npm test                  # TypeScript tests only
npm run test:python       # Python tests only
npm run test:coverage     # TypeScript with coverage
npm run test:python:coverage  # Python with coverage

# Development testing
npm run test:watch        # Watch mode for continuous testing
npm run coverage:clean    # Coverage without external uploads

综合测试命令

# Quality assurance
npm run lint              # ESLint for TypeScript
npm run lint:fix          # Auto-fix linting issues
npm run format            # Prettier code formatting
npm run typecheck         # TypeScript type validation

# Coverage and reporting  
npm run badges:update     # Generate coverage badges
npm run coverage:ci       # CI-optimized coverage reporting
npm run coverage:view     # Open all coverage reports
npm run coverage:combined # View combined coverage report

# Build and validation
npm run build             # Build TypeScript
npm run watch             # Development build with watch
npm run inspector         # MCP inspector for tool testing

测试报告和工件

运行测试后,可以获得详细的报告:

  • TypeScript覆盖率: ./coverage/index.html
  • Python覆盖率: ./smartsheet_ops/coverage/index.html
  • 综合覆盖范围: ./coverage-combined/index.html
  • 测试工件:可用于CI/CD管道运行

质量阈值

该项目执行严格的质量标准:

  • TypeScript覆盖率:最低60%(每个组件可配置)
  • Python覆盖率:通过逐行报告,总体占80%
  • 代码质量:ESLint规则,TypeScript严格模式,Python黑/Flake8
  • 安全:定期依赖性审计和漏洞扫描
  • 演出:启动时间监控和回归检测

Docker支持

构建并运行容器化版本:

# Build Docker image
docker build -t smartsheet-server .

# Run with environment variables
docker run -e SMARTSHEET_API_KEY=your_key -e PYTHON_PATH=/usr/local/bin/python smartsheet-server

调试

由于MCP服务器通过stdio进行通信,调试可能具有挑战性。服务器实现了全面的错误记录,并通过MCP协议提供详细的错误消息。

主要调试功能:

  • 记录到stderr时出错
  • MCP响应中的详细错误消息
  • 多级类型验证
  • 全面运营结果报告
  • 列操作的依赖性分析
  • 公式参考跟踪

错误处理

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

  1. MCP层

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

  1. CLI层

- 验证命令参数 - 处理执行错误 - 将错误消息格式化为JSON - 验证列操作

  1. 操作层

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

贡献

欢迎投稿!请确保:

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

目录标签

目录标签

数据管理PythonClaude工作流自动化Smartsheet集成本地部署医疗数据分析自动化工作流项目协作

支持客户端

Claude DesktopClaudeCline

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

token

运行时(runtime,运行环境)

Python

部署方式(deploymentType,部署类型)

remote-capable

工具数量(toolCount,工具数)

34

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiotokenremote-capable

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP