Smartsheet MCP Server

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Integrates with Azure OpenAI API for batch analysis capabilities, enabling summarization, sentiment analysis, custom scoring, and research impact assessment on Smartsheet data.

  • Provides integration with Smartsheet platform, enabling intelligent operations for document management, data manipulation, column customization, batch analysis, and conditional updates of Smartsheet documents. Supports healthcare-specific analytics including clinical research, hospital operations, and healthcare innovation.

스마트시트 MCP 서버

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

개요

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

주요 이점

  • 지능형 통합 : AI 시스템을 Smartsheet 협업 플랫폼과 원활하게 연결합니다.
  • 데이터 무결성 : 유효성 검사 규칙을 적용하고 작업 전반에 걸쳐 참조 무결성을 유지합니다.
  • 수식 관리 : 수식 참조를 자동으로 보존하고 업데이트합니다.
  • 유연한 구성 : 다양한 열 유형과 복잡한 데이터 구조를 지원합니다.
  • 오류 복원력 : 여러 계층에서 포괄적인 오류 처리 및 검증을 구현합니다.
  • 헬스케어 분석 : 임상 및 연구 데이터에 대한 전문 분석 기능
  • 일괄 처리 : 대규모 의료 데이터 세트의 효율적인 처리
  • 맞춤형 채점 : 의료 이니셔티브 및 연구를 위한 유연한 채점 시스템

사용 사례

  1. 임상 연구 분석
    • 프로토콜 준수 점수
    • 환자 데이터 분석
    • 연구 영향 평가
    • 임상시험 데이터 처리
    • 자동화된 연구 노트 요약
  2. 병원 운영
    • 자원 활용 분석
    • 환자 만족도 점수
    • 부서 효율성 측정 항목
    • 직원 성과 분석
    • 품질 측정 항목 추적
  3. 헬스케어 혁신
    • 소아 정렬 점수
    • 혁신 영향 평가
    • 연구 우선순위
    • 구현 가능성 분석
    • 임상적 가치 평가
  4. 자동화된 문서 관리
    • 프로그래밍 방식의 시트 구조 수정
    • 동적 열 생성 및 관리
    • 자동화된 데이터 검증 및 서식 지정
  5. 데이터 운영
    • 무결성 검사를 통한 대량 데이터 업데이트
    • 지능형 중복 감지
    • 수식 인식 수정
  6. 시스템 통합
    • AI 기반 시트 사용자 정의
    • 자동화된 보고 워크플로
    • 시스템 간 데이터 동기화

통합 지점

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

  • 데이터 작업을 위한 Smartsheet API
  • 표준화된 통신을 위한 MCP 프로토콜
  • stdio 인터페이스를 통한 로컬 개발 도구
  • 구조화된 로깅을 통한 모니터링 시스템

건축학

서버는 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 상호 작용을 구현합니다
    • 복잡한 열 유형 관리를 처리합니다.
    • 데이터 정규화 및 검증을 제공합니다
    • 시스템 열과 수식 구문 분석을 관리합니다.

열 관리 흐름

오류 처리 흐름

특징

도구

  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 }, }); ### Conditional Bulk Updates The `smartsheet_bulk_update` tool provides powerful conditional update capabilities. Here are examples ranging from simple to complex: #### Simple Condition Examples ```typescript // Example 1: Basic equals comparison const result = await use_mcp_tool({ server_name: "smartsheet", tool_name: "smartsheet_bulk_update", arguments: { sheet_id: "your-sheet-id", rules: [{ conditions: [{ columnId: "status-column-id", operator: "equals", value: "Pending" }], updates: [{ columnId: "status-column-id", value: "In Progress" }] }] } }); // Example 2: Contains text search const result = await use_mcp_tool({ server_name: "smartsheet", tool_name: "smartsheet_bulk_update", arguments: { sheet_id: "your-sheet-id", rules: [{ conditions: [{ columnId: "description-column-id", operator: "contains", value: "urgent" }], updates: [{ columnId: "priority-column-id", value: "High" }] }] } }); // Example 3: Empty value check const result = await use_mcp_tool({ server_name: "smartsheet", tool_name: "smartsheet_bulk_update", arguments: { sheet_id: "your-sheet-id", rules: [{ conditions: [{ columnId: "assignee-column-id", operator: "isEmpty" }], updates: [{ columnId: "status-column-id", value: "Unassigned" }] }] } });

