Model Context Protocol server to run Python code in a sandbox. The code is executed using Pyodide in Deno and is therefore isolated from the rest of the operating system. See https://ai.pydantic.dev/mcp/run-python/ for complete documentation. The server can be run with deno installed using: deno run \ -N -R=node_modules -W=node_modules --node-modules-dir=auto \ jsr:@pydantic/mcp-run-python [stdio|sse|warmup] where: -N -R=node_modules -W=node_modules (alias of --allow-net --allow-read=node_modules --allow-write=node_modules) allows network access and read+write access to ./node_modules. These are required so pyodide can download and cache the Python standard library and packages --node-modules-dir=auto tells deno to use a local node_modules directory stdio runs the server with the Stdio MCP transport — suitable for running the process as a subprocess locally sse runs the server with the SSE MCP transport — running the server as an HTTP server to connect locally or remotely warmup will run a minimal Python script to download and cache the Python standard library. This is also useful to check the server is running correctly. Here's an example of using @pydantic/mcp-run-python with PydanticAI: from pydantic_ai import Agent from pydantic_ai.mcp import MCPServerStdio import logfire logfire.configure() logfire.instrument_mcp() logfire.instrument_pydantic_ai() server = MCPServerStdio('deno', args=[ 'run', '-N', '-R=node_modules', '-W=node_modules', '--node-modules-dir=auto', 'jsr:@pydantic/mcp-run-python', 'stdio', ]) agent = Agent('claude-3-5-haiku-latest', mcp_servers=[server]) async def main(): async with agent.run_mcp_servers(): result = await agent.run('How many days between 2000-01-01 and 2025-03-18?') print(result.output) #> There are 9,208 days between January 1, 2000, and March 18, 2025.w if __name__ == '__main__': import asyncio asyncio.run(main())
First seen: 2025-04-17 15:12
Last seen: 2025-04-18 13:17