Skip to main content
Glama
terilios

Smartsheet MCP Server

스마트시트 MCP 서버

Smartsheet와 완벽하게 통합되어 표준화된 인터페이스를 통해 Smartsheet 문서에 대한 자동화된 작업을 지원하는 모델 컨텍스트 프로토콜(MCP) 서버입니다. 이 서버는 AI 기반 자동화 도구와 Smartsheet의 강력한 협업 플랫폼 간의 격차를 해소합니다.

개요

Smartsheet MCP 서버는 Smartsheet와의 지능적인 상호작용을 용이하게 하도록 설계되었으며, 문서 관리, 데이터 작업 및 열 사용자 지정을 위한 강력한 도구 세트를 제공합니다. 자동화된 워크플로의 핵심 구성 요소로, AI 시스템이 데이터 무결성을 유지하고 비즈니스 규칙을 적용하면서 Smartsheet 데이터와 프로그래밍 방식으로 상호작용할 수 있도록 지원합니다.

주요 이점

  • 지능형 통합 : AI 시스템을 Smartsheet 협업 플랫폼과 원활하게 연결합니다.

  • 데이터 무결성 : 유효성 검사 규칙을 적용하고 작업 전반에 걸쳐 참조 무결성을 유지합니다.

  • 수식 관리 : 수식 참조를 자동으로 보존하고 업데이트합니다.

  • 유연한 구성 : 다양한 열 유형과 복잡한 데이터 구조를 지원합니다.

  • 오류 복원력 : 여러 계층에서 포괄적인 오류 처리 및 검증을 구현합니다.

  • 헬스케어 분석 : 임상 및 연구 데이터에 대한 전문 분석 기능

  • 일괄 처리 : 대규모 의료 데이터 세트의 효율적인 처리

  • 맞춤형 채점 : 의료 이니셔티브 및 연구를 위한 유연한 채점 시스템

사용 사례

  1. 임상 연구 분석

    • 프로토콜 준수 점수

    • 환자 데이터 분석

    • 연구 영향 평가

    • 임상시험 데이터 처리

    • 자동화된 연구 노트 요약

  2. 병원 운영

    • 자원 활용 분석

    • 환자 만족도 점수

    • 부서 효율성 측정 항목

    • 직원 성과 분석

    • 품질 측정 항목 추적

  3. 헬스케어 혁신

    • 소아 정렬 점수

    • 혁신 영향 평가

    • 연구 우선순위

    • 구현 가능성 분석

    • 임상적 가치 평가

  4. 자동화된 문서 관리

    • 프로그래밍 방식의 시트 구조 수정

    • 동적 열 생성 및 관리

    • 자동화된 데이터 검증 및 서식 지정

  5. 데이터 운영

    • 무결성 검사를 통한 대량 데이터 업데이트

    • 지능형 중복 감지

    • 수식 인식 수정

  6. 시스템 통합

    • AI 기반 시트 사용자 정의

    • 자동화된 보고 워크플로

    • 시스템 간 데이터 동기화

통합 지점

서버는 다음과 통합됩니다.

  • 데이터 작업을 위한 Smartsheet API

  • 표준화된 통신을 위한 MCP 프로토콜

  • stdio 인터페이스를 통한 로컬 개발 도구

  • 구조화된 로깅을 통한 모니터링 시스템

Related MCP server: Google Drive MCP Server

건축학

서버는 MCP와 Smartsheet 간의 브리지 아키텍처를 구현합니다.

지엑스피1

  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 (읽기)

    • Smartsheet에서 열 매핑 및 샘플 데이터를 검색합니다.

    • 다음을 포함한 자세한 열 메타데이터를 제공합니다.

      • 열 유형(시스템 열, 수식, 선택 목록)

      • 검증 규칙

      • 형식 사양

      • 자동 번호 구성

    • 컨텍스트에 대한 샘플 데이터를 반환합니다.

    • 데이터 쓰기에 대한 사용 예가 포함되어 있습니다.

  2. smartsheet_write (생성)

    • 다음을 지능적으로 처리하여 Smartsheet에 새 행을 작성합니다.

      • 시스템 관리 열

      • 다중 선택 선택 목록 값

      • 수식 기반 열

    • 자동 중복 감지를 구현합니다

    • 행 ID를 포함한 자세한 작업 결과를 반환합니다.

  3. smartsheet_update (업데이트)

    • Smartsheet의 기존 행을 업데이트합니다.

    • 부분 업데이트 지원(특정 필드 수정)

    • 검증을 통해 데이터 무결성을 유지합니다.

    • 다중 선택 필드를 일관되게 처리합니다.

    • 행별로 성공/실패 세부 정보를 반환합니다.

  4. smartsheet_delete (삭제)

    • Smartsheet에서 행을 삭제합니다

    • 여러 행의 일괄 삭제를 지원합니다

    • 행의 존재 여부와 권한을 검증합니다.

    • 자세한 작업 결과를 반환합니다.

  5. smartsheet_add_column (열 관리)

    • Smartsheet에 새 열을 추가합니다.

    • 모든 열 유형을 지원합니다:

      • 텍스트 번호

      • 날짜

      • 체크박스

      • 픽리스트

      • 연락처 목록

    • 구성 가능한 옵션:

      • 위치 인덱스

      • 검증 규칙

      • 수식 정의

      • 선택 목록 옵션

    • 유효성 검사를 통해 열 제한(400)을 적용합니다.

    • 자세한 열 정보를 반환합니다.

  6. smartsheet_delete_column (열 관리)

    • 종속성 검사를 통해 열을 안전하게 삭제합니다.

    • 삭제하기 전에 수식 참조를 검증합니다.

    • 수식에 사용된 열 삭제를 방지합니다.

    • 자세한 종속성 정보를 반환합니다.

    • 강제 삭제 옵션 지원

  7. smartsheet_rename_column (열 관리)

    • 관계를 유지하면서 열 이름을 바꿉니다.

    • 수식 참조를 자동으로 업데이트합니다.

    • 데이터 무결성을 유지합니다

    • 이름 고유성을 검증합니다

    • 자세한 업데이트 정보를 반환합니다.

  8. smartsheet_bulk_update (조건부 업데이트)

    • 규칙에 따라 조건부 대량 업데이트를 수행합니다.

    • 복잡한 조건 평가 지원:

      • 여러 연산자(equals, contains, greaterThan 등)

      • 유형별 비교(텍스트, 날짜, 숫자)

      • 비어 있음/비어 있지 않음 수표

    • 구성 가능한 크기를 사용한 일괄 처리

    • 포괄적인 오류 처리 및 롤백

    • 자세한 작업 결과 추적

  9. start_batch_analysis (헬스케어 분석)

    • AI 분석을 통해 전체 시트 또는 선택한 행을 처리합니다.

    • 다양한 분석 유형을 지원합니다.

      • 임상 기록 요약

      • 환자 피드백에 대한 감정 분석

      • 의료 이니셔티브를 위한 맞춤형 점수 매기기

      • 연구 영향 평가

    • 특징:

      • 자동 배치 처리(배치당 50개 행)

      • 진행 상황 추적 및 상태 모니터링

      • 자세한 보고를 통한 오류 처리

      • 사용자 정의 가능한 분석 목표

      • 여러 소스 열 지원

  10. get_job_status (분석 모니터링)

  • 일괄 분석 진행 상황을 추적합니다.

  • 자세한 작업 통계를 제공합니다.

    • 처리할 총 행 수

    • 처리된 행 수

    • 행 계산 실패

    • 타임스탬프 처리

  • 실시간 상태 업데이트

  • 포괄적인 오류 보고

  1. cancel_batch_analysis (작업 제어)

  • 실행 중인 일괄 분석 작업을 취소합니다.

  • 우아한 프로세스 종료

  • 데이터 일관성을 유지합니다

  • 최종 작업 상태를 반환합니다.

