프로토타입 · 미리 보기: 공식 레지스트리의 모든 서버를 담고 있으며 30분마다 동기화해요. Google로 로그인하면 리뷰를 쓸 수 있어요.프로토타입 · 30분마다 업데이트
PopNx MCPAI를 쓰는 사람을 위한 MCP 서버 · 쉬운 말로 설명해요

Execkit

제작자: blinkingbit-oss버전 0.10.1i★ 13i내 컴퓨터에서 실행
레지스트리 이름io.github.blinkingbit-oss/execkit

설치 방법

What it does

Stateful, structured, safe shell sessions for AI agents over local, SSH, and Docker.

  • Connects 내 컴퓨터에서 실행
  • Account or key No key needed
  • Category 개발자 도구

설치

쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.

검사 3/3 통과 · 내 컴퓨터에서 실행돼요

먼저: 어떤 AI를 쓰시나요?

쓰는 앱을 고르면 아래에 단계가 나옵니다.

Claude에 연결할 수 있지만 먼저 준비가 필요해요

먼저 컴퓨터에 Python (uv)를 설치하세요 (한 번만) · 컴퓨터용 Claude 앱(Windows 또는 Mac)에서만 되고 웹이나 모바일은 안 돼요

  1. Python (uv) 설치

    한 번만 하면 Python (uv)가 필요한 모든 서버에 쓸 수 있어요

    Python (uv) 다운로드 페이지 열기 ↗

  2. 컴퓨터용 Claude 앱 설정 파일 열기

    SettingsDeveloperEdit Config

  3. 이 설정을 붙여 넣고 저장

    명령을 확인하는 중 · 확인을 통과하면 복사 버튼이 나타나요

  4. Claude를 끄고 다시 열기

  5. 해 보기

    Execkit을 써서 나에게 무엇을 해 줄 수 있는지 알려 주고, 하나 해 봐

    ✓ Claude가 Execkit을 쓰고 있다고 하거나 답에 Execkit 도구 이름이 나오면 연결된 거예요

메뉴 이름은 2026년 11월 11일에 Anthropic 도움말에서 확인 · 앱 버전에 따라 화면이 조금 다를 수 있어요

ChatGPT는 아직 Execkit에 연결할 수 없어요

Execkit는 내 컴퓨터에 설치해서 쓰지만 ChatGPT는 웹에서 도는 서버만 연결할 수 있어요

대신 이렇게 할 수 있어요

A · Execkit에 연결되는 앱 쓰기

  • 먼저 컴퓨터에 Python (uv)를 설치하세요 (한 번만) · 컴퓨터용 Claude 앱(Windows 또는 Mac)에서만 되고 웹이나 모바일은 안 돼요
  • 먼저 컴퓨터에 Python (uv)를 설치하세요 (한 번만)
  • 먼저 컴퓨터에 Python (uv)를 설치하세요 (한 번만)
  • 먼저 컴퓨터에 Python (uv)를 설치하세요 (한 번만)

B · 개발자 도구에서 ChatGPT에 연결되는 다른 서버

같은 분류에서 많이 쓰는 것 중 키 없이 주소만으로 연결되는 것을 골랐어요

Claude Code에 연결할 수 있지만 먼저 준비가 필요해요

먼저 컴퓨터에 Python (uv)를 설치하세요 (한 번만)

  1. Python (uv) 설치

    한 번만 하면 Python (uv)가 필요한 모든 서버에 쓸 수 있어요

    Python (uv) 다운로드 페이지 열기 ↗

  2. 터미널 열기

    Mac: Command+스페이스를 누르고 Terminal 입력 · Windows: PowerShell 열기

  3. 이 명령을 붙여 넣고 Enter

    명령을 확인하는 중 · 확인을 통과하면 복사 버튼이 나타나요

  4. Claude Code에서 /mcp 입력

    Execkit이 목록에 있고 연결됨으로 보이면 돼요

  5. 해 보기

    Execkit을 써서 나에게 무엇을 해 줄 수 있는지 알려 주고, 하나 해 봐

    ✓ Claude Code가 Execkit을 쓰고 있다고 하거나 답에 Execkit 도구 이름이 나오면 연결된 거예요

메뉴 이름은 2026년 11월 11일에 Anthropic 도움말에서 확인 · 앱 버전에 따라 화면이 조금 다를 수 있어요

Cursor에 연결할 수 있지만 먼저 준비가 필요해요

