The mcp-pyodide server enables Large Language Models (LLMs) to execute Python code and interact with mounted directories via the Model Context Protocol (MCP).
Capabilities include:
Execute Python scripts with output capture and automatic saving of generated images
Dynamically install Python packages using Pyodide
Manage and inspect mounted directories and their contents
Read image files from mounted directories
Operate using either stdio or Server-Sent Events (SSE) transport
Available as both a command-line tool and TypeScript library
Used as the web framework for SSE (Server-Sent Events) support, providing endpoints for SSE connection and message handling
The server runs on Node.js, requiring version 18 or higher for development
Used for package management and running scripts for the MCP server
Enables Large Language Models (LLMs) to execute Python code through Pyodide, a Python runtime environment that runs in JavaScript
The MCP server implementation is robustly written in TypeScript

mcp-pyodide
A Pyodide server implementation for the Model Context Protocol (MCP). This server enables Large Language Models (LLMs) to execute Python code through the MCP interface.
Features
Python code execution capability for LLMs using Pyodide
MCP compliant server implementation
Support for both stdio and SSE transport modes
Robust implementation written in TypeScript
Available as a command-line tool
Installation
Usage
As a Server
As a Command-line Tool
Start in stdio mode (default):
Start in SSE mode:
SSE Mode
When running in SSE mode, the server provides the following endpoints:
SSE Connection:
http://localhost:3020/sseMessage Handler:
http://localhost:3020/messages
Example client connection:
Project Structure
Dependencies
@modelcontextprotocol/sdk: MCP SDK (^1.4.0)pyodide: Python runtime environment (^0.27.1)arktype: Type validation library (^2.0.1)express: Web framework for SSE supportcors: CORS middleware for SSE support
Development
Requirements
Node.js 18 or higher
npm 9 or higher
Setup
Scripts
npm run build: Compile TypeScript and set execution permissionsnpm start: Run server in stdio modenpm run start:sse: Run server in SSE mode
Environment Variables
PYODIDE_CACHE_DIR: Directory for Pyodide cache (default: "./cache")PYODIDE_DATA_DIR: Directory for mounted data (default: "./data")PORT: Port for SSE server (default: 3020)
License
MIT
Contributing
Fork the repository
Create a feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -am 'Add some amazing feature')Push to the branch (
git push origin feature/amazing-feature)Create a Pull Request
Important Notes
This project is under development, and the API may change
Thoroughly test before using in production
Exercise caution when executing untrusted code for security reasons
When using SSE mode, ensure proper CORS configuration if needed
Support
Please use the Issue tracker for problems and questions.