Skip to main content
Glama

SC2 Map Editor MCP

MCP 서버로서, 코딩 에이전트가 Galaxy Editor UI를 구동하는 대신 파일 내용을 직접 조작하여 StarCraft II 맵과 모드를 검사하고 편집할 수 있게 해주는 서버입니다.

상태: 프리릴리스. PLAN.md의 대부분이 구현되어 있으며, 미구현 부분은 숨기지 않고 명시적으로 기술되어 있습니다. 현재 기능을 읽거나 실행 중인 서버에 sc2_get_server_info로 질문하십시오 — 그것이 특정 빌드와 시스템에 대한 결정적 답변입니다.

현재 기능

서버는 sc2_get_server_info를 통해 이를 자체적으로 보고합니다 — 그것이 실행 중인 빌드에 대한 결정적 답변입니다. 현재로서는:

하위 시스템

읽기

쓰기

비고

작업 공간 스테이징

압축 해제된 문서 디렉터리만 해당

구성 요소 인벤토리

⚠️

ComponentList는 읽기 전용이고, DocumentInfo 필드와 종속성 체인은 쓰기 가능

GameData 카탈로그

검색, 검사, 상속 해석, 참조 찾기, 패치/복제/생성/삭제. 자신의 문서에서만 — 종속성은 로드되지 않음

MPQ 아카이브 (.SC2Map, .SC2Mod)

실제 래더 맵에서 바이트 단위로 동일한 왕복이 가능하며, 여기에서 압축한 맵은 에디터에서 열림 — docs/native-helper.md 참조

Galaxy 스크립트

파싱, 심볼, 구문 진단, 안전한 텍스트 패치. 유형 검사 없음 — 게임의 네이티브가 필요. 벤더링된 툴킷을 빌드해야 함

트리거

⚠️

구조, 이름, 검색. 이름 변경만 — 구조적 편집은 의도적으로 구현하지 않음

지역화

텍스트 테이블, BOM과 CRLF를 정확히 보존

SC2Layout

10단계

배치된 객체 / 지역

둘 다 XML이며 바이너리가 아님. 배치, 이동, 삭제 — 에디터를 통해 왕복됨. 지형 높이는 참조하지 않음

지형

⚠️

설명자만 해당(타일 세트, 크기, 절벽 세트). 대량 데이터는 매직/버전/크기로 보고되며, 디코딩되지 않음

에디터 실행

n/a

Galaxy Editor에서 문서를 열고 로그를 읽음. 자동 테스트 맵 실행은 제공되지 않음 — 검증된 안정적인 메커니즘 없음

미구현 부분이 왜 그 위치에 있는지, 그리고 각 행에서 "⚠️"이 무엇을 의미하는지: docs/capabilities.md.

압축된 아카이브는 종단 간(end-to-end)으로 작동합니다: .SC2Map에서 열린 기존 맵을 여기에서 확장하고, 여기에서 다시 압축한 다음 Galaxy Editor에서 열면 실제 문서로 로드되며, 에디터는 추가된 카탈로그를 이름으로 해석합니다. 네이티브 헬퍼를 빌드하려면 C++ 툴체인과 Windows SDK가 필요합니다 (scripts/build-native.ps1). 이것이 없으면 capabilities.mpqfalse를 보고하고, 압축된 아카이브는 명확한 오류와 함께 거부됩니다.

종속성: 로컬 것은 로드되고, Blizzard의 것은 로드되지 않습니다. 맵 옆에 있는 .SC2Mod 디렉터리는 인덱싱되며, 그 객체는 상속 및 참조에 사용될 수 있습니다 — 읽기 전용입니다. 이 서버는 종속성 아카이브를 절대 수정하지 않기 때문입니다. Blizzard의 기본 모드는 설치 폴더의 CASC 저장소 안에 있으며, 이 빌드는 그것을 읽을 수 없습니다. 그것은 맵이 손상된 것과는 전혀 다르기 때문에 '누락'이 아닌 in-casc로 보고됩니다.

도구

도구

읽기 전용

용도

sc2_get_server_info