먼저 컴퓨터에 Python (uv)를 설치하세요 (한 번만)

  1. Python (uv) 설치

    한 번만 하면 Python (uv)가 필요한 모든 서버에 쓸 수 있어요

    Python (uv) 다운로드 페이지 열기 ↗

  2. 이 버튼으로 Cursor 열기

    명령을 확인하는 중 · 확인을 통과하면 복사 버튼이 나타나요

  3. Cursor에서 AI 채팅을 Agent 모드로 열기

  4. 해 보기

    Execkit을 써서 나에게 무엇을 해 줄 수 있는지 알려 주고, 하나 해 봐

    ✓ Cursor가 Execkit을 쓰고 있다고 하거나 답에 Execkit 도구 이름이 나오면 연결된 거예요

메뉴 이름은 2026년 11월 11일에 Cursor 도움말에서 확인 · 앱 버전에 따라 화면이 조금 다를 수 있어요

VS Code에 연결할 수 있지만 먼저 준비가 필요해요

먼저 컴퓨터에 Python (uv)를 설치하세요 (한 번만)

  1. Python (uv) 설치

    한 번만 하면 Python (uv)가 필요한 모든 서버에 쓸 수 있어요

    Python (uv) 다운로드 페이지 열기 ↗

  2. 이 버튼으로 VS Code 열기

    명령을 확인하는 중 · 확인을 통과하면 복사 버튼이 나타나요

  3. VS Code에서 AI 채팅을 Agent 모드로 열기

  4. 해 보기

    Execkit을 써서 나에게 무엇을 해 줄 수 있는지 알려 주고, 하나 해 봐

    ✓ VS Code가 Execkit을 쓰고 있다고 하거나 답에 Execkit 도구 이름이 나오면 연결된 거예요

메뉴 이름은 2026년 11월 11일에 VS Code 도움말에서 확인 · 앱 버전에 따라 화면이 조금 다를 수 있어요

Windsurf, Zed, Gemini CLI 같은 다른 MCP 앱은 추가 방법이 저마다 달라요. 앱 목록에서 확인하세요

MCP를 쓰는 앱 모두 보기 →

JSON 설정은 아래 “개발자용”에 있어요

막혔나요? Execkit을 쓰는 사람에게 물어보세요💬 토론 →
개발자용: 터미널 명령과 JSON 설정

컴퓨터에 설치

Claude Code

명령을 확인하는 중 · 확인을 통과하면 복사 버튼이 나타나요

Claude Desktop (claude_desktop_config.json)

명령을 확인하는 중 · 확인을 통과하면 복사 버튼이 나타나요

Cursor (~/.cursor/mcp.json)

명령을 확인하는 중 · 확인을 통과하면 복사 버튼이 나타나요

VS Code (mcp.json)

명령을 확인하는 중 · 확인을 통과하면 복사 버튼이 나타나요

이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.

한눈에 보기

주간 다운로드i
33/주
라이선스i
Apache-2.0
연결 방식
내 컴퓨터에서 실행
최신 버전i
0.10.1
카테고리i
개발자 도구
레지스트리 공개i
2026년 9월 26일
코드 마지막 변경i
2026년 9월 27일
제작자
blinkingbit-oss
패키지
pypi: execkit-mcp
레지스트리 상태
활성

어떤 앱에서 쓸 수 있나요

이 서버의 연결 방식과 각 앱의 공식 문서를 바탕으로 했어요. 2026년 11월 10일 확인.

내 컴퓨터에서 실행하는 앱

ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast

모든 앱과 장단점 →

할 수 있는 일

내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.

기본 점검i

누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 13일 점검

  • ✓ 통과

    제작자와 저장소 일치

    레지스트리 이름이 GitHub 계정 jayashankarvr 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요

  • ✓ 통과

    계속 관리되고 있음

    코드 마지막 변경: 2개월 전

  • ✓ 통과

    라이선스 있음

    Apache-2.0 사용

  • – 해당 없음

    엔드포인트 응답

    내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요

  • – 해당 없음

    OAuth로 로그인

    내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요

  • … 아직 점검 안 함

    도구 설명에 숨겨진 지시 없음

    내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요

토론

질문하고, 팁을 나누고, 안 되는 점을 알려 주세요. "도움이 됨"이 많은 순서예요.

아직 글이 없어요. 처음으로 질문하거나 공유해 보세요.

이곳의 글은 사용자가 쓴 것으로, PopNx 팀의 글이 아니에요.

Google로 로그인하고 글쓰기

사용자 리뷰

아직 리뷰가 없어요

Google로 로그인하고 리뷰 쓰기

개발자 도구 카테고리의 다른 서버와 비교i

  • 이 카테고리의 다른 서버 5839개 중 91%보다 스타가 많아요
  • 이 카테고리의 다른 서버 5839개 중 42%보다 최근에 레지스트리에 공개됐어요
  • 기본 점검 결과가 이 카테고리의 다른 서버 5839개 중 100%와 같거나 더 좋아요

레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.

