스마트시트 MCP 서버
Smartsheet와 완벽하게 통합되어 표준화된 인터페이스를 통해 Smartsheet 문서에 대한 자동화된 작업을 지원하는 모델 컨텍스트 프로토콜(MCP) 서버입니다. 이 서버는 AI 기반 자동화 도구와 Smartsheet의 강력한 협업 플랫폼 간의 격차를 해소합니다.
개요
Smartsheet MCP 서버는 Smartsheet와의 지능적인 상호작용을 용이하게 하도록 설계되었으며, 문서 관리, 데이터 작업 및 열 사용자 지정을 위한 강력한 도구 세트를 제공합니다. 자동화된 워크플로의 핵심 구성 요소로, AI 시스템이 데이터 무결성을 유지하고 비즈니스 규칙을 적용하면서 Smartsheet 데이터와 프로그래밍 방식으로 상호작용할 수 있도록 지원합니다.
주요 이점
- 지능형 통합 : AI 시스템을 Smartsheet 협업 플랫폼과 원활하게 연결합니다.
- 데이터 무결성 : 유효성 검사 규칙을 적용하고 작업 전반에 걸쳐 참조 무결성을 유지합니다.
- 수식 관리 : 수식 참조를 자동으로 보존하고 업데이트합니다.
- 유연한 구성 : 다양한 열 유형과 복잡한 데이터 구조를 지원합니다.
- 오류 복원력 : 여러 계층에서 포괄적인 오류 처리 및 검증을 구현합니다.
- 헬스케어 분석 : 임상 및 연구 데이터에 대한 전문 분석 기능
- 일괄 처리 : 대규모 의료 데이터 세트의 효율적인 처리
- 맞춤형 채점 : 의료 이니셔티브 및 연구를 위한 유연한 채점 시스템
사용 사례
- 임상 연구 분석
- 프로토콜 준수 점수
- 환자 데이터 분석
- 연구 영향 평가
- 임상시험 데이터 처리
- 자동화된 연구 노트 요약
- 병원 운영
- 자원 활용 분석
- 환자 만족도 점수
- 부서 효율성 측정 항목
- 직원 성과 분석
- 품질 측정 항목 추적
- 헬스케어 혁신
- 소아 정렬 점수
- 혁신 영향 평가
- 연구 우선순위
- 구현 가능성 분석
- 임상적 가치 평가
- 자동화된 문서 관리
- 프로그래밍 방식의 시트 구조 수정
- 동적 열 생성 및 관리
- 자동화된 데이터 검증 및 서식 지정
- 데이터 운영
- 무결성 검사를 통한 대량 데이터 업데이트
- 지능형 중복 감지
- 수식 인식 수정
- 시스템 통합
- AI 기반 시트 사용자 정의
- 자동화된 보고 워크플로
- 시스템 간 데이터 동기화
통합 지점
서버는 다음과 통합됩니다.
- 데이터 작업을 위한 Smartsheet API
- 표준화된 통신을 위한 MCP 프로토콜
- stdio 인터페이스를 통한 로컬 개발 도구
- 구조화된 로깅을 통한 모니터링 시스템
건축학
서버는 MCP와 Smartsheet 간의 브리지 아키텍처를 구현합니다.
지엑스피1
- TypeScript MCP 계층 (
src/index.ts
)- MCP 프로토콜 통신을 처리합니다
- 사용 가능한 도구를 등록하고 관리합니다.
- Python 구현에 대한 요청을 라우팅합니다.
- 구성 및 오류 처리를 관리합니다.
- Python CLI 계층 (
smartsheet_ops/cli.py
)- 작업을 위한 명령줄 인터페이스를 제공합니다.
- 인수 구문 분석 및 유효성 검사를 처리합니다.
- 중복 감지를 구현합니다
- JSON 데이터 형식을 관리합니다
- 핵심 운영 계층 (
smartsheet_ops/__init__.py
)- Smartsheet API 상호 작용을 구현합니다
- 복잡한 열 유형 관리를 처리합니다.
- 데이터 정규화 및 검증을 제공합니다
- 시스템 열과 수식 구문 분석을 관리합니다.
열 관리 흐름
오류 처리 흐름
특징
도구
get_column_map
(읽기)- Smartsheet에서 열 매핑 및 샘플 데이터를 검색합니다.
- 다음을 포함한 자세한 열 메타데이터를 제공합니다.
- 열 유형(시스템 열, 수식, 선택 목록)
- 검증 규칙
- 형식 사양
- 자동 번호 구성
- 컨텍스트에 대한 샘플 데이터를 반환합니다.
- 데이터 쓰기에 대한 사용 예가 포함되어 있습니다.
smartsheet_write
(생성)- 다음을 지능적으로 처리하여 Smartsheet에 새 행을 작성합니다.
- 시스템 관리 열
- 다중 선택 선택 목록 값
- 수식 기반 열
- 자동 중복 감지를 구현합니다
- 행 ID를 포함한 자세한 작업 결과를 반환합니다.
smartsheet_update
(업데이트)- Smartsheet의 기존 행을 업데이트합니다.
- 부분 업데이트 지원(특정 필드 수정)
- 검증을 통해 데이터 무결성을 유지합니다.
- 다중 선택 필드를 일관되게 처리합니다.
- 행별로 성공/실패 세부 정보를 반환합니다.
smartsheet_delete
(삭제)- Smartsheet에서 행을 삭제합니다
- 여러 행의 일괄 삭제를 지원합니다.
- 행의 존재 여부와 권한을 검증합니다.
- 자세한 작업 결과를 반환합니다.
smartsheet_add_column
(열 관리)- Smartsheet에 새 열을 추가합니다.
- 모든 열 유형을 지원합니다:
- 구성 가능한 옵션:
- 유효성 검사를 통해 열 제한(400)을 적용합니다.
- 자세한 열 정보를 반환합니다.
smartsheet_delete_column
(열 관리)- 종속성 검사를 통해 열을 안전하게 삭제합니다.
- 삭제하기 전에 수식 참조를 검증합니다.
- 수식에 사용된 열 삭제 방지
- 자세한 종속성 정보를 반환합니다.
- 강제 삭제 옵션 지원
smartsheet_rename_column
(열 관리)- 관계를 유지하면서 열 이름을 바꿉니다.
- 수식 참조를 자동으로 업데이트합니다.
- 데이터 무결성을 유지합니다
- 이름 고유성을 검증합니다
- 자세한 업데이트 정보를 반환합니다.
smartsheet_bulk_update
(조건부 업데이트)- 규칙에 따라 조건부 대량 업데이트를 수행합니다.
- 복잡한 조건 평가 지원:
- 여러 연산자(equals, contains, greaterThan 등)
- 유형별 비교(텍스트, 날짜, 숫자)
- 비어 있음/비어 있지 않음 수표
- 구성 가능한 크기를 사용한 일괄 처리
- 포괄적인 오류 처리 및 롤백
- 자세한 작업 결과 추적
start_batch_analysis
(헬스케어 분석)- AI 분석을 통해 전체 시트 또는 선택한 행을 처리합니다.
- 다양한 분석 유형을 지원합니다.
- 임상 기록 요약
- 환자 피드백에 대한 감정 분석
- 의료 이니셔티브를 위한 맞춤형 점수 매기기
- 연구 영향 평가
- 특징:
- 자동 배치 처리(배치당 50개 행)
- 진행 상황 추적 및 상태 모니터링
- 자세한 보고를 통한 오류 처리
- 사용자 정의 가능한 분석 목표
- 여러 소스 열 지원
get_job_status
(분석 모니터링)
- 일괄 분석 진행 상황을 추적합니다.
- 자세한 작업 통계를 제공합니다.
- 처리할 총 행 수
- 처리된 행 수
- 행 계산 실패
- 타임스탬프 처리
- 실시간 상태 업데이트
- 포괄적인 오류 보고
cancel_batch_analysis
(작업 제어)
- 실행 중인 일괄 분석 작업을 취소합니다.
- 우아한 프로세스 종료
- 데이터 일관성을 유지합니다
- 최종 작업 상태를 반환합니다.
주요 역량
- 열 유형 관리
- 시스템 열 유형(AUTO_NUMBER, CREATED_DATE 등)을 처리합니다.
- 수식 구문 분석 및 종속성 추적을 지원합니다.
- 선택 목록 옵션과 다중 선택 값을 관리합니다.
- 포괄적인 열 작업(추가, 삭제, 이름 바꾸기)
- 수식 참조 보존 및 업데이트
- 데이터 검증
- 자동 중복 감지
- 열 유형 검증
- 데이터 형식 검증
- 열 종속성 분석
- 이름 고유성 검증
- 메타데이터 처리
- 열 메타데이터를 추출하고 처리합니다.
- 검증 규칙을 처리합니다
- 형식 사양을 관리합니다
- 수식 종속성을 추적합니다.
- 열 관계를 유지합니다
- 헬스케어 분석
- 임상 기록 요약
- 환자 피드백 감정 분석
- 프로토콜 준수 점수
- 연구 영향 평가
- 자원 활용 분석
- 일괄 처리
- 자동 행 배치(배치당 50개 행)
- 진행 상황 추적 및 모니터링
- 오류 처리 및 복구
- 사용자 정의 가능한 처리 목표
- 다중 열 분석 지원
- 작업 관리
- 실시간 상태 모니터링
- 자세한 진행 상황 추적
- 오류 보고 및 로깅
- 채용 취소 지원
- 배치 작업 제어
설정
필수 조건
- Node.js와 npm
- Conda(환경 관리용)
- Smartsheet API 액세스 토큰
환경 설정
- 전용 conda 환경을 만듭니다.
conda create -n cline_mcp_env python=3.12 nodejs -y
conda activate cline_mcp_env
- Node.js 종속성을 설치하세요.
- Python 패키지 설치:
cd smartsheet_ops
pip install -e .
cd ..
- TypeScript 서버를 빌드합니다.
구성
서버를 사용하려면 MCP 설정을 적절히 구성해야 합니다. Claude Desktop과 Cline 모두에서 사용할 수 있습니다.
1. Smartsheet API 키 받기
- Smartsheet 에 로그인하세요
- 계정 → 개인 설정 → API 액세스로 이동하세요.
- 새로운 액세스 토큰 생성
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
설치 확인
- 서버는 시작 시 "Smartsheet MCP 서버가 stdio에서 실행 중입니다"라는 메시지를 출력해야 합니다.
- MCP 도구(예: get_column_map)를 사용하여 연결을 테스트합니다.
- Python 환경에 smartsheet 패키지가 설치되어 있는지 확인하세요.
conda activate cline_mcp_env
pip show smartsheet-python-sdk
사용 예
열 정보 가져오기(읽기)
// Get column mapping and sample data
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "get_column_map",
arguments: {
sheet_id: "your-sheet-id",
},
});
데이터 쓰기(생성)
// Write new rows to Smartsheet
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "smartsheet_write",
arguments: {
sheet_id: "your-sheet-id",
column_map: {
"Column 1": "1234567890",
"Column 2": "0987654321",
},
row_data: [
{
"Column 1": "Value 1",
"Column 2": "Value 2",
},
],
},
});
데이터 업데이트(Update)
// Update existing rows
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "smartsheet_update",
arguments: {
sheet_id: "your-sheet-id",
column_map: {
Status: "850892021780356",
Notes: "6861293012340612",
},
updates: [
{
row_id: "7670198317295492",
data: {
Status: "In Progress",
Notes: "Updated via MCP server",
},
},
],
},
});
데이터 삭제(Delete)
// Delete rows from Smartsheet
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "smartsheet_delete",
arguments: {
sheet_id: "your-sheet-id",
row_ids: ["7670198317295492", "7670198317295493"],
},
});
의료 분석 사례
// Example 1: Pediatric Innovation Scoring
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "start_batch_analysis",
arguments: {
sheet_id: "your-sheet-id",
type: "custom",
sourceColumns: ["Ideas", "Implementation_Details"],
targetColumn: "Pediatric_Score",
customGoal:
"Score each innovation 1-100 based on pediatric healthcare impact. Consider: 1) Direct benefit to child patients, 2) Integration with pediatric workflows, 3) Implementation feasibility in children's hospital, 4) Safety considerations for pediatric use. Return only a number.",
},
});
// Example 2: Clinical Note Summarization
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "start_batch_analysis",
arguments: {
sheet_id: "your-sheet-id",
type: "summarize",
sourceColumns: ["Clinical_Notes"],
targetColumn: "Note_Summary",
},
});
// Example 3: Patient Satisfaction Analysis
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "start_batch_analysis",
arguments: {
sheet_id: "your-sheet-id",
type: "sentiment",
sourceColumns: ["Patient_Feedback"],
targetColumn: "Satisfaction_Score",
},
});
// Example 4: Protocol Compliance Scoring
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "start_batch_analysis",
arguments: {
sheet_id: "your-sheet-id",
type: "custom",
sourceColumns: ["Protocol_Steps", "Documentation", "Outcomes"],
targetColumn: "Compliance_Score",
customGoal:
"Score protocol compliance 1-100. Consider: 1) Adherence to required steps, 2) Documentation completeness, 3) Safety measures followed, 4) Outcome reporting. Return only a number.",
},
});
// Example 5: Research Impact Assessment
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "start_batch_analysis",
arguments: {
sheet_id: "your-sheet-id",
type: "custom",
sourceColumns: ["Research_Findings", "Clinical_Applications"],
targetColumn: "Impact_Score",
customGoal:
"Score research impact 1-100 based on potential benefit to pediatric healthcare. Consider: 1) Clinical relevance, 2) Implementation potential, 3) Patient outcome improvement, 4) Cost-effectiveness. Return only a number.",
},
});
// Monitor Analysis Progress
const status = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "get_job_status",
arguments: {
sheet_id: "your-sheet-id",
jobId: "job-id-from-start-analysis",
},
});
// Cancel Analysis if Needed
const cancel = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "cancel_batch_analysis",
arguments: {
sheet_id: "your-sheet-id",
jobId: "job-id-to-cancel",
},
});
열 관리
// Add a new column
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "smartsheet_add_column",
arguments: {
sheet_id: "your-sheet-id",
title: "New Column",
type: "TEXT_NUMBER",
index: 2, // Optional position
validation: true, // Optional
formula: "=[Column1]+ [Column2]", // Optional
},
});
// Delete a column
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "smartsheet_delete_column",
arguments: {
sheet_id: "your-sheet-id",
column_id: "1234567890",
validate_dependencies: true, // Optional, default true
},
});
// Rename a column
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "smartsheet_rename_column",
arguments: {
sheet_id: "your-sheet-id",
column_id: "1234567890",
new_title: "Updated Column Name",
update_references: true, // Optional, default true
},
});
### Conditional Bulk Updates
The `smartsheet_bulk_update` tool provides powerful conditional update capabilities. Here are examples ranging from simple to complex:
#### Simple Condition Examples
```typescript
// Example 1: Basic equals comparison
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "smartsheet_bulk_update",
arguments: {
sheet_id: "your-sheet-id",
rules: [{
conditions: [{
columnId: "status-column-id",
operator: "equals",
value: "Pending"
}],
updates: [{
columnId: "status-column-id",
value: "In Progress"
}]
}]
}
});
// Example 2: Contains text search
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "smartsheet_bulk_update",
arguments: {
sheet_id: "your-sheet-id",
rules: [{
conditions: [{
columnId: "description-column-id",
operator: "contains",
value: "urgent"
}],
updates: [{
columnId: "priority-column-id",
value: "High"
}]
}]
}
});
// Example 3: Empty value check
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "smartsheet_bulk_update",
arguments: {
sheet_id: "your-sheet-id",
rules: [{
conditions: [{
columnId: "assignee-column-id",
operator: "isEmpty"
}],
updates: [{
columnId: "status-column-id",
value: "Unassigned"
}]
}]
}
});
유형별 비교
// Example 1: Date comparison
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "smartsheet_bulk_update",
arguments: {
sheet_id: "your-sheet-id",
rules: [
{
conditions: [
{
columnId: "due-date-column-id",
operator: "lessThan",
value: "2025-02-01T00:00:00Z", // ISO date format
},
],
updates: [
{
columnId: "status-column-id",
value: "Due Soon",
},
],
},
],
},
});
// Example 2: Numeric comparison
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "smartsheet_bulk_update",
arguments: {
sheet_id: "your-sheet-id",
rules: [
{
conditions: [
{
columnId: "progress-column-id",
operator: "greaterThan",
value: 80, // Numeric value
},
],
updates: [
{
columnId: "status-column-id",
value: "Nearly Complete",
},
],
},
],
},
});
// Example 3: Picklist validation
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "smartsheet_bulk_update",
arguments: {
sheet_id: "your-sheet-id",
rules: [
{
conditions: [
{
columnId: "category-column-id",
operator: "equals",
value: "Bug", // Must match picklist option exactly
},
],
updates: [
{
columnId: "priority-column-id",
value: "High",
},
],
},
],
},
});
복잡한 다중 조건 예제
// Example 1: Multiple conditions with different operators
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "smartsheet_bulk_update",
arguments: {
sheet_id: "your-sheet-id",
rules: [
{
conditions: [
{
columnId: "priority-column-id",
operator: "equals",
value: "High",
},
{
columnId: "due-date-column-id",
operator: "lessThan",
value: "2025-02-01T00:00:00Z",
},
{
columnId: "progress-column-id",
operator: "lessThan",
value: 50,
},
],
updates: [
{
columnId: "status-column-id",
value: "At Risk",
},
{
columnId: "flag-column-id",
value: true,
},
],
},
],
},
});
// Example 2: Multiple rules with batch processing
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "smartsheet_bulk_update",
arguments: {
sheet_id: "your-sheet-id",
rules: [
{
conditions: [
{
columnId: "status-column-id",
operator: "equals",
value: "Complete",
},
{
columnId: "qa-status-column-id",
operator: "isEmpty",
},
],
updates: [
{
columnId: "qa-status-column-id",
value: "Ready for QA",
},
],
},
{
conditions: [
{
columnId: "status-column-id",
operator: "equals",
value: "In Progress",
},
{
columnId: "progress-column-id",
operator: "equals",
value: 100,
},
],
updates: [
{
columnId: "status-column-id",
value: "Complete",
},
],
},
],
options: {
lenientMode: true, // Continue on errors
batchSize: 100, // Process in smaller batches
},
},
});
대량 업데이트 작업은 다음을 제공합니다.
- 운영자 지원:
equals
: 정확한 값 일치contains
: 하위 문자열 일치greaterThan
: 숫자/날짜 비교lessThan
: 숫자/날짜 비교isEmpty
: Null/비어 있음 확인isNotEmpty
: 현재 가치 확인
- 유형별 기능:
- TEXT_NUMBER: 문자열/숫자 비교
- 날짜: ISO 날짜 구문 분석 및 비교
- PICKLIST: 옵션 검증
- 체크박스: 부울 처리
- 처리 옵션:
batchSize
: 업데이트 배치 크기를 제어합니다(기본값 500)lenientMode
: 오류 발생 시 계속 진행- 요청당 여러 규칙
- 규칙당 여러 업데이트
- 결과 추적:
- 시도된 총 행 수
- 성공/실패 횟수
- 자세한 오류 정보
- 행별 실패 세부 정보
## Development
For development with auto-rebuild:
```bash
npm run watch
디버깅
MCP 서버는 stdio를 통해 통신하기 때문에 디버깅이 어려울 수 있습니다. MCP 서버는 포괄적인 오류 로깅을 구현하고 MCP 프로토콜을 통해 자세한 오류 메시지를 제공합니다.
주요 디버깅 기능:
- stderr에 오류 로깅
- MCP 응답의 자세한 오류 메시지
- 여러 레벨의 유형 검증
- 포괄적인 운영 결과 보고
- 열 작업에 대한 종속성 분석
- 수식 참조 추적
오류 처리
서버는 다층 오류 처리 방식을 구현합니다.
- MCP 계층
- 도구 매개변수를 검증합니다
- 프로토콜 수준 오류를 처리합니다.
- 형식화된 오류 응답을 제공합니다.
- 시간 초과 및 재시도를 관리합니다.
- CLI 계층
- 명령 인수를 검증합니다.
- 실행 오류를 처리합니다
- 오류 메시지를 JSON으로 형식화합니다.
- 열 작업의 유효성을 검사합니다.
- 운영 계층
- Smartsheet API 오류를 처리합니다.
- 데이터 유형 및 형식을 검증합니다.
- 자세한 오류 컨텍스트를 제공합니다.
- 열 종속성을 관리합니다
- 수식 참조를 검증합니다.
- 데이터 무결성을 보장합니다
기여하다
참여를 환영합니다! 다음 사항을 확인해 주세요.
- TypeScript/Python 코드는 기존 스타일을 따릅니다.
- 새로운 기능에는 적절한 오류 처리가 포함됩니다.
- 변경 사항은 이전 버전과의 호환성을 유지합니다.
- 업데이트에는 적절한 문서가 포함됩니다.
- 열 작업은 데이터 무결성을 유지합니다.
- 수식 참조가 적절하게 처리됩니다.