버전, 구성, 기능 매트릭스, 제한 사항

sc2_detect_installations

디스크를 검사하지 않고 StarCraft II 찾기

sc2_open_document

아니요

문서를 스테이징하고 workspace_id 받기

sc2_get_document_summary

종류, 개수, 구성 요소, 의존성, 진단, 알려진 결함

sc2_list_workspaces

재연결 후 workspace_id 복구

sc2_list_components

ComponentList.SC2Components 파싱; 각 항목을 실제 파일로 확인

sc2_get_document_info

이름, 작성자, 모드 유형, 아이콘, 스크린샷, 의존성

sc2_get_dependencies

해석 순서대로 의존성 체인

sc2_list_component_types

구성 요소 유형 코드 참조 표

sc2_list_catalog_domains

존재하는 카탈로그 도메인 및 항목 수

sc2_search_catalog

ID로 카탈로그 개체 검색, 도메인으로 필터링

sc2_get_catalog_object

한 개체의 고유 선언과 원문 XML

sc2_resolve_catalog_object

상속을 포함한 최종 값과 각 값의 출처

sc2_find_catalog_references

개체를 참조하는 항목과 공유 여부

sc2_patch_catalog_object

아니요

경로별 필드 수준 편집, 공유 개체 경고 포함

sc2_clone_catalog_object

아니요

개체를 새 ID로 바이트 단위 복사

sc2_create_catalog_object

아니요

새 개체 추가, 가능하면 부모 포함

sc2_delete_catalog_object

아니요

개체 제거; 참조 중이면 거부

sc2_list_locales

존재하는 로캘 및 텍스트 테이블

sc2_search_text_keys

키 또는 값으로 텍스트 테이블 검색

sc2_get_text_value

지역화된 문자열 하나 읽기

sc2_set_text_value

아니요

지역화된 문자열 생성 또는 업데이트

sc2_delete_text_key

아니요

지역화된 문자열 제거

sc2_copy_text_key

아니요

키 또는 로캘 간 문자열 복사

sc2_find_missing_localization

표시 이름이 없는 카탈로그 개체

sc2_launch_editor

아니요

Galaxy Editor에서 문서를 열어 로드 확인

sc2_get_editor_logs

편집기 자체 로그 나열 또는 읽기

sc2_get_user_maps

레지스트리를 통해 확인된 사용자 Maps 폴더

sc2_list_galaxy_files

문서의 스크립트; 생성된 MapScript 표시

sc2_get_galaxy_file

스크립트 읽기, 선택적으로 줄 범위 지정

sc2_get_galaxy_symbols

함수, 변수, 구조체, 포함 파일

sc2_get_galaxy_diagnostics

줄 및 열이 포함된 구문 오류

sc2_apply_galaxy_patch

아니요

정확한 텍스트 편집, 파싱을 깨면 거부

sc2_create_galaxy_file

아니요

라이브러리 추가, 먼저 구문 검사

sc2_list_triggers

이름이 확인된 트리거 트리

sc2_get_trigger

한 요소: 유형, 이름, 내용, 참조자, 원시 XML

sc2_search_triggers

이름으로 트리거 요소 찾기

sc2_rename_trigger

아니요

요소 이름 바꾸기 (TriggerStrings만 수정)

sc2_list_placed_objects

맵의 유닛, doodad, 지점

sc2_place_object

아니요

다음 사용 가능한 ID로 유닛, doodad 또는 지점 배치

sc2_update_object

아니요

배치된 개체 이동, 회전 또는 크기 조정

sc2_delete_object

아니요

배치된 개체 제거

sc2_list_regions

모양이 포함된 지역

sc2_create_region

아니요

다음 사용 가능한 ID로 지역 추가

sc2_update_region

아니요

지역 이동 또는 이름 바꾸기

sc2_delete_region

아니요

지역 제거

sc2_add_dependency

아니요

의존성 추가; 이후 항목이 로드 순서에서 우선

sc2_remove_dependency

아니요

file: 부분으로 일치하는 의존성 제거

sc2_set_document_info

아니요

