entry-offline-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@entry-offline-mcp make a star-avoidance game in Entry and test it"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
entry-offline-mcp
Claude Code, Codex 같은 AI 에이전트가 내 PC에 설치된 엔트리 오프라인(Entry, playentry.org)을 직접 조작해서 블록코딩 / 엔트리파이썬 작품을 만들 수 있게 해 주는 MCP 서버입니다.
오브젝트 추가(라이브러리 2천여 개 스프라이트·배경·소리 검색), 직접 그린 이미지 업로드, 엔트리파이썬 → 블록 변환,
블록 JSON 작성, 변수·리스트·신호·함수, 장면, 실행·키 입력·스크린샷으로 테스트, .ent 저장/열기까지 지원합니다.
작업은 실제 엔트리 창에서 실시간으로 보입니다.
An MCP server that lets AI agents (Claude, Codex, ...) build Entry (Korean block-coding platform) projects by driving the locally installed Entry offline app (Windows).
요구 사항
Windows 10/11
엔트리 오프라인 설치 (playentry.org → 다운로드) (테스트 버전: 2.1.36)
Node.js 22 이상
Git (npx가 GitHub에서 받을 때 사용)
Related MCP server: Parallel CUA
설치
Claude Code
명령 프롬프트(cmd)
claude mcp add -s user entry -- cmd /c npx -y github:l2l2l4/entry-offline-mcpPowerShell (--를 따옴표로 감싸야 합니다)
claude mcp add -s user entry '--' cmd /c npx -y github:l2l2l4/entry-offline-mcpGit Bash에서는
/c가 경로로 바뀌어 버리므로 cmd 또는 PowerShell에서 실행하세요. 첫 실행은 다운로드 때문에 시간이 걸릴 수 있습니다.claude mcp list에서Connected가 보이면 완료.
제거: claude mcp remove entry -s user
Codex (앱 / CLI)
%USERPROFILE%\.codex\config.toml 맨 끝에 추가하고 Codex를 다시 시작하세요.
[mcp_servers.entry]
command = 'cmd'
args = ['/c', 'npx', '-y', 'github:l2l2l4/entry-offline-mcp']
startup_timeout_sec = 120Claude Desktop 등 다른 MCP 클라이언트
{
"mcpServers": {
"entry": {
"command": "cmd",
"args": ["/c", "npx", "-y", "github:l2l2l4/entry-offline-mcp"]
}
}
}직접 받아서 쓰기
git clone https://github.com/l2l2l4/entry-offline-mcp
cd entry-offline-mcp
npm install
claude mcp add -s user entry -- node "%CD%\src\index.js"Codex는 config.toml에 command = 'node', args = ['<받은 폴더>\src\index.js']로 등록합니다.
같은 엔트리 창을 두 에이전트(예: Claude와 Codex)가 동시에 조작하면 꼬이므로 한 번에 하나만 사용하세요.
사용법
에이전트에게 그냥 부탁하면 됩니다.
"엔트리로 별 피하기 게임 만들어줘"
"엔트리파이썬으로 레이캐스팅 3D 미로 만들어줘"
"방금 만든 작품 실행해서 테스트하고 저장해줘"
에이전트는 먼저 entry_guide 도구로 사용 설명서(GUIDE.md)를 읽고 작업합니다.
MCP가 엔트리를 원격 디버깅 포트를 켠 상태로 실행해야 조작할 수 있습니다. 엔트리를 직접 켜 둔 상태라면
entry_launch(restart=true)로 다시 실행합니다(저장 안 된 작업은 미리 저장하세요).작업하는 동안 엔트리 창을 직접 클릭/편집하면 서로 꼬일 수 있으니 지켜보기만 하세요.
처음 실행할 때 작업 폴더
문서\EntryMCP\(projects / images / sounds / screenshots / json)를 자동으로 만듭니다.
도구 목록
분류 | 도구 |
시작/상태 |
|
작품 |
|
오브젝트 |
|
코드 |
|
실행/검증 |
|
고급 |
|
환경변수 (선택)
변수 | 기본값 | 설명 |
|
| 엔트리 실행 파일 경로 |
|
| 원격 디버깅 포트 |
|
| 작업 폴더 |
| 엔트리 폴더의 | 내장 리소스 DB 위치 |
예: claude mcp add -s user entry -e ENTRY_PATH="D:\Entry\Entry.exe" -- cmd /c npx -y github:l2l2l4/entry-offline-mcp
동작 방식
Claude ⇄ (MCP, stdio) ⇄ entry-offline-mcp ⇄ (Chrome DevTools Protocol) ⇄ 엔트리 오프라인(Electron)src/index.jsMCP 도구 ·src/cdp.jsDevTools 연결 ·src/bridge.js엔트리 안에 주입되는 헬퍼 ·src/assets.js내장 리소스 검색 ·src/launcher.js실행
엔트리 내부 API를 사용하므로 엔트리 버전이 바뀌면 일부 기능이 동작하지 않을 수 있습니다. 엔트리 프로그램/리소스는 포함하지 않으며, 사용자 PC에 설치된 엔트리를 그대로 사용합니다. 이 프로젝트는 엔트리(커넥트재단)와 관련 없는 비공식 프로젝트입니다.
라이선스
MIT
Available Tools
24 toolsentry_add_objectA
오브젝트 추가. source='library': 라이브러리 스프라이트/배경(asset_id 또는 asset_name; entry_search_assets로 찾기). 배경은 자동으로 맨 뒤+잠금. source='image': 로컬 이미지 파일(image_paths, png/jpg/svg 등; 여러 장이면 모양 여러 개; 상대경로는 작업폴더/images 기준). source='textbox': 글상자(text, props로 fontSize/color/bgColor 등). source='empty': 빈 오브젝트(붓 그리기용 등). props로 위치/크기/이름 등을 바로 지정. scene을 주면 그 장면에 추가(없으면 현재 장면).
Inputs: source (required), name, text, props, +4 more.
entry_block_referenceB
블록 사전(실행 중인 엔트리에서 직접 읽음). 인자 없이 호출하면 카테고리 목록. category: start, flow, moving, looks, brush, text, sound, judgement, calc, variable, func, analysis, ai_utilize, expansion, arduino. query: 블록 type/한글 문구/파이썬 문법 검색(공백=AND). types: 특정 블록 type들의 상세. 결과: type, text(블록 문구; [KEY]=입력칸), args(입력칸 순서·종류·옵션·기본값), statements(내부 블록 묶음 수), python(엔트리파이썬 문법).
Inputs: limit, query, types, detail, +2 more.
entry_dataA
변수/리스트/신호 관리. kind='variable'|'list'|'message'. action='add'|'set'|'rename'|'delete'. variable: value(초기값), visible(무대에 표시), x,y(표시 위치), scope('global' 또는 오브젝트 이름=그 오브젝트 전용 지역변수). list: items(초기 항목 배열), visible, x, y, width, height. message: name만. 파이썬 코드로 스크립트를 넣으면 쓰인 변수/리스트/신호는 자동 생성되지만, 초기값·표시여부·위치는 여기서 정하세요.
Inputs: kind (required), name (required), action (required), x, +8 more.
entry_define_functionA
함수(나만의 블록) 정의/재정의. 블록 모드용. params: ['이름', ...] 또는 [{name, type:'string'|'boolean'}] (문자/숫자 값 또는 판단 값). {label:'텍스트'}를 끼우면 블록 모양 중간에 글자 삽입. body: compact 블록 배열. 본문에서 매개변수는 {"type":"param","name":"h"}로 참조. kind='value'면 값 반환 함수: return_value에 반환할 값/블록. local_variables: ['i', ...] 함수 지역변수 → 본문에서 {"type":"local_get","name":"i"}, {"type":"local_set","name":"i","value":0}. 호출: 스크립트에서 {"type":"call","function":"함수이름","params":[인자...]}. (엔트리파이썬에서는 entry_set_script의 python 안에 def 함수(인자): 를 쓰면 일반 함수가 자동 생성됩니다)
Inputs: name (required), body, kind, params, +2 more.
entry_eval_jsA
고급: 엔트리 렌더러에서 JavaScript를 직접 실행합니다(전역 Entry 객체, window.__entryMcp 헬퍼 사용 가능). async 함수 본문으로 실행되며 return 값이 JSON으로 반환됩니다. 다른 도구로 불가능한 경우에만 사용하세요.
Inputs: code (required).
entry_get_projectB
현재 작품의 상세 구조: 장면별 오브젝트(id, 이름, 좌표, 크기, 방향, 모양/소리 목록, 레이어), 변수/리스트/신호/함수. scripts='blocks'면 각 오브젝트 코드를 compact 블록 JSON으로, 'python'이면 엔트리파이썬으로 포함.
Inputs: object, scripts.
entry_get_scriptB
오브젝트 코드 읽기. format='blocks'(compact JSON, entry_set_script에 그대로 넣을 수 있음) | 'python'(엔트리파이썬) | 'raw'(엔트리 원본 JSON).
Inputs: object (required), format.
entry_guideA
엔트리 MCP 사용 설명서(좌표계, 블록 JSON 형식, 엔트리파이썬 문법, 고품질 작품 제작 팁). 작업 시작 전에 한 번 읽으세요.
Inputs: no named parameters.
entry_inputA
실행 중인 작품에 사용자 입력을 보냅니다(게임 테스트용). events를 순서대로 실행. {type:'key', key:'space'|'left'|'a'|..., duration_ms?:누르고 있을 시간(기본 100)} {type:'key_down'|'key_up', key} {type:'click', x, y} (무대 좌표, 오브젝트/마우스 클릭 이벤트 발생) {type:'mouse_move', x, y} {type:'mouse_down'|'mouse_up', x, y} {type:'text', text, submit?:true} (묻고 기다리기 대답 입력) {type:'wait', ms} 마지막에 screenshot/state를 돌려줍니다.
Inputs: events (required), state, screenshot.
entry_launchA
Entry 오프라인 앱을 원격 디버깅 포트로 실행하고 연결합니다. 이미 연결 가능하면 그대로 연결합니다. Entry가 디버그 포트 없이 실행 중이면 restart=true가 필요합니다(앱 강제 종료 → 저장 안 된 작업 손실 가능, 사용자 확인 후 사용). 시작 시 "작품 복구" 대화상자가 뜨면 recovery 옵션으로 처리합니다.
Inputs: restart, recovery, open_file.
entry_logsC
엔트리 앱의 콘솔 로그/예외/토스트 경고 메시지를 봅니다(디버깅용).
Inputs: clear, errors_only.
entry_object_assetsA
오브젝트의 모양(picture)/소리(sound) 관리. add_picture: library_ids(entry_search_assets kind=picture의 id) 또는 files(로컬 이미지 경로; 상대경로는 작업폴더/images 기준). add_sound: library_ids(kind=sound의 id) 또는 files(mp3/wav 경로; 상대경로는 작업폴더/sounds 기준). remove_picture / remove_sound / rename_picture / rename_sound: name(현재 이름) [+ new_name].
Inputs: action (required), object (required), name, files, +2 more.
entry_object_opC
오브젝트 관리: action='delete' 삭제, 'duplicate' 복제(스크립트 포함, new_name), 'select' 선택(편집 화면에 표시).
Inputs: action (required), object (required), new_name.
entry_preview_assetsC
라이브러리 리소스의 썸네일 이미지를 봅니다(디자인 선택용). 최대 8개.
Inputs: ids (required), kind (required).
entry_projectA
작품 단위 작업. action='new': 새 작품(기본 엔트리봇 포함, empty=true면 오브젝트 모두 제거). 현재 작품은 저장하지 않으면 사라짐. action='open': .ent 파일 열기(path; 상대경로는 작업폴더/projects 기준). action='save': .ent 파일로 저장. path 생략 시 작업폴더/projects/<작품이름>.ent. 상대경로는 작업폴더/projects 기준. name을 주면 작품 이름도 변경. action='rename': 작품 이름 변경(name). action='export_json': 엔트리 원본 project JSON 전체를 반환(고급 편집용, path를 주면 파일로 저장). action='import_json': project JSON(json 문자열 또는 json_path 파일)을 그대로 불러오기.
Inputs: action (required), json, name, path, +2 more.
entry_runB
작품 실행 제어. action='start'(시작하기 버튼), 'stop', 'restart'. wait_ms만큼 기다린 뒤 결과를 돌려주며, screenshot=true면 무대 화면 캡처, state=true면 변수/오브젝트 상태 포함. 실행 중 에러/경고 로그도 포함됩니다.
Inputs: action (required), state, wait_ms, screenshot.
entry_runtime_stateB
실행 상태 조회: 엔진 상태, 모든 변수/리스트 값, 각 오브젝트의 위치/크기/방향/모양/말풍선/복제본 수, 대답 값.
Inputs: no named parameters.
entry_sceneA
장면 관리: add(name), rename(scene,name), select(scene), delete(scene), move(scene,index). 오브젝트는 '현재 선택된 장면'에 추가되므로, 다른 장면에 넣으려면 entry_add_object의 scene 인자를 쓰세요.
Inputs: action (required), name, index, scene.
entry_screenshotA
화면 캡처. target='stage'(실행 화면만) | 'window'(엔트리 전체 창: 블록 편집기 포함). save_as를 주면 작업폴더/screenshots에 PNG로도 저장.
Inputs: target, save_as.
entry_search_assetsA
엔트리 기본 리소스 라이브러리 검색(오프라인 내장). kind='sprite'(오브젝트: 모양 여러 개+소리 포함), 'background'(배경 오브젝트), 'picture'(모양 단일 그림), 'sound'(소리). query는 한국어/영어 키워드(공백=AND). query 없이 list_categories=true면 카테고리 목록.
Inputs: kind (required), limit, query, offset, +2 more.
entry_set_coding_modeA
엔트리 화면의 코딩 모드 전환: 'block'(블록코딩) | 'python'(엔트리파이썬 텍스트 편집 화면). 코드 자체는 동일하며 표시 방식만 바뀝니다. 파이썬 모드는 일부 블록(값 반환 함수, 지역변수 함수 등)을 지원하지 않습니다.
Inputs: mode (required).
entry_set_scriptA
오브젝트의 코드를 설정합니다. python 또는 blocks 중 하나를 주세요. python: 엔트리파이썬 코드(이벤트는 def when_start():, def when_press_key("space"): 등). 엔트리 자체 변환기로 블록으로 바뀌며, 쓰인 변수/리스트/신호/함수가 자동 생성됩니다. 'import Entry'는 생략 가능. blocks: 스레드 배열 [[이벤트블록, 블록, ...], [...]] (compact 형식, entry_guide 참고). 숫자/문자 리터럴, 드롭다운은 값 또는 이름(변수/신호/오브젝트/모양/소리/장면 이름 → id 자동 변환). mode='replace'(기본: 기존 코드 전부 교체) | 'append'(기존 코드 뒤에 스레드 추가). 결과의 warnings를 반드시 확인하세요(없는 모양/변수 등).
Inputs: object (required), mode, blocks, python.
entry_statusA
연결 상태, 작업 폴더 경로, 현재 작품 요약(장면/오브젝트 이름/변수/신호/함수, 코딩 모드, 실행 상태)을 봅니다.
Inputs: no named parameters.
entry_update_objectA
오브젝트 속성 변경(이름, x/y, 크기, 방향, 이동방향, 회전방식, 보이기, 현재 모양, 레이어 순서, 글상자 글자/글꼴/색 등). 실행 전 "초기 상태"를 정하는 용도입니다.
Inputs: props (required), object (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 24 tools
Each tool maps to a distinct resource or action (project, object, scene, data, script, assets, runtime), and descriptions clarify boundaries well. Minor overlaps exist: entry_status vs entry_get_project both summarize the project, entry_screenshot vs entry_run(screenshot=true) duplicate capture, and entry_runtime_state vs entry_run(state=true) overlap for state inspection.
All tools share a consistent 'entry_' prefix and snake_case, with readable verb_noun forms for actions (get_project, add_object, set_script, define_function). A few are noun-based aggregates (entry_object_op, entry_scene, entry_data, entry_object_assets), which slightly deviates from the verb pattern but stays readable.
24 tools is at the heavy end, justified by the breadth of the Entry IDE domain (project, scenes, objects, scripts, blocks, assets, runtime testing). It feels borderline heavy, with some redundancy (screenshot/state folded into run plus separate tools) that could be consolidated.
Coverage is strong: full project lifecycle (new/open/save/export/import), object and scene CRUD, variables/lists/messages, block and Python scripting, asset library, block reference, run control, input simulation, runtime state, and logging. Only minor gaps like no undo or dedicated script removal (covered by replace) remain.
Maintenance
Related MCP Connectors
Connect ChatGPT, Claude, Cursor or VS Code to your Windows PC: files, terminal, browser, apps.
Connect AI assistants to your approved computer for files, commands, browser and desktop tasks.
Build, run, inspect, and continue AgentScript workflows on connected Super Chrome and Mac clients.
1Use your Mac, Windows or Linux computer from ChatGPT, Claude or Codex: files, commands, documents.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with the Windows operating system, performing tasks such as file navigation, application control, UI interaction, and QA testing.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to operate Windows computers with parallel, human-like input streams, including held keys, concurrent mouse/keyboard actions, UIA/OCR targeting, and a knowledge base for engineering software.1MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to see and operate a Windows PC through mouse, keyboard, screenshots, OCR, window control, and shell commands.-
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to control and interact with the Windows operating system, including file navigation, application control, UI automation, and QA testing.MIT