본문으로 이동

도움말:S3 연구 메모리/MCP 클라이언트

S3 연구 메모리
S3Admin (토론 | 기여)님의 2026년 7월 18일 (토) 19:09 판 (S3 연구 메모리 저장소 문서 동기화)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

이 페이지는 저장소 문서에서 자동으로 동기화됩니다. 위키에서 직접 편집하지 마세요.

연구실에서 운영하는 MCP 서버는 하나입니다. 모든 플랫폼은 서버 담당자가 알려 준 동일한 중앙 /mcp 주소를 사용하며, 그 뒤에는 하나의 Semantic MediaWiki가 있습니다. 클라이언트 설정은 중앙 주소를 기억시키는 용도일 뿐 서버나 데이터 저장소를 새로 만들지 않습니다.

먼저 운영체제별 연결

공용 쓰기 토큰을 받은 뒤 운영체제에 맞는 문서에서 토큰 저장과 기본 연결을 마치세요.

각 문서는 토큰 입력, 에이전트에게 연결 맡기기, 직접 연결과 확인 순서로 되어 있습니다. 이 문서는 웹 커넥터와 제품별 제약을 확인할 때 사용합니다.

각 PC에는 이 저장소, Docker, 위키 비밀번호가 필요하지 않습니다. 사용자용 연결 주소로 localhost, 127.0.0.1, SSH port forwarding, generic MediaWiki api.php를 사용하지 않습니다.

지원 상태

플랫폼 중앙 연결 방식 공개 읽기 현재 메모 쓰기
ChatGPT 웹 조직 앱 게시 또는 사용자 설정의 개발자 모드 초안 가능 open 모드의 Business/Enterprise/Edu에서 가능
ChatGPT desktop app의 Codex (macOS/Windows) Codex 공용 MCP 설정 가능 Bearer 환경변수
Codex CLI Codex 공용 MCP 설정 가능 Bearer 환경변수
VS Code Codex 확장 같은 Codex 설정 가능 Bearer 환경변수
Claude 웹 중앙 HTTPS 커넥터 가능 OAuth 추가 뒤 가능
Claude Desktop 같은 Claude 계정 커넥터 가능 OAuth 추가 뒤 가능
Claude CLI / Claude Code 중앙 HTTPS URL 직접 등록 가능 공용 Bearer 헤더
VS Code Claude 확장 같은 Claude Code 설정 가능 공용 Bearer 헤더
Cursor 사용자 전역 원격 MCP 설정 가능 Bearer 환경변수 헤더

ChatGPT 웹

조직에서 함께 쓸 때는 워크스페이스 관리자가 중앙 MCP를 앱으로 등록하고 게시합니다. 사용자 설정의 개발자 모드에서는 같은 URL을 초안으로 먼저 시험할 수 있습니다. ChatGPT는 각 PC의 Codex 설정을 읽지 않습니다.

워크스페이스 관리자가 한 번만 설정

  1. 사용자 계정에서 developer mode를 사용할 수 있는지 확인한 뒤 Workspace settings → Apps → Create를 엽니다.
  2. 이름은 S3 Research Memory, MCP URL은 https://s3wiki.yonsei.ac.kr/mcp로 입력합니다.
  3. Scan tools로 표시된 열 도구와 read/write annotation을 확인합니다.
  4. Create를 누릅니다.
  5. Workspace settings → Apps → Drafts에서 항목을 열고 Publish를 누릅니다. 표시되면 접근 범위와 action control도 정합니다.
  6. 공개 읽기 도구를 확인합니다. 서버가 open 모드라면 변경 도구 다섯 개도 인증 없이 동작하고, token 모드라면 거부됩니다.

ChatGPT 앱은 처음 스캔한 도구와 스키마를 자동으로 갱신하지 않습니다. 서버 업데이트 뒤 audit_lessonsrevise_lesson이 보이지 않으면 게시 전 Draft에서 Scan tools를 다시 실행합니다. Enterprise/Edu에 게시한 앱은 앱 설정의 Refresh로 새 action을 불러와 검토하고 필요한 action을 허용합니다. Business에 게시한 앱은 현재 새 앱으로 다시 만들어 게시해야 합니다. 갱신 뒤 읽기 다섯 개와 쓰기 다섯 개, 모두 열 도구인지 확인합니다. 자세한 제한은 ChatGPT 사용자 정의 MCP 안내를 따릅니다.

