Servidor MCP de Smartsheet
Un servidor de Protocolo de Contexto de Modelo (MCP) que proporciona una integración fluida con Smartsheet, lo que permite operaciones automatizadas en documentos de Smartsheet mediante una interfaz estandarizada. Este servidor conecta las herramientas de automatización basadas en IA con la potente plataforma de colaboración de Smartsheet.
Descripción general
El servidor MCP de Smartsheet está diseñado para facilitar interacciones inteligentes con Smartsheet, proporcionando un conjunto robusto de herramientas para la gestión de documentos, las operaciones con datos y la personalización de columnas. Es un componente fundamental en los flujos de trabajo automatizados, permitiendo que los sistemas de IA interactúen programáticamente con los datos de Smartsheet, manteniendo la integridad de los datos y aplicando las reglas de negocio.
Beneficios clave
Integración inteligente : conecta sin problemas los sistemas de IA con la plataforma de colaboración de Smartsheet
Integridad de los datos : aplica reglas de validación y mantiene la integridad referencial en todas las operaciones.
Gestión de fórmulas : conserva y actualiza automáticamente las referencias de fórmulas
Configuración flexible : admite varios tipos de columnas y estructuras de datos complejas
Resiliencia de errores : implementa un manejo y validación de errores integral en múltiples capas
Análisis de atención médica : capacidades de análisis especializadas para datos clínicos y de investigación
Procesamiento por lotes : gestión eficiente de grandes conjuntos de datos sanitarios
Puntuación personalizada : sistemas de puntuación flexibles para iniciativas e investigaciones sanitarias
Casos de uso
Análisis de investigación clínica
Puntuación de cumplimiento del protocolo
Análisis de datos de pacientes
Evaluación del impacto de la investigación
Procesamiento de datos de ensayos clínicos
Resumen automatizado de notas de investigación
Operaciones del hospital
Análisis de utilización de recursos
Puntuación de la satisfacción del paciente
Métricas de eficiencia del departamento
Análisis del rendimiento del personal
Seguimiento de métricas de calidad
Innovación en la atención sanitaria
Puntuación de alineación pediátrica
Evaluación del impacto de la innovación
Priorización de la investigación
Análisis de viabilidad de implementación
Evaluación del valor clínico
Gestión automatizada de documentos
Modificaciones programáticas de la estructura de la hoja
Creación y gestión dinámica de columnas
Validación y formato de datos automatizados
Operaciones de datos
Actualizaciones masivas de datos con comprobaciones de integridad
Detección inteligente de duplicados
Modificaciones que tienen en cuenta la fórmula
Integración de sistemas
Personalización de hojas impulsada por IA
Flujos de trabajo de informes automatizados
Sincronización de datos entre sistemas
Puntos de integración
El servidor se integra con:
API de Smartsheet para operaciones de datos
Protocolo MCP para comunicación estandarizada
Herramientas de desarrollo local a través de la interfaz stdio
Sistemas de monitoreo mediante registro estructurado
Related MCP server: Google Drive MCP Server
Arquitectura
El servidor implementa una arquitectura de puente entre MCP y 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:#333Capa MCP de TypeScript (
src/index.ts)Maneja la comunicación del protocolo MCP
Registra y gestiona las herramientas disponibles
Enruta las solicitudes a la implementación de Python
Gestiona la configuración y el manejo de errores.
Capa CLI de Python (
smartsheet_ops/cli.py)Proporciona una interfaz de línea de comandos para operaciones.
Maneja el análisis y validación de argumentos
Implementa detección de duplicados
Administra el formato de datos JSON
Capa de operaciones centrales (
smartsheet_ops/__init__.py)Implementa interacciones de la API de Smartsheet
Maneja la gestión de tipos de columnas complejas
Proporciona normalización y validación de datos.
Administra las columnas del sistema y el análisis de fórmulas.
Flujo de gestión de columnas
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 ResponseFlujo de manejo de errores
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:#333Características
Herramientas
get_column_map(Leer)Recupera la asignación de columnas y datos de muestra de una hoja de cálculo Smartsheet
Proporciona metadatos de columna detallados que incluyen:
Tipos de columnas (columnas del sistema, fórmulas, listas de selección)
Reglas de validación
Especificaciones de formato
Configuraciones de numeración automática
Devuelve datos de muestra para el contexto
Incluye ejemplos de uso para escribir datos.
smartsheet_write(Crear)Escribe nuevas filas en Smartsheet con manejo inteligente de:
Columnas administradas por el sistema
Valores de lista de selección múltiple
Columnas basadas en fórmulas
Implementa la detección automática de duplicados
Devuelve resultados detallados de la operación, incluidos los identificadores de fila
smartsheet_update(Actualizar)Actualiza filas existentes en una Smartsheet
Admite actualizaciones parciales (modificar campos específicos)
Mantiene la integridad de los datos con validación.
Maneja campos de selección múltiple de manera consistente
Devuelve detalles de éxito/fracaso por fila
smartsheet_delete(Eliminar)Elimina filas de una Smartsheet
Admite la eliminación por lotes de varias filas
Valida la existencia de filas y permisos
Devuelve resultados detallados de la operación
smartsheet_add_column(Administración de columnas)Agrega nuevas columnas a una Smartsheet
Admite todos los tipos de columnas:
NÚMERO DE TEXTO
FECHA
CAJA
LISTA DE SELECCIÓN
LISTA DE CONTACTOS
Opciones configurables:
Índice de posición
Reglas de validación
Definiciones de fórmulas
Opciones de lista de selección
Aplica el límite de columna (400) con validación
Devuelve información detallada de la columna
smartsheet_delete_column(Administración de columnas)Elimina columnas de forma segura con comprobación de dependencia
Valida las referencias de fórmulas antes de eliminarlas
Evita la eliminación de columnas utilizadas en fórmulas
Devuelve información detallada de dependencia
Admite la opción de eliminación forzada
smartsheet_rename_column(Administración de columnas)Cambia el nombre de las columnas conservando las relaciones
Actualiza las referencias de fórmulas automáticamente
Mantiene la integridad de los datos
Valida la unicidad del nombre
Devuelve información de actualización detallada
smartsheet_bulk_update(Actualizaciones condicionales)Realiza actualizaciones masivas condicionales basadas en reglas
Admite la evaluación de condiciones complejas:
Operadores múltiples (igual, contiene, mayor que, etc.)
Comparaciones específicas de tipo (texto, fechas, números)
Cheques vacíos/no vacíos
Procesamiento por lotes con tamaño configurable
Manejo integral de errores y reversión
Seguimiento detallado de los resultados de las operaciones
start_batch_analysis(Análisis de salud)Procesa hojas enteras o filas seleccionadas con análisis de IA
Admite múltiples tipos de análisis:
Resumen de notas clínicas
Análisis de sentimientos de los comentarios de los pacientes
Puntuación personalizada para iniciativas de atención sanitaria
Evaluación del impacto de la investigación
Características:
Procesamiento automático por lotes (50 filas por lote)
Seguimiento del progreso y control del estado
Manejo de errores con informes detallados
Objetivos de análisis personalizables
Compatibilidad con múltiples columnas de origen
get_job_status(Monitoreo de análisis)
Realiza un seguimiento del progreso del análisis de lotes
Proporciona estadísticas laborales detalladas:
Total de filas a procesar
Recuento de filas procesadas
Conteo de filas fallido
Marcas de tiempo de procesamiento
Actualizaciones de estado en tiempo real
Informes de errores completos
cancel_batch_analysis(Control de trabajos)
Cancela la ejecución de trabajos de análisis por lotes
Terminación elegante del proceso
Mantiene la consistencia de los datos
Devuelve el estado final del trabajo
Capacidades clave
Gestión de tipos de columnas
Maneja los tipos de columnas del sistema (AUTO_NUMBER, CREATED_DATE, etc.)
Admite análisis de fórmulas y seguimiento de dependencias.
Administra las opciones de lista de selección y los valores de selección múltiple
Operaciones de columna completas (agregar, eliminar, renombrar)
Conservación y actualizaciones de referencias de fórmulas
Validación de datos
Detección automática de duplicados
Validación del tipo de columna
Verificación del formato de datos
Análisis de dependencia de columnas
Validación de unicidad de nombre
Manejo de metadatos
Extrae y procesa metadatos de columnas
Maneja reglas de validación
Gestiona especificaciones de formato
Realiza un seguimiento de las dependencias de las fórmulas
Mantiene las relaciones entre columnas
Análisis de la atención médica
Resumen de la nota clínica
Análisis del sentimiento de los comentarios de los pacientes
Puntuación de cumplimiento del protocolo
Evaluación del impacto de la investigación
Análisis de utilización de recursos
Procesamiento por lotes
Agrupación automática de filas (50 filas por lote)
Seguimiento y monitorización del progreso
Manejo y recuperación de errores
Objetivos de procesamiento personalizables
Soporte de análisis de múltiples columnas
Gestión de trabajos
Monitoreo del estado en tiempo real
Seguimiento detallado del progreso
Informes y registros de errores
Apoyo para la cancelación de empleo
Controles de operaciones por lotes
Configuración
Prerrequisitos
Node.js y npm
Conda (para la gestión del medio ambiente)
Token de acceso a la API de Smartsheet
Configuración del entorno
Cree un entorno conda dedicado:
conda create -n cline_mcp_env python=3.12 nodejs -y
conda activate cline_mcp_envInstalar las dependencias de Node.js:
npm installInstalar el paquete Python:
cd smartsheet_ops
pip install -e .
cd ..Construya el servidor TypeScript:
npm run buildConfiguración
El servidor requiere una configuración adecuada en la configuración de MCP. Puede usarlo tanto con Claude Desktop como con Cline.
1. Obtenga su clave API de Smartsheet
Iniciar sesión en Smartsheet
Vaya a Cuenta → Configuración personal → Acceso API
Generar un nuevo token de acceso
2. Configurar para Cline
La ruta de configuración depende de su sistema operativo:
macOS :
~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.jsonVentanas :
%APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.jsonLinux :
~/.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. Configurar para Claude Desktop (opcional)
La ruta de configuración depende de su sistema operativo:
macOS :
~/Library/Application Support/Claude/claude_desktop_config.jsonVentanas :
%APPDATA%\Claude\claude_desktop_config.jsonLinux :
~/.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"
]
}
}
}Iniciando el servidor
El servidor se iniciará automáticamente cuando Cline o Claude Desktop lo necesiten. Sin embargo, también puede iniciarlo manualmente para realizar pruebas.
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.jsVentanas :
:: 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.jsVerificación de la instalación
El servidor debería mostrar "Servidor Smartsheet MCP ejecutándose en stdio" cuando se inicia
Pruebe la conexión utilizando cualquier herramienta MCP (por ejemplo, get_column_map)
Compruebe que el entorno de Python tenga instalado el paquete smartsheet:
conda activate cline_mcp_env pip show smartsheet-python-sdk
Ejemplos de uso
Obtener información de la columna (Leer)
// 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",
},
});Escritura de datos (Crear)
// 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",
},
],
},
});Actualización de datos (Actualizar)
// 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",
},
},
],
},
});Eliminar datos (Eliminar)
// 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"],
},
});Ejemplos de análisis de atención médica
// 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",
},
});Administrar columnas
// 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
},
});Actualizaciones masivas condicionales
La herramienta smartsheet_bulk_update ofrece potentes funciones de actualización condicional. A continuación, se muestran ejemplos, desde los más simples hasta los más complejos:
Ejemplos de condiciones simples
// 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"
}]
}]
}
});Comparaciones específicas de tipo
// 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",
},
],
},
],
},
});Ejemplos complejos de múltiples condiciones
// 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
},
},
});La operación de actualización masiva proporciona:
Soporte del operador:
equals: Coincidencia de valor exactocontains: Coincidencia de subcadenasgreaterThan: Comparación numérica/de fechalessThan: Comparación numérica/de fechaisEmpty: Comprobación de nulo/vacíoisNotEmpty: Comprobación del valor actual
Características específicas del tipo:
TEXT_NUMBER: Comparaciones de cadenas/números
FECHA: Análisis y comparación de fechas ISO
LISTA DE SELECCIÓN: Validación de opciones
CHECKBOX: Manejo de booleanos
Opciones de procesamiento:
batchSize: controla el tamaño del lote de actualización (predeterminado 500)lenientMode: Continuar con los erroresVarias reglas por solicitud
Varias actualizaciones por regla
Seguimiento de resultados:
Total de filas intentadas
El éxito y el fracaso cuentan
Información detallada del error
Detalles de fallas por fila
Desarrollo
Para desarrollo con reconstrucción automática:
npm run watchDepuración
Dado que los servidores MCP se comunican mediante stdio, la depuración puede ser un desafío. El servidor implementa un registro de errores completo y proporciona mensajes de error detallados mediante el protocolo MCP.
Características clave de depuración:
Error al registrar en stderr
Mensajes de error detallados en las respuestas de MCP
Validación de tipos en múltiples niveles
Informes completos de resultados de operaciones
Análisis de dependencia para operaciones de columnas
Seguimiento de referencias de fórmulas
Manejo de errores
El servidor implementa un enfoque de manejo de errores de múltiples capas:
Capa MCP
Valida los parámetros de la herramienta
Maneja errores a nivel de protocolo
Proporciona respuestas de error formateadas
Gestiona tiempos de espera y reintentos
Capa CLI
Valida los argumentos del comando
Maneja errores de ejecución
Formatea los mensajes de error como JSON
Valida las operaciones de columna
Capa de operaciones
Maneja errores de la API de Smartsheet
Valida tipos y formatos de datos
Proporciona un contexto de error detallado
Administra las dependencias de las columnas
Valida referencias de fórmulas
Garantiza la integridad de los datos
Contribuyendo
¡Agradecemos sus contribuciones! Por favor, asegúrese de:
El código TypeScript/Python sigue el estilo existente
Las nuevas características incluyen un manejo adecuado de errores
Los cambios mantienen la compatibilidad con versiones anteriores
Las actualizaciones incluyen la documentación adecuada
Las operaciones de columna mantienen la integridad de los datos
Las referencias de fórmulas se gestionan adecuadamente