자주 묻는 질문

Execkit, 안전한가요?

해당하는 기본 점검 3개 중 3개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.

어떤 키나 코드가 필요한가요?

레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.

내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?

내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).

아직 관리되고 있나요?

GitHub 저장소는 마지막으로 2개월 전 변경됐고, 최신 버전(0.10.1)은 2개월 전 레지스트리에 올라왔어요.

어떤 앱에서 쓸 수 있나요?

Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Python (uv)도 있어야 해요.

대신 쓸 수 있는 건 뭐가 있나요?

같은 카테고리에는: REA, GitHub, Serena MCP: the IDE for your agent

같은 카테고리의 다른 것

같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.

카드 보는 법:↓ 주간 다운로드i★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i

REA

Reverse engineer anything from your terminal or agent with one CLI and MCP server.

제작자: morluto널리 사용됨↓ 38.9만/주★ 45.5만어제 업데이트

내 컴퓨터에서 실행

GitHub

Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.

제작자: github널리 사용됨★ 3.4만10일 전 업데이트

컴퓨터 또는 클라우드

Serena MCP: the IDE for your agent

A powerful toolkit for coding, providing semantic retrieval and editing capabilities.

제작자: oraios널리 사용됨↓ 3.5만/주★ 3.1만6개월 전 업데이트

내 컴퓨터에서 실행

제작자의 README

README 열기

제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.

execkit

Persistent, structured shell sessions for AI agents, on your laptop, your servers over SSH, and your Docker containers.

What you get that a built-in agent shell doesn't:

  • Persistent sessions on local, SSH and Docker. cd and env carry across calls, and every command returns a structured result: split stdout/stderr, exit code, duration, cwd.
  • Output that protects the agent's context. Secrets are redacted before the model sees them, and output budgets (tail, head, grep, a char cap) keep a noisy build from flooding the context window.
  • An audit trail, a live viewer, and undo. Every command can go to a JSONL audit log, you can watch sessions live in a terminal or browser (above), and remote sessions can checkpoint and restore the workspace files.

Install

Zero-install, with uv. Add this to your MCP client config:

{ "mcpServers": { "execkit": { "command": "uvx", "args": ["execkit-mcp"] } } }

Or install it and let execkit print the config for your client:

pip install execkit-mcp && execkit-mcp setup claude   # or: cursor | gemini | codex | vscode | windsurf

Then execkit-mcp doctor checks your setup. More options (prebuilt binary, cargo install, building from source) are in the Quickstart.

Status: early 0.x. The API may change between minor versions. Read Limitations before pointing it at anything important.

Where it fits

execkit complements your agent's built-in shell or sandbox; it does not replace it. Use it when the agent needs to work on a remote host or inside a container, when you want a record of what ran, or when you want to undo file changes on a remote workspace.

The agent is the adversary. The LLM driving execkit can be prompt-injected by anything it reads, so execkit contains its own caller: a command passes the policy fence *before* it runs, secrets are redacted *before* output returns, and a changed SSH host key fails loudly instead of reconnecting into a MITM.

flowchart LR

A([AI agent]) -->|command| F{policy fence} F -->|blocked| X([rejected, never runs]) F -->|allowed| T[transport: local / SSH / Docker] T --> O[raw output] O --> R[redact secrets, bound output] R --> E([structured ExecResult]) E -.-> A

Use it from an agent (MCP)

The agent gets session_create (local, ssh, or docker), session_exec, session_list and session_destroy, plus session_checkpoint / session_checkpoints / session_restore for remote undo.

State persists across calls, and every result is parsed, not scraped from a terminal:

// session_exec {"command": "cd /app && npm ci"}   -> { "exit_code": 0, "cwd": "/app" }

// session_exec {"command": "npm run build"} // cwd is still /app // -> { "stderr": "Error: Cannot find module 'webpack'", // "exit_code": 1, "duration_ms": 3420, "cwd": "/app", // "truncated": false, "timed_out": false }

Commands time out after 120 seconds by default (timeout_secs per call, up to 3600). On timeout execkit interrupts the command with Ctrl-C and returns timed_out: true with exit code 124. The session keeps its cwd and env.

See crates/execkit-mcp/README.md for the operator security settings (host-key verification, key dir, audit, session limits).

Watch what the agent does

Set EXECKIT_MCP_AUDIT_DIR and every session is recorded. execkit-mcp watch shows it live in the terminal, and execkit-mcp watch --serve --open opens the read-only browser viewer shown at the top.

Search a transcript with / and jump between errors.Rename, pin or keep a session, export it, or take a screenshot. Blocked commands show inline.

Use it as a library

[dependencies]

execkit = "0.9" # local + SSH + Docker