공개 읽기는 OAuth 없이 됩니다. full MCP 쓰기는 Business, Enterprise, Edu에서만 지원됩니다. 서버가 open 모드면 OAuth 없이도 변경 도구 다섯 개를 쓸 수 있습니다. token 모드에서 웹 쓰기를 열려면 OAuth를 추가해야 합니다. Pro는 read/fetch만 쓸 수 있습니다. Agent mode는 사용자 정의 앱을 사용하지 않고 Deep Research도 read/fetch만 사용합니다.

서버가 github 모드라면 앱 인증 방식으로 OAuth를 선택합니다. ChatGPT는 MCP의 discovery 문서를 읽고 GitHub 로그인으로 이동합니다. GitHub OAuth App callback은 https://s3wiki.yonsei.ac.kr/oauth/github/callback이어야 합니다. 이 모드에서는 검색을 포함한 MCP 연결 전체가 로그인 대상입니다. mcp:write scope는 생성, 관계, 근거 첨부·검증 기록과 조건부 수정에 함께 적용됩니다.

사용자 설정에서 초안 시험

  1. Settings → Apps → Advanced settings에서 Developer mode를 켭니다.
  2. Settings → Apps로 돌아가 Create를 누릅니다.
  3. 같은 이름과 중앙 URL을 입력하고 Scan tools로 열 도구를 확인합니다.
  4. 앱을 만든 뒤 새 대화에서 공개 검색을 시험합니다.

이 메뉴는 요금제와 워크스페이스 정책에 따라 보이지 않을 수 있습니다. 사용자 설정에서 만든 항목은 조직에 게시된 앱이 아니므로, 모두에게 배포하려면 위 관리자 절차를 따릅니다.

사용자 설정

  1. 새 ChatGPT 대화를 엽니다.
  2. 앱 또는 도구 메뉴에서 S3 Research Memory를 선택합니다.
  3. 공개 읽기 연결을 켜고 검색 요청으로 확인합니다.

ChatGPT 웹은 ~/.codex/config.toml을 읽지 않습니다. 자세한 현재 절차는 ChatGPT 사용자 정의 MCP 안내, ChatGPT app 연결인증 안내를 따릅니다.

ChatGPT desktop app의 Codex, Codex CLI, VS Code Codex 확장

세 클라이언트는 같은 머신에서 ~/.codex/config.toml을 공유합니다. 한 번 등록하면 그 PC에서는 앱, CLI, 확장에 따로 같은 서버를 만들지 않습니다.

연구실 기본 설정

S3RM_MCP_TOKEN을 현재 프로세스가 읽을 수 있는 환경에 넣고 다음 명령을 한 번 실행합니다.

codex mcp add s3-research-memory \
  --url https://s3wiki.yonsei.ac.kr/mcp \
  --bearer-token-env-var S3RM_MCP_TOKEN
codex mcp list

CLI 명령 직후에는 URL과 환경변수 이름이 저장됩니다. 실제 토큰 값은 들어가지 않습니다. 그 서버 블록에 승인 모드 한 줄을 직접 병합합니다.

[mcp_servers.s3-research-memory]
url = "https://s3wiki.yonsei.ac.kr/mcp"
bearer_token_env_var = "S3RM_MCP_TOKEN"
default_tools_approval_mode = "auto"

codex mcp adddefault_tools_approval_mode 줄을 자동으로 만들지 않습니다. ChatGPT desktop app의 Codex에서 Settings → Configuration → Open config.toml을 누르거나 편집기를 열어 위 한 줄만 같은 서버 블록에 추가합니다. 다른 MCP 블록을 덮어쓰지 않습니다.

auto에서는 Codex가 도구 annotation에 따라 승인 필요 여부를 판단합니다. revise_lesson처럼 destructive로 표시된 도구는 확인을 요청할 수 있습니다. 서버는 쓰기를 메모 작성, 관계 연결, 근거 첨부·검증과 조건부 본문 수정으로 제한합니다.

  • ChatGPT desktop app의 Codex(macOS/Windows): Settings → MCP servers에서 항목을 확인하고 Restart합니다.
  • Codex CLI: codex mcp list, 대화형 화면에서는 /mcp를 사용합니다.
  • VS Code Codex 확장: 톱니바퀴의 MCP servers에서 확인한 뒤 Restart extension을 누릅니다.

GUI 앱은 셸에서 임시로 export한 환경변수를 받지 못할 수 있습니다. 이때는 운영체제 사용자 환경에 토큰을 넣고 앱과 확장을 완전히 종료했다가 다시 실행합니다.

OAuth를 추가한 경우

사용자별 계정이 필요해 OAuth를 추가했다면 앱이나 확장의 Authenticate로 로그인할 수 있습니다. 공용 토큰을 쓰는 현재 기본 설정에는 필요하지 않습니다.

codex mcp add s3-research-memory --url https://s3wiki.yonsei.ac.kr/mcp
codex mcp login s3-research-memory
codex mcp list

공식 설정 항목과 세 클라이언트의 공유 방식은 Codex MCP 문서를 기준으로 했습니다.

Claude 웹과 Claude Desktop

Team/Enterprise 관리자가 한 번만 설정

  1. Claude 웹에서 Organization settings → Connectors → Add → Custom → Web을 엽니다.
  2. 이름을 S3 Research Memory, URL을 https://s3wiki.yonsei.ac.kr/mcp로 입력합니다.
  3. open 모드는 인증을 추가하지 않습니다. github 모드는 OAuth를 선택해 GitHub로 로그인합니다. token 모드는 웹 커넥터 쓰기에 사용하지 않습니다.
  4. 사용할 수 있는 계정 범위를 정합니다.

웹과 Desktop의 사용자 정의 커넥터에는 임의의 공용 Bearer header를 넣을 수 있다고 가정하지 않습니다. open 또는 github 모드를 사용하세요.

사용자 설정

Claude 웹이나 Desktop에서 Customize → Connectors를 열고 S3 Research Memory를 연결합니다. 채팅에서는 + → Connectors에서 활성화합니다.

Claude Desktop은 같은 Claude 계정의 원격 커넥터를 사용합니다. 별도 Desktop 설정 파일을 만들지 않고, 같은 계정으로 로그인한 뒤 채팅에서 connector를 켭니다. Hosted connector의 요청은 사용자 PC가 아니라 Anthropic cloud에서 중앙 MCP로 들어옵니다. 그래서 모든 플랫폼이 같은 공개 HTTPS 주소를 사용합니다.

개인 Free/Pro/Max 계정은 Customize → Connectors → + → Add custom connector에서 같은 URL을 등록할 수 있습니다. Free 계정은 사용자 정의 커넥터 한 개까지 쓸 수 있습니다. Team/Enterprise에서는 소유자가 등록한 connector를 사용합니다. Anthropic remote connector 문서에서 현재 절차를 확인할 수 있습니다.

Claude CLI / Claude Code와 VS Code Claude 확장

Claude Code에는 연구실 중앙 HTTPS 주소와 공용 토큰 헤더를 사용자 범위에 한 번 등록합니다.

claude mcp add --transport http --scope user \
  s3-research-memory https://s3wiki.yonsei.ac.kr/mcp \
  --header 'Authorization: Bearer ${S3RM_MCP_TOKEN}'

작은따옴표를 유지하면 셸이 토큰을 먼저 펼치지 않습니다. Claude 설정에는 ${S3RM_MCP_TOKEN} 참조가 저장되고, 실행할 때 사용자 환경에서 값을 읽습니다. claude를 시작한 뒤 /mcp에서 연결을 확인합니다. 같은 PC의 VS Code Claude 확장도 이 설정을 사용합니다. VS Code 확장을 쓸 때는 확장 프로세스도 토큰 환경변수를 읽을 수 있게 한 뒤 완전히 다시 시작합니다.

Claude.ai에 HTTPS connector를 등록한 조직에서는 /mcpclaude.ai 영역에 나타나는 같은 중앙 커넥터를 대신 켤 수 있습니다.

Claude Code MCP 문서VS Code 통합 문서가 claude.ai connector 동기화, /mcp, OAuth와 remote HTTP의 기준입니다.

Cursor

Cursor의 사용자 전역 ~/.cursor/mcp.json에 중앙 HTTPS 주소와 공용 토큰 헤더를 등록하면 모든 프로젝트와 Cursor CLI가 같은 지식을 읽고 메모도 남길 수 있습니다.

{
  "mcpServers": {
    "s3-research-memory": {
      "url": "https://s3wiki.yonsei.ac.kr/mcp",
      "headers": {
        "Authorization": "Bearer ${env:S3RM_MCP_TOKEN}"
      }
    }
  }
}

Cursor의 환경변수 문법은 ${env:NAME}입니다. 토큰을 운영체제의 사용자 환경에 넣고 Cursor를 완전히 종료했다가 다시 실행합니다.

Cursor 설치 링크 (cursor://anysphere.cursor-deeplink/mcp/install?name=s3-research-memory&config=eyJ1cmwiOiJodHRwczovL3Mzd2lraS55b25zZWkuYWMua3IvbWNwIiwiaGVhZGVycyI6eyJBdXRob3JpemF0aW9uIjoiQmVhcmVyICR7ZW52OlMzUk1fTUNQX1RPS0VOfSJ9fQ%3D%3D)는 위 server object를 Cursor 설정 화면에 추가합니다. 링크에는 중앙 URL과 토큰 환경변수 이름이 들어 있지만 실제 토큰 값은 없습니다. 수동 설정 뒤에는 Cursor 사이드바의 Customize → MCP에서 활성 상태를 확인합니다. Cursor CLI에서는 agent mcp listagent mcp list-tools s3-research-memory를 사용합니다. 명령 형식은 Cursor CLI 공식 문서를 따릅니다.

Cursor Teams/Enterprise 관리자는 Dashboard의 Integrations & MCP에서 같은 설정을 Team Marketplace에 올리고 Default On 또는 Required로 배포할 수 있습니다. 공식 스키마와 팀 배포 방식은 Cursor MCPCursor plugin 배포를 따릅니다.

VS Code의 일반 .vscode/mcp.json과 Cursor의 .cursor/mcp.json은 스키마가 다릅니다. 또한 일반 VS Code MCP 설정이 Codex 또는 Claude 확장에 자동 적용된다는 공식 근거가 없으므로, 이 문서에서는 각 공급자의 설정만 사용합니다.

도구와 권한

도구 용도 쓰기 여부
search_lessons 전체 텍스트 검색과 필터 읽기
get_lesson 지정한 메모와 필드 조회 읽기
audit_lessons 정확한 ID의 revision·내용·근거·관계 검사 읽기
find_related_lessons 들어오고 나가는 관계 탐색 읽기
find_analogies 명시된 관계와 후보 유사 사례 탐색 읽기
create_lesson_draft 검증된 Lesson: 페이지 생성 메모 작성
link_lessons 허용된 관계 하나 추가 관계 추가
attach_evidence 인용 가능한 근거 하나 추가 근거 추가
record_evidence_verification evidence의 append-only 검증 수령 기록 추가 검증 추가
revise_lesson 같은 Lesson의 근거 기반 핵심 내용 수정 메모 수정

일반 위키 조작, 승인, 상태 전이, 삭제, 이동, 관리자 도구는 제공하지 않습니다. 메모를 만들 때 review_state, reviewer, timestamp를 에이전트가 정할 수도 없습니다. 같은 주장이나 같은 원천의 보강은 같은 Lesson의 revision으로 남깁니다. supersedes 관계는 독립된 새 주장이 기존 주장을 실제로 대신할 때만 사용하며 대상 메모의 호환 상태값을 바꾸지 않습니다.

요청 형식

모든 요청은 알 수 없는 필드를 거부합니다. fields에 쓸 수 있는 값은 다음과 같습니다.

id, title, question, attempt, context, observation, interpretation,
reusable_lesson, applicability, confidence, evidence, record_origin,
author, reviewer, review_state, created_at, updated_at, citations,
verifications, relations

id를 생략해도 결과에는 자동으로 들어갑니다. citations는 짧은 구조화 근거이고, evidence는 메모 본문의 근거 설명입니다.

읽기 도구의 주요 인자는 다음과 같습니다.

  • `search_lessons(query="", filters=null, fields=null, retrieval_mode="legacy", limit=5, cursor=null)`: 검색어는 최대 500자이며 빈 검색어는 필터에 맞는 메모를 나열합니다.
  • `get_lesson(lesson_id, fields=null, citation_limit=5, citation_cursor=null, citation_detail="compact", verification_limit=5, verification_cursor=null, relation_limit=5, relation_cursor=null)`: 기본값은 요약 필드입니다. 현재 revision_id를 항상 반환합니다. 근거, 검증 기록과 관계는 각각 최대 20개씩 독립적으로 페이지를 넘길 수 있습니다. citation_detail=full은 근거 note, added_by, added_at까지 반환합니다. 본문은 필요한 필드를 지정해 가져옵니다.
  • audit_lessons(expectations, limit=20, cursor=null): 기대값은 고유 Lesson ID 최대 50개입니다. 선택적으로 revision, Lesson 내용 digest, evidence ID·digest·URL·확인 범위, relation을 검사합니다. evidence와 relation 기대값은 Lesson마다 각각 최대 8개이며 결과 index는 입력 배열의 위치입니다. 이 도구는 저장된 기대값의 일치만 확인하며 외부 자료의 사실 진위를 판정하지 않습니다.
  • `find_related_lessons(lesson_id, relations=null, direction="both", filters=null, fields=null, limit=5, cursor=null): directionoutgoing`, incoming, both 중 하나입니다. 저장된 analogous_to는 양방향으로 보입니다.
  • `find_analogies(lesson_id, filters=null, fields=null, retrieval_mode="legacy", min_score=0.08, limit=5, cursor=null)`: 명시된 유사 관계는 score 1입니다. legacy의 나머지 후보는 제한된 단어 겹침과 최대 8개 공통어를 반환합니다. 후보는 저장된 관계가 아닙니다.

retrieval_modelegacy, hybrid_v1 중 하나입니다. 기본 legacy는 기존 순서와 점수를 유지합니다. 서버에서 의미 검색을 켠 뒤 hybrid_v1을 명시하면 search_lessons는 전체 텍스트와 상황·시도·해결 원리 facet을, find_analogies는 저장된 관계와 단어 겹침 및 상황·해결 원리 facet을 결합합니다. analogy의 hybrid_v1 점수는 raw cosine이 아니라 0~1 결합 점수이며 min_score도 이 점수에 적용됩니다. analogy의 basisexplicit_relation, lexical_overlap, semantic_similarity, hybrid 중 하나입니다. 의미 경로가 포함되면 선택 항목인 matched_facetssituation, approach, mechanism 중 실제로 맞은 facet이 들어갈 수 있습니다.

filters에는 review_states, confidences, authors, created_from, created_to, updated_from, updated_to, has_evidence, record_origins를 쓸 수 있습니다. 출처는 lab, imported, synthetic 중 하나입니다. timestamp 필터에는 시간대가 필요하고 서버는 UTC로 정규화합니다. limit의 최댓값은 20입니다.

review_states는 이전 페이지에 저장된 review_state 호환값으로 결과를 좁히는 필터일 뿐입니다. review_statereviewer는 기존 페이지와 클라이언트를 계속 읽기 위해 남겨 둔 변경 불가 필드입니다. 값에 상관없이 저장된 메모는 바로 공개되고 검색되며, 승인·노출·수정 권한이나 시스템 동작에는 영향을 주지 않습니다.

쓰기 입력은 더 좁습니다.

  • create_lesson_draft(draft)는 고유한 operation_id, title, question, attempt, context, observation, interpretation, reusable_lesson, applicability, confidence, evidence, 구조화된 initial_evidence, 선택적 lesson_id만 받습니다. 초기 evidence는 Lesson과 같은 revision에 저장됩니다. 실제 자료를 읽은 경우 initial_evidence.verification에 검증 기록을 같이 보냅니다. 초기 evidence와 검증의 verification_basis는 같아야 합니다. high confidence에서는 이 검증이 필수입니다.
  • link_lessons(from_lesson, relation, to_lesson, operation_id, note="")는 존재하는 서로 다른 두 ID와 고유한 작업 ID가 필요합니다.
  • attach_evidence(lesson_id, evidence)citationkind가 필수입니다. kindpaper, code, dataset, log, benchmark, other 중 하나이고 url, note, evidence_id는 선택이고 operation_id는 필수입니다. verification_basisfull_text, official_abstract, partial_source, metadata_only 중 하나를 반드시 명시합니다. not_recorded는 이전 자료를 읽을 때만 나타나며 새 evidence에는 허용하지 않습니다. 이는 확인한 자료 범위이며 confidence와 다릅니다. added_byadded_at은 서버가 넣습니다. 브라우저 양식은 새 evidence에 not_recorded를 기본으로 넣거나 선택할 수 없습니다.
  • record_evidence_verification(lesson_id, verification)은 최신 expected_revision_id, evidence_id, 정확한 expected_evidence_digest, 고유한 operation_id를 요구합니다. verification_basis, source_identity, source_sha256, source_locator, coverage, outcome, claim_fields로 실제 자료 확인 범위와 판정을 남깁니다. 이 기록은 evidence를 바꾸지 않으며 수정·삭제할 수 없습니다. 같은 evidence를 다시 확인하면 새 기록을 붙이고 마지막 기록을 현재 판정으로 사용합니다. source_sha256은 실제로 검사한 원본 파일 바이트를 해시합니다. 저장·정규화한 텍스트를 검사했다면 그 정확한 텍스트의 UTF-8 바이트를 해시하고, 변환 방법과 보존한 산출물을 source_identitycoverage에 명시합니다.
  • revise_lesson(revision)lesson_id, 현재 expected_revision_id, 고유한 operation_id, 3~300자의 reason, 변경할 핵심 필드, 이미 붙은 basis_evidence_ids 1~8개를 받습니다. relation, evidence와 검증 기록 목록, ID, 출처, 최초 작성자·생성 시각, 호환 필드는 바꿀 수 없습니다. 근거를 먼저 붙였다면 attach_evidence 응답의 current_revision_idexpected_revision_id로 사용합니다. 충돌 시 최신 Lesson을 다시 읽고 변경안을 재계산합니다. 같은 operation과 같은 요청의 재시도는 replayed입니다. operation ID와 이유를 합친 MediaWiki revision 요약이 500자를 넘으면 이유를 자르지 않고 요청을 거부합니다.

다섯 쓰기 도구는 같은 idempotency 규칙을 따릅니다. 같은 Lesson에서 S3W 일반 쓰기, S3R revision, S3V 검증 기록은 operation_id 충돌 범위를 공유합니다. 같은 ID·종류·요청 digest의 정확한 재시도만 replay하고 다른 종류나 digest면 충돌합니다. 다른 Lesson의 같은 ID는 서로 간섭하지 않습니다. 성공 여부가 불분명하면 같은 도구·대상·operation_id·요청을 그대로 재시도하고 새 작업에는 새 ID를 사용합니다. replay 응답은 적용 revision과 현재 최신 revision을 구분합니다. not_recorded evidence는 수정 근거가 될 수 없습니다. observation·interpretation·reusable_lesson의 수정 후 결과 confidence가 medium 또는 high이면 최신 기록 중 full_text 또는 official_abstract, supports이며 변경한 필드를 claim_fields로 연결한 근거가 필요합니다. confidence를 high로 하면 세 필드 모두를 뒷받침해야 합니다. contradictsinconclusive는 지지 근거로 세지 않습니다. 결과 confidence가 low인 교정은 medium/high에서 낮추는 경우와 low에서 유지하는 경우 모두 not_recorded가 아닌 basis evidence로 할 수 있습니다.

검색 목록 응답에는 items, returned, has_more, next_cursor, partial, scanned, scan_limit이 들어갑니다. partial=true는 후보 탐색 한도에 닿았다는 뜻입니다. hybrid_v1을 요청하면 effective_mode, semantic_status, ranking_version, 선택 항목인 retrieval_generation도 들어갑니다. semantic_statusdisabled, building, ready, stale, degraded, unavailable 중 하나입니다. 의미 검색이 꺼졌거나 첫 페이지에서 실패하면 기존 검색으로 대체하고 effective_mode=legacy를 반환합니다. 이미 받은 hybrid cursor를 쓰는 중에 mode나 generation이 달라지면 순서를 바꾸지 않고 cursor 오류를 반환하므로 첫 페이지부터 다시 조회합니다. page_limited_by_output은 byte 한도 때문에 해당 페이지가 짧아졌다는 뜻이고, 긴 문자열이 잘리면 output_truncated가 표시됩니다. cursor는 다른 요청 인자에 묶여 있으므로 그대로 이어 쓰거나 처음부터 새 검색을 시작합니다. get_lesson의 인용·검증·관계 cursor와 audit_lessons cursor는 읽은 revision에도 묶입니다. 페이지 사이에 대상이 바뀌면 이전 cursor를 버리고 첫 페이지부터 다시 검사합니다. full citation 한 항목이 출력 제한에 맞지 않으면 내용을 자르지 않고 오류를 반환합니다.

각 도구는 닫힌 outputSchema를 공개합니다. 성공 결과는 structuredContent에 들어가며, 기존 클라이언트용 compact JSON text도 같은 내용으로 유지합니다.

적은 token으로 찾는 순서

목록 도구는 기본적으로 ID, 제목, 한 줄 메모, 신뢰도와 짧은 근거만 돌려줍니다.

  1. 검색어와 상태·신뢰도 필터를 좁히고 limit=3~5로 시작합니다.
  2. 지금 판단에 필요한 필드만 요청합니다.
  3. 다음 묶음은 limit을 키우지 말고 next_cursor로 받습니다.
  4. 후보를 고른 뒤에만 get_lesson을 호출합니다.
  5. 답변에 메모를 썼다면 반환된 근거 인용도 함께 보존합니다.
  6. 여러 건을 썼거나 고쳤다면 audit_lessonsget_lesson으로 적용 revision과 근거·검증·관계를 확인합니다.

도구 결과의 기본 직렬화 한도는 32 KiB(S3RM_MAX_OUTPUT_BYTES=32768), 절대 상한은 64 KiB입니다. JSON-RPC 포장과 검증 오류까지 포함한 HTTP 응답 본문도 212,992 bytes를 넘지 않습니다. 응답이 잘렸다면 한도를 우회하려 하지 말고 결과 수나 필드를 줄입니다.

S3 Research Memory에서 tail latency와 관련된 메모를 최대 5개만 찾아 줘.
id, title, reusable_lesson, applicability, confidence, citations만 반환해.
S3 Research Memory의 search_lessons를 retrieval_mode=hybrid_v1로 실행해,
표현은 달라도 병목의 제약과 해결 원리가 비슷한 메모를 최대 5개 찾아 줘.
effective_mode와 semantic_status도 알려 줘.
Lesson:gpu_allocator_fragmentation의 궁금했던 점, 당시 조건, 실제 결과, 가능한 원인,
다음에 기억할 것, 언제 맞는지, 관련 자료를 읽고 다른 시스템 분야의 유사 사례를 최대
3개 찾아 줘.
이 결과를 메모로 남겨 줘. 근거를 추측하지 말고 제공된 보고서 경로와
checksum만 인용해. 서버가 관리하는 필드는 건드리지 말고 생성된 Lesson ID만 알려 줘.
이 Lesson의 같은 주장을 보강해야 한다면 현재 revision과 full citation을 먼저 읽어.
근거를 붙인 응답의 current_revision_id를 expected_revision_id로 써서 같은 ID를
revise_lesson으로 고치고,
audit_lessons로 적용 결과를 확인해. 중복 Technical Review Lesson은 만들지 마.

비밀과 연결 경계

  • 서버의 실제 값은 Git에서 제외된 .env에 mode 0600으로 둡니다.
  • 중앙 URL은 공개해도 되며 읽기에 token이 필요하지 않습니다. 공용 쓰기 token은 연구실에서 공유하고 각 클라이언트의 사용자 설정이나 환경변수에 둡니다.
  • 위키 revision HMAC 키는 서버 내부 값이며 어떤 MCP 클라이언트에도 전달하지 않습니다.
  • 서버는 raw token이 아니라 S3RM_MCP_TOKEN_SHA256 digest만 저장합니다.
  • 위키 계정, DB 비밀번호, 관리자 계정과 raw token은 Git에 커밋하지 않습니다.
  • 컨테이너 내부 http://mediawiki/api.php는 MCP adapter만 사용합니다. 이를 클라이언트 주소로 바꾸거나 일반 MediaWiki API를 에이전트에 노출하지 않습니다.
  • 모든 클라이언트는 https://s3wiki.yonsei.ac.kr/mcp 하나와 공용 쓰기 주체를 공유합니다. 기본 연결은 HTTPS이며 native client는 공용 Bearer token을 사용합니다.
  • ChatGPT 웹과 Claude 웹·Desktop의 쓰기가 필요해질 때만 OAuth를 추가합니다.
  • 쓰기 권한이 있는 에이전트는 메모 작성, 관계 연결, 근거 첨부·검증과 기준 revision 및 근거가 있는 핵심 내용 수정을 할 수 있습니다. 상태 변경과 삭제 도구는 없습니다.