ModType 같은 단일 값 DocInfo 필드 설정

sc2_get_terrain_summary

지형 설명자와 바이너리 구성 요소 헤더

sc2_create_unit_from_template

아니요

이름, 능력치, 자체 무기를 가진 유닛 복제

sc2_set_unit_weapon_damage

아니요

공유하는 다른 유닛에 영향을 주지 않고 한 유닛의 피해량 변경

sc2_isolate_shared_object

아니요

공유 개체의 소유자 한 명에게 전용 사본 부여

sc2_check_shared_object

이 편집이 소유자 한 명을 넘어 영향을 미칠까?

sc2_validate_document

이 빌드가 가진 모든 검사를 카테고리별로, 검사되지 않은 항목도 명시

sc2_commit_document

아니요

백업 및 사전 점검과 함께 스테이징 문서를 기록

sc2_diff_workspace

소스 또는 스냅샷과의 통합 diff

sc2_get_changes

각 변경 전에 찍은 스냅샷이 포함된 변경 내역

sc2_revert_change

아니요

가장 최근 변경 실행 취소

sc2_create_snapshot

아니요

알려진 정상 상태 고정

sc2_list_snapshots

워크스페이스에 보관된 스냅샷

sc2_restore_snapshot

아니요

스테이징 트리를 스냅샷으로 되돌리기

sc2_list_files

스테이징 트리의 페이지별 목록

sc2_read_file

스테이징 파일 하나 읽기 (텍스트, 또는 바이너리는 base64)

sc2_search_files

스테이징 텍스트 파일 전체에서 리터럴 부분 문자열 검색

sc2_discard_workspace

아니요

스테이징 복사본 삭제; 소스는 그대로

안전 모델

이 프로그램은 언어 모델의 지시에 따라 맵을 편집하므로 기본값은 보수적입니다:

  • 소스는 절대 수정되지 않습니다. sc2_open_document는 문서를 서버 소유의 스테이징 디렉터리에 복사합니다. 모든 편집은 그곳에 적용됩니다. sc2_commit_document만이 그곳에서 데이터가 나갈 수 있는 유일한 방법이며, 검증 오류, 작업 중 소스 변경, 대상 위치 점유라는 세 가지 독립적인 사유로 거부합니다. 각각은 별도로 면제되어야 합니다.

  • 경로는 허용 목록에 포함된 것만 사용할 수 있습니다. allowedRoots 밖의 항목은 읽거나 쓸 수 없습니다. 경로는 먼저 정규화되므로 심볼릭 링크로 벗어날 수 없습니다.

  • 셸을 실행하지 않습니다. 외부 프로그램은 인자 배열, 제한 시간, 정리된 환경으로 생성됩니다. "명령 실행" 도구는 없습니다.

  • 구현되지 않음은 구현되지 않음입니다. 기능 플래그는 코드가 존재하고 그리고 해당 백엔드가 이 머신에 있을 때만 true입니다. 서버는 추측하기보다 할 수 없다고 말하는 것을 선택합니다.

  • 공유 개체는 실수로 편집되지 않습니다. 스무 유닛이 하나의 무기를 공유합니다. "이 유닛의 피해량" 변경을 요청하면 체인을 복제하고 그 유닛만 다시 연결하며 무엇을 복사했는지 정확히 알려줍니다. 명시적으로 공유 원본을 수정하도록 요청하지 않는 한 말입니다.

  • 편집은 무손실, 미리 보기 가능, 되돌릴 수 있습니다. XML 변경은 정확한 바이트 범위를 이어 붙이므로 편집 외부의 모든 것(주석, 속성 순서, CRLF 줄 끝, 파일이 줄바꿈으로 끝나는지 여부)이 동일하게 유지됩니다. 모든 변경은 먼저 스냅샷을 찍고, dry_run을 지원하며, 통합 diff를 생성하고, 어떤 부분이라도 실패하면 완전히 롤백하며, 이후 되돌릴 수 있습니다.