execkit = { version = "0.9", default-features = false } # local + Docker only (no SSH; no russh/tokio)

use std::time::Duration;

use execkit::{Policy, Session};

fn main() -> Result<(), execkit::Error> { let mut s = Session::local()? .with_policy(Policy { allow: vec![], deny: vec!["rm".into()] }) .with_timeout(Duration::from_secs(60));

let r = s.exec("echo hi; echo err 1>&2; cd /tmp")?; // r.stdout == "hi" r.stderr == "err" r.exit_code == 0 r.cwd == "/tmp" println!("{} (exit {})", r.stdout, r.exit_code);

let r = s.exec_with_timeout("sleep 30", None, Duration::from_secs(1))?; // r.timed_out == true r.exit_code == 124; the session is still usable Ok(()) }

Runnable examples: cargo run --example local, EXECKIT_SSH="user:password@host:22" cargo run --example ssh, and EXECKIT_DOCKER= cargo run --example docker.

Python

The same sessions from Python. pip install execkit (native bindings, no Rust toolchain needed):

from execkit import Session

with Session.local() as s: r = s.exec("echo hi; echo err >&2; cd /tmp") print(r.stdout, r.exit_code, r.cwd, r.stderr) # hi 0 /tmp err

See crates/execkit-py/README.md.

What's in the box

  • Persistent, stateful sessions over local PTY, SSH, or Docker. SSH accepts host aliases from your ~/.ssh/config.
  • Structured `ExecResult`: split stdout/stderr, exit code, duration, cwd, truncated, timed_out.
  • Base64 command framing. Comments, heredocs, !, trailing &, syntax errors and long commands do not hang the session.
  • Timeouts that keep the session. A timed-out command is interrupted and the session carries on.
  • Secret redaction of common token shapes (AWS, GitHub, GitLab, Slack, Stripe, Google, Anthropic, OpenAI, JWTs, PEM private keys), URL passwords, password=/token=-style pairs, and values the session assigned to secret-named variables. The echoed command is redacted too.
  • Output budgets: tail/head/head+tail by line, a grep filter with context, and a char cap. Per call or a session default; the result reports what was kept.
  • Undo for agent actions on remote sessions: snapshot the workspace and restore files if a command goes wrong (needs git on the remote and an explicit workspace; files only, not side effects).
  • Audit log and live viewer, plus live MCP notifications to the client.
  • Embeddable, never a service: cargo add, in *your* process; no daemon, no vendor.

Upgrading to 0.9

Breaking changes from 0.8. The details are in Upgrading to 0.9.

  • SSH host keys are pinned in ~/.execkit/known_hosts, not ~/.ssh/known_hosts. Old pins are not read. The first connection re-pins, or copy them over with mkdir -p ~/.execkit && chmod 700 ~/.execkit then grep -E '^[^ ]+ SHA256:' ~/.ssh/known_hosts >> ~/.execkit/known_hosts. Old pins were keyed by bare host whatever the port: rewrite a line for a non-22 port as [host]:port, or a later port-22 connection to that host fails as a key mismatch.
  • stdin is /dev/null for every command, and pagers are set to cat.
  • The target needs base64.
  • A timeout returns exit code 124 with timed_out: true and keeps the session, instead of an error that closed it. ExecResult has a new timed_out field.
  • Session ids look like a3f9-1_local instead of 1_local.
  • SshConfig has a new connect_timeout field (default 15 s). Use SshConfig::new.

Limitations

  • Not a sandbox. The command policy is advisory string matching. It is easy to bypass: deny: ["curl"] blocks curl but not env curl, sudo curl or sh -c curl. The real control is a least-privilege *environment*: run the agent and SSH user with minimal rights.
  • No interactive input. stdin is /dev/null, so prompts, REPLs and editors do not work. Use non-interactive flags (sudo -n, apt-get -y). Pagers default to cat, but running less or vim directly hangs until the timeout and closes the session. Shell history is off.
  • Timeouts interrupt, they do not kill everything. execkit sends Ctrl-C. A command that ignores Ctrl-C ends the session. For long jobs, run them in the background (nohup CMD > /tmp/job.log 2>&1 &) and poll the log.
  • The target needs a POSIX shell and `base64`. Local sessions use bash. Windows is not supported.
  • Synchronous core. Fine for typical agent use; not tuned for thousands of concurrent sessions.
  • SSH `AcceptAny` host-key mode exists for testing, behind an explicit insecure opt-in. Never use it in production.

Found something rough? Open an issue.

Contributing & security

  • Contributions: see CONTRIBUTING.md.
  • Found a vulnerability? Follow SECURITY.md. Please don't open a public issue for security reports.

License

Apache-2.0: embed it freely, including commercially. See LICENSE and NOTICE.