주요 역량

  • 열 유형 관리

    • 시스템 열 유형(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에 맞게 구성

구성 경로는 운영 체제에 따라 달라집니다.

맥OS :

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

리눅스 :

~/.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 구성(선택 사항)

구성 경로는 운영 체제에 따라 달라집니다.

맥OS :

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

윈도우 :

%APPDATA%\Claude\claude_desktop_config.json

리눅스 :

~/.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/리눅스 :

# 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

윈도우 :

:: 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 서버가 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)

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

조건부 대량 업데이트

smartsheet_bulk_update 도구는 강력한 조건부 업데이트 기능을 제공합니다. 간단한 것부터 복잡한 것까지 다양한 예시를 소개합니다.

간단한 조건 예

// 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 : Null/비어 있음 확인

    • isNotEmpty : 현재 가치 확인

  2. 유형별 기능:

    • TEXT_NUMBER: 문자열/숫자 비교

    • 날짜: ISO 날짜 구문 분석 및 비교

    • PICKLIST: 옵션 검증

    • 체크박스: 부울 처리

  3. 처리 옵션:

    • batchSize : 업데이트 배치 크기를 제어합니다(기본값 500)

    • lenientMode : 오류 발생 시 계속 진행

    • 요청당 여러 규칙

    • 규칙당 여러 업데이트

  4. 결과 추적:

    • 시도된 총 행 수

    • 성공/실패 횟수

    • 자세한 오류 정보

    • 행별 실패 세부 정보

개발

자동 재빌드를 사용한 개발의 경우:

npm run watch

디버깅

MCP 서버는 stdio를 통해 통신하기 때문에 디버깅이 어려울 수 있습니다. MCP 서버는 포괄적인 오류 로깅을 구현하고 MCP 프로토콜을 통해 자세한 오류 메시지를 제공합니다.

주요 디버깅 기능:

  • stderr에 오류 로깅

  • MCP 응답의 자세한 오류 메시지

  • 여러 레벨의 유형 검증

  • 포괄적인 운영 결과 보고

  • 열 작업에 대한 종속성 분석

  • 수식 참조 추적

오류 처리

서버는 다층 오류 처리 방식을 구현합니다.

  1. MCP 계층

    • 도구 매개변수를 검증합니다

    • 프로토콜 수준 오류를 처리합니다.

    • 형식화된 오류 응답을 제공합니다.

    • 시간 초과 및 재시도를 관리합니다.

  2. CLI 계층

    • 명령 인수를 검증합니다.

    • 실행 오류를 처리합니다

    • 오류 메시지를 JSON으로 형식화합니다.

    • 열 작업의 유효성을 검사합니다.

  3. 운영 계층

    • Smartsheet API 오류를 처리합니다.

    • 데이터 유형 및 형식을 검증합니다.

    • 자세한 오류 컨텍스트를 제공합니다.

    • 열 종속성을 관리합니다

    • 수식 참조를 검증합니다.

    • 데이터 무결성을 보장합니다

기여하다

참여를 환영합니다! 다음 사항을 확인해 주세요.

  1. TypeScript/Python 코드는 기존 스타일을 따릅니다.

  2. 새로운 기능에는 적절한 오류 처리가 포함됩니다.

  3. 변경 사항은 이전 버전과의 호환성을 유지합니다.

  4. 업데이트에는 적절한 문서가 포함됩니다.

  5. 열 작업은 데이터 무결성을 유지합니다.

  6. 수식 참조가 적절하게 처리됩니다.

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/terilios/smartsheet-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server