유형별 비교

// Example 1: Date comparison const result = await use_mcp_tool({ server_name: "smartsheet", tool_name: "smartsheet_bulk_update", arguments: { sheet_id: "your-sheet-id", rules: [ { conditions: [ { columnId: "due-date-column-id", operator: "lessThan", value: "2025-02-01T00:00:00Z", // ISO date format }, ], updates: [ { columnId: "status-column-id", value: "Due Soon", }, ], }, ], }, }); // Example 2: Numeric comparison const result = await use_mcp_tool({ server_name: "smartsheet", tool_name: "smartsheet_bulk_update", arguments: { sheet_id: "your-sheet-id", rules: [ { conditions: [ { columnId: "progress-column-id", operator: "greaterThan", value: 80, // Numeric value }, ], updates: [ { columnId: "status-column-id", value: "Nearly Complete", }, ], }, ], }, }); // Example 3: Picklist validation const result = await use_mcp_tool({ server_name: "smartsheet", tool_name: "smartsheet_bulk_update", arguments: { sheet_id: "your-sheet-id", rules: [ { conditions: [ { columnId: "category-column-id", operator: "equals", value: "Bug", // Must match picklist option exactly }, ], updates: [ { columnId: "priority-column-id", value: "High", }, ], }, ], }, });

복잡한 다중 조건 예제

// Example 1: Multiple conditions with different operators const result = await use_mcp_tool({ server_name: "smartsheet", tool_name: "smartsheet_bulk_update", arguments: { sheet_id: "your-sheet-id", rules: [ { conditions: [ { columnId: "priority-column-id", operator: "equals", value: "High", }, { columnId: "due-date-column-id", operator: "lessThan", value: "2025-02-01T00:00:00Z", }, { columnId: "progress-column-id", operator: "lessThan", value: 50, }, ], updates: [ { columnId: "status-column-id", value: "At Risk", }, { columnId: "flag-column-id", value: true, }, ], }, ], }, }); // Example 2: Multiple rules with batch processing const result = await use_mcp_tool({ server_name: "smartsheet", tool_name: "smartsheet_bulk_update", arguments: { sheet_id: "your-sheet-id", rules: [ { conditions: [ { columnId: "status-column-id", operator: "equals", value: "Complete", }, { columnId: "qa-status-column-id", operator: "isEmpty", }, ], updates: [ { columnId: "qa-status-column-id", value: "Ready for QA", }, ], }, { conditions: [ { columnId: "status-column-id", operator: "equals", value: "In Progress", }, { columnId: "progress-column-id", operator: "equals", value: 100, }, ], updates: [ { columnId: "status-column-id", value: "Complete", }, ], }, ], options: { lenientMode: true, // Continue on errors batchSize: 100, // Process in smaller batches }, }, });

대량 업데이트 작업은 다음을 제공합니다.

  1. 운영자 지원:
    • equals : 정확한 값 일치
    • contains : 하위 문자열 일치
    • greaterThan : 숫자/날짜 비교
    • lessThan : 숫자/날짜 비교
    • isEmpty : Null/비어 있음 확인
    • isNotEmpty : 현재 가치 확인
  2. 유형별 기능:
    • TEXT_NUMBER: 문자열/숫자 비교
    • 날짜: ISO 날짜 구문 분석 및 비교
    • PICKLIST: 옵션 검증
    • 체크박스: 부울 처리
  3. 처리 옵션:
    • batchSize : 업데이트 배치 크기를 제어합니다(기본값 500)
    • lenientMode : 오류 발생 시 계속 진행
    • 요청당 여러 규칙
    • 규칙당 여러 업데이트
  4. 결과 추적:
    • 시도된 총 행 수
    • 성공/실패 횟수
    • 자세한 오류 정보
    • 행별 실패 세부 정보
## Development For development with auto-rebuild: ```bash 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. 수식 참조가 적절하게 처리됩니다.
ID: k6qv4zylx2