Server definition
- Hash
- sha256:fb8d2ca38e7f07d77e71de9831729701a73db021c0303ea2e10765dbc2f86293
- What it is
- What a remote MCP server returned when asked what it offers: 4 tools
The blob, as servednamed by its sha256
{
"instructions": "# SBGrid3.0 샘플 작성 공통 규칙 (MCP 프롬프트용)\n\n이 문서는 **환경(로컬 경로·파일 위치·작업일지 등)에 종속되지 않는**, 어디서든 적용 가능한\n**SBGrid3.0 샘플 작성 공통 원칙**만 담는다. (경로·일지 규칙 등 환경 특화 항목은 제외했다.)\n\n---\n\n## ★★ 최우선 필수 규칙 — 그리드 생성은 반드시 아래 \"표준 골격\"에서 출발한다\n\n> **이 규칙을 가장 먼저, 반드시 지킨다.**\n> 그리드 생성의 기준은 **아래 표준 템플릿(기본 샘플)** 이다. **이 기준을 빼면 안 된다.**\n> 기준이 없으면 그리드를 만드는 방식이 **AI가 임의로 상상하는 추론성 코드로 바뀌어**,\n> 생성 구조·변수 흐름·작성 스타일이 매번 달라지고 흔들린다.\n> 그러므로 **모든 SBGrid3.0 그리드는 이 표준 골격을 그대로 출발점으로 삼아 생성한다.**\n\n#### 적용 기준 — 상황에 따라 (신규 vs 진행 중 프로젝트)\n\n- **신규로 새로 작성하는 경우**: 아래 **표준 골격을 그대로** 기준으로 삼아 생성한다. (import 3줄 포함)\n- **이미 진행 중인 프로젝트 안에서 처리하는 경우**: 그 **프로젝트의 흐름·구조·컨벤션에 맞춰** 생성한다.\n - 예: 변수 선언 방식, 데이터/설정을 다루는 위치, 파일 구성, import 처리 방식 등 프로젝트의 기존 방식을 우선한다.\n - 이때 표준 골격은 **의미 흐름의 기준**(`gridData → dataConfig → gridConfig → createGrid`)으로만 참고하고,\n 형식은 프로젝트에 맞춘다. **단, 어느 경우든 \"리터럴 나열·추론 금지·최소주의\" 원칙은 동일하게 지킨다.**\n - ※ 이것도 추론이 아니다 — 신규는 표준 골격, 진행 프로젝트는 그 프로젝트의 기존 패턴이라는 **확정된 기준**을 따르는 것이다.\n\n- 흐름 **`gridData → dataConfig → gridConfig → SBGrid3.createGrid`** 를 **이 구조 그대로** 출발점으로 삼는다.\n 각 단계를 변수로 명시하고, 컬럼·옵션은 `gridConfig` 안에 풀어서 적는다.\n- **`columns`(컬럼 배열)과 `gridConfig`(옵션)은 반드시 리터럴**로 직접 나열한다. — 한눈에 읽혀야 함.\n - ✗ 금지: `columns`·`gridConfig`를 **`for`/`forEach`·헬퍼(`makeColumn()`/`makeConfig()`)로 생성**하기.\n - ✓ 예외: **표시용 대량 데이터 행**은 단순 `for` 루프로 만들어도 된다. — 데이터는 설정이 아니므로.\n (단 데이터 loop 도 필드 구조는 컬럼과 1:1로 단순하게 유지)\n- 한 파일에 그리드가 **여러 개여도**, 각 그리드의 `gridData`/`dataConfig`/`gridConfig`/`createGrid`를\n **그리드별로 각각 명시적으로(풀어서)** 작성한다. (설정이 반복되어도 그대로 반복해 적는다.)\n- 이유: 초보 개발자가 **한 그리드 블록만 봐도 전체 설정을 한눈에** 읽을 수 있어야 한다.\n 공통 함수로 묶으면 설정이 흩어져 가독성이 떨어진다. (§주석 규칙과 연결)\n- 요청받은 기능만 이 골격 위에 **최소한**으로 얹는다. (§최소주의 참고)\n\n### 표준 템플릿 (필수 기준)\n\n> 아래가 **SBGrid3.0 그리드 생성의 표준 골격**이다. 반드시 이 구조에서 출발한다.\n> import(css/js) → `#SBGridArea` → script 흐름을 그대로 따른다.\n> **import 3줄**(`sbgrid3.css` → `sbgrid3.js` → `license.js`, 이 순서)은 **신규 단독 HTML을 새로 작성할 때 필요**하다.\n> 이미 **다른 곳(공통 레이아웃·상위 페이지 등)에서 import 되어 있다면 생략**한다. (중복 import 금지)\n> **import 경로는 프로젝트 환경에 맞게 조정**한다. (아래 경로는 예시)\n\n```html\n<!DOCTYPE html>\n<html lang=\"ko\">\n<head>\n <!-- SBGrid3.0 필수 import (css → sbgrid3.js → license.js 순서) — 경로는 환경에 맞게 조정 -->\n <link rel=\"stylesheet\" href=\"sbgrid3.css\">\n <script src=\"sbgrid3.js\"></script>\n <script src=\"license.js\"></script>\n</head>\n<body>\n <div id='SBGridArea'></div>\n\n <script>\n let datagrid;\n\n let gridData = [\n {\"class\":\"매화반\",\"name\":\"홍길동\",\"number\":\"30534\",\"korean\":\"75\",\"english\":\"50\",\"math\":\"88\"},\n {\"class\":\"매화반\",\"name\":\"김철수\",\"number\":\"30115\",\"korean\":\"94\",\"english\":\"84\",\"math\":\"79\"},\n {\"class\":\"국화반\",\"name\":\"최민지\",\"number\":\"30742\",\"korean\":\"84\",\"english\":\"98\",\"math\":\"62\"},\n {\"class\":\"난초반\",\"name\":\"신사임당\",\"number\":\"51124\",\"korean\":\"81\",\"english\":\"74\",\"math\":\"67\"}\n ]\n\n let dataConfig = {\n data : gridData,\n }\n let gridConfig = {\n dataSource : dataConfig,\n container : '#SBGridArea',\n width: '100%',\n height: '500px',\n columns : [\n { field: 'class', caption: '학급', width: 100 },\n { field: 'name', caption: '이름', width: 100 },\n { field: 'number', caption: '숫자', width: 100 },\n { field: 'korean', caption: '국어', width: 100 },\n { field: 'english' , caption: '영어', width: 100 },\n { field: 'math' , caption: '수학', width: 100 },\n ]\n }\n\n datagrid = SBGrid3.createGrid(gridConfig);\n </script>\n</body>\n</html>\n```\n\n---\n\n## 3. 기능 범위 — 최소주의 (기능 임의 추가/삭제 금지)\n\n> 가장 중요한 작업 원칙. 근거 확인은 정확성을 위한 것이지, **기능을 마음대로 넣고 빼라는 뜻이 아니다.**\n\n- 기본 골격 위에 **사용자가 요청한 기능만, 꼭 필요한 최소한**으로 넣는다.\n- **요청하지 않은 옵션/속성/기능을 임의로 추가하지 않는다.**\n - ✗ 예: 시키지 않은 `navigatable`, `rowHeight` 등을 \"있으면 좋아 보여서\" 추가.\n - 어떤 옵션이 꼭 필요해 보이면 **코드에 바로 넣지 말고, 한 줄로 제안만** 하고 사용자 결정에 맡긴다.\n- 사용자가 **\"어떤 메소드/기능 기준으로 만들라\"고 명시하면**(예: `validateGrid`/`findInvalid` 기준),\n **그 기준을 임의로 다른 API/방식으로 바꾸지 않는다.** 변경이 필요하면 **먼저 사용자에게 확인**한다.\n- **이전 샘플의 요소도 사용자가 \"참고하라\"고 명시할 때만** 가져온다.\n- 사용자가 직접 단순화·수정한 코드는 **그 상태를 존중**하고, **빼라고 한 것만 정확히** 뺀다(관련 dead code·주석까지 함께 정리).\n\n---\n\n## 4. 샘플 주석·내용 규칙 (외부 발송용 참고자료)\n\n- 작성하는 샘플은 **외부(고객/타 개발자)에 전달하는 \"참고자료\"** 이다.\n 초보 개발자가 읽고 바로 이해할 수 있도록 **가독성 있고 쉬운 주석**으로 작성한다.\n (상단 개요 → 번호 섹션 → 각 함수 \"무엇/왜\" 주석 구조 권장. **디버그용 `console.log` 등은 제거**.)\n- **샘플 코드 주석에 \"작업 과정/근거 출처\"를 드러내지 않는다.**\n - ✗ 금지: `~문서 기준`, `출처: …`, `제공 예제` 등 **\"어디서 근거를 가져왔는지\"** 를 적는 표현.\n - ✓ 허용: **사용한 메소드·옵션명과 그 동작 설명** (예: `validateGrid()로 실패 개수 확인`,\n `items: (col, masterVal) => [...]`).\n - 즉 **\"무엇을(어떤 API를) 어떻게 쓰는지\"는 적고, \"어디를 참고했는지\"는 적지 않는다.**\n- 라이브러리 결함 단정 등 **외부에 민감할 수 있는 표현**은 피하고, 동작·한계 위주로 중립적으로 서술한다.\n- **샘플 코드 주석의 문장 어미는 \"합니다체\"로 쓴다.** (외부 발송용이므로 정중체로 통일)\n - ✗ 금지: `~한다`, `~그린다`, `~바꾼다`, `~이다` 등 해라체/평서체 어미.\n - ✓ 사용: `~합니다`, `~줍니다`, `~그립니다`, `~바꿉니다`, `~입니다` 등 합니다체 어미.\n - 단, 명사형 라벨(예: `과일`, `구분 바뀌면 콤보 항목 갱신`)은 그대로 둬도 된다.\n\n---\n\n## 5. setTimeout 사용 자제\n\n- **`setTimeout`은 가급적 쓰지 않는다.**\n- 렌더 타이밍 등으로 **꼭 필요한 경우에도 임의로 넣지 말고**, 먼저 사용자에게 **\"왜 필요한지\" 알리고 동의를 구한 뒤** 사용한다.",
"tools": [
{
"description": "Get the full documentation for one SBGrid3.0 API/option by its exact name: syntax, all sub-options, detailed explanation, and a code example. Use after searchSBGridAPI once you know the exact name. ⚠️ SBGrid3 코드/샘플 생성 시 서버 공통지침(표준 골격에서 출발 · columns/gridConfig 리터럴 나열 · 요청 기능만 최소 적용) 준수 — 상세는 서버 instructions 참고.",
"inputSchema": {
"properties": {
"name": {
"description": "Exact API/option name as shown in searchSBGridAPI results (e.g. 'excelExport', 'columns', 'personalization').",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "getSBGridAPIDetail",
"outputSchema": null
},
{
"description": "Find runnable SBGrid3.0 code examples by feature or use case. Returns ready-to-adapt example snippets. Use when you want working sample code rather than the API reference. ⚠️ SBGrid3 코드/샘플 생성 시 서버 공통지침(표준 골격에서 출발 · columns/gridConfig 리터럴 나열 · 요청 기능만 최소 적용) 준수 — 상세는 서버 instructions 참고.",
"inputSchema": {
"properties": {
"limit": {
"description": "Maximum number of examples to return. Default 3.",
"type": "number"
},
"query": {
"description": "Feature or use case to find examples for (e.g. 'excel export', 'row grouping', 'cell editing').",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "getSBGridExample",
"outputSchema": null
},
{
"description": "Browse the SBGrid3.0 API surface by category. Call with no argument to get all top-level categories; pass a category to list the APIs under it. Use to explore what exists when you don't have a specific keyword. ⚠️ SBGrid3 코드/샘플 생성 시 서버 공통지침(표준 골격에서 출발 · columns/gridConfig 리터럴 나열 · 요청 기능만 최소 적용) 준수 — 상세는 서버 instructions 참고.",
"inputSchema": {
"properties": {
"category": {
"description": "Category to list APIs for (optional). Omit to return the list of all categories.",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "listSBGridAPIs",
"outputSchema": null
},
{
"description": "Search SBGrid3.0 grid API and option documentation by keyword. Returns matching entries with name, summary, syntax, and category. Start here to find which API/option fits a task, then call getSBGridAPIDetail for full details or getSBGridExample for code. ⚠️ SBGrid3 코드/샘플 생성 시 서버 공통지침(표준 골격에서 출발 · columns/gridConfig 리터럴 나열 · 요청 기능만 최소 적용) 준수 — 상세는 서버 instructions 참고.",
"inputSchema": {
"properties": {
"limit": {
"description": "Maximum number of results to return. Default 5.",
"type": "number"
},
"query": {
"description": "Keyword to search: a feature, option, or method name (e.g. 'excelExport', 'filter', 'column width', 'row grouping').",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "searchSBGridAPI",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:fb8d2ca38e7f07d77e71de9831729701a73db021c0303ea2e10765dbc2f86293 | sha256sum