MCP Run Python
Source: simonwillison.net/2025/Apr/18/mcp-run-python/ Type: article (linkblog) By: simon-willison Valid as of: 2026-04-23 (재확인 — 원문 변경 없음, og:updated_time 2025-04-18 유지)
핵심 Takeaway
- pydantic-ai의
mcp-run-python은 Deno + Pyodide(WebAssembly)로 LLM 생성 Python 코드를 격리 실행하는 MCP 서버 (출처: 본문 §1) - WASM 샌드박스 패턴 — Deno 프로세스 안에 Pyodide를 올려 신뢰할 수 없는 코드 실행을 격리, harness-engineering Verification 레이어의 구체 구현
uv run --with+ Deno의 온디맨드 의존성 로딩을 조합하면 복잡한 에이전틱 파이프라인을 제로 설치 원라이너로 시연 가능- MCP
run_python_code도구 호출 흐름이ToolCallPart객체로 투명하게 기록 — 하네스 관찰성의 실제 사례 - 로컬 LLM(Mistral Small 3.1 via Ollama)도 동일 MCP 서버 사용 가능 — 단, “Use your python tool” 명시 프롬프팅 필요
상세 요약
Pydantic AI mcp-run-python
pydantic-ai가 공개한 MCP 서버. LLM이 생성한 Python 코드를 Deno 프로세스 내 Pyodide(WASM) 위에서 실행해 호스트 시스템을 보호한다. Simon Willison이 2년 전 직접 탐구했던 deno/pyodide-sandbox 패턴을 Pydantic AI가 프로덕션 수준 MCP 서버로 구현한 것이다.
제로 설치 원라이너 데모
ANTHROPIC_API_KEY="sk-ant-..." \
uv run --with pydantic-ai python -c '...'uv run --with로 Python 의존성을, Deno의 JSR 온디맨드 로딩으로 jsr:@pydantic/mcp-run-python을 설치 없이 구동한다. 결과: Claude 3.5 Haiku가 날짜 계산 코드를 MCP 서버에서 실행해 정답 반환.
MCP 도구 호출 투명성
LLM의 도구 호출이 ToolCallPart 객체로 노출된다:
ToolCallPart(
tool_name='run_python_code',
args={'python_code': '...'},
tool_call_id='toulu_...',
)하네스 관찰성 — 에이전트가 무슨 코드를 실행했는지 로그로 추적 가능.
로컬 모델 호환성
Mistral Small 3.1 (15GB, Ollama) + OpenAI-compatible API provider 조합으로도 동일 MCP 서버 동작 확인. 단, 자동으로 Python 도구를 선택하지 않아 “Use your python tool” 프롬프트 명시 필요.
연결되는 위키 페이지
- pydantic-ai — 이 소스의 주체; mcp-run-python 구현체
- simon-willison — 저자; 2025-04-18 linkblog 포스트
- harness-engineering — WASM 샌드박스가 Verification & Guardrails 레이어의 구체 구현