요구 사항

  • Node.js 22 이상 (26으로 개발됨)

  • pnpm 10

  • StarCraft II 자체와 관련된 모든 작업에는 Windows가 필요합니다. 핵심은 크로스 플랫폼이지만 편집기 통합은 그렇지 않습니다.

시작하기

pnpm install
pnpm run verify

verify는 린트, 타입 검사, 빌드, 전체 테스트 스위트를 실행합니다. 여기에는 빌드된 서버를 실제 자식 프로세스로 생성하고 stdio를 통해 MCP로 통신하는 통합 테스트도 포함됩니다.

패킹된 .SC2Map 아카이브를 읽거나 쓰려면 sc2mpq 사이드카도 필요합니다. 이는 배포되지 않고 빌드되는 네이티브 바이너리이며, 커밋된 바이너리는 빌드 머신의 경로를 포함하게 됩니다. 고정된 StormLib을 가져와 컴파일하세요:

pwsh scripts/bootstrap.ps1 -Only StormLib
pwsh scripts/build-native.ps1

이 작업에는 CMake, MSVC 툴셋 Windows SDK가 필요합니다. docs/native-helper.md를 참조하세요. 이 문서는 이것들이 없으면 무엇이 실패하는지 설명합니다. 이를 건너뛰어도 패킹된 아카이브 지원을 제외한 모든 것이 정상 작동합니다. capabilities.mpq는 단순히 false를 보고합니다.

구성 파일을 생성하세요 (docs/configuration.md 참조):

node apps/sc2-mcp-server/dist/main.js doctor

doctor는 해석된 구성, 감지된 StarCraft II 설치, 기능 매트릭스를 출력합니다. 서버가 유용한 작업을 수행할 수 없는 경우(예: 허용된 루트가 구성되지 않은 경우) 0이 아닌 종료 코드로 종료됩니다.

MCP 클라이언트 연결

서버는 stdio를 통해 MCP를 사용합니다. 클라이언트를 빌드된 진입점으로 지정하세요:

{
  "mcpServers": {
    "sc2": {
      "command": "node",
      "args": ["C:\\path\\to\\SC2EditorMCP\\apps\\sc2-mcp-server\\dist\\main.js"],
      "env": {
        "SC2MCP_ALLOWED_ROOTS": "C:\\Users\\me\\OneDrive\\Documents\\StarCraft II\\Maps"
      }
    }
  }
}

저장소 구조

apps/sc2-mcp-server/     MCP protocol layer: tools, schemas, error translation, stdio entry
packages/sc2-core/       Domain layer: config, path guard, workspace staging, MPQ adapter
packages/sc2-test-utils/ Test fixtures and temp-directory helpers
native/sc2mpq/           C++ MPQ sidecar (StormLib), built separately
docs/                    capabilities.md, sc2-formats.md, native-helper.md, galaxy.md
docs/adr/                Architecture decision records
vendor/PINS.json         Pinned upstream sources (checkouts are gitignored)
scripts/                 bootstrap.ps1 (fetch pins), build-native.ps1 (build the sidecar)
tests/                   Cross-package integration tests

계층 규칙(PLAN.md §4): 도구 핸들러는 입력을 검증하고 도메인 서비스를 호출한 뒤 결과를 변환합니다. SC2 파싱은 도구 핸들러에 존재하지 않습니다.

라이선스 및 콘텐츠

MIT — LICENSE 참조. 상표 및 타사 고지 사항은 NOTICE.md에 있습니다. 이 프로젝트는 Blizzard Entertainment와 제휴하거나 보증하지 않습니다.

이 저장소에는 Blizzard 자산, 추출된 게임 데이터 또는 저작권이 있는 맵 콘텐츠가 포함되어 있지 않으며 앞으로도 포함되지 않을 것입니다. 테스트 픽스처는 프로젝트에서 작성한 자리 표시자로, 스테이징 및 트랜잭션 메커니즘을 테스트하는 데는 유용하지만 형식 파서를 검증하는 데는 쓸모없습니다. 파서는 실제 편집기 출력으로 확인해야 합니다.

-
license - not tested
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

View all MCP Connectors

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/erivgout/sc2-map-editor-mcp'

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