pyodide integration.com
pyodide integration.com logo

Pyodide Integration

Integrates Pyodide to enable Python execution in JavaScript environments.

Created byApr 23, 2025

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/sse`
  • Message 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 support
  • `cors`: 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 permissions
  • `npm start`: Run server in stdio mode
  • `npm 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

  1. Fork the repository
  1. Create a feature branch (`git checkout -b feature/amazing-feature`)
  1. Commit your changes (`git commit -am 'Add some amazing feature'`)
  1. Push to the branch (`git push origin feature/amazing-feature`)
  1. 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.