Skip to main content

PythonAnywhere Model Context Protocol Server

Project description

PythonAnywhere Model Context Protocol Server

A Model Context Protocol (MCP) server acts as a bridge between AI-powered tools and your PythonAnywhere account, enabling secure, programmatic management of files, websites, webapps, and scheduled tasks. By exposing a standardized interface, it allows language models and automation clients to perform operations—such as editing files, deploying web apps, or scheduling jobs -- on your behalf, all while maintaining fine-grained control and auditability.

Features

  • File management: Read, upload, delete files and list directory trees. (also enables debugging with direct access to log files, which are just files on PythonAnywhere)
  • ASGI Web app management: Create, delete, reload, and list. (as described in the PythonAnywhere ASGI documentation)
  • WSGI Web app management: Create, delete, reload, patch, list, and get info.
  • Scheduled task management: List, create, update, and delete. (Note that this enables LLMs to execute arbitrary commands if a task is scheduled too soon after creation and deleted after execution. For that we would suggest running it with mcp-server-time as models easily get confused about time.)

Installation

The MCP protocol is well-defined and supported by various clients, but installation is different depending on the client you are using. We will cover cases that we tried and tested.

In all cases, you need to have uv installed and available in your PATH.

Have your PythonAnywhere API token and username ready. You can find (or generate) your API token in the API section of your PythonAnywhere account.

If your account is on eu.pythonanywhere.com, you also need to set PYTHONANYWHERE_SITE to eu.pythonanywhere.com (it defaults to www.pythonanywhere.com).

MCP Bundle - works with Claude Desktop

Probably the most straightforward way to install the MCP server is to use the MCP Bundle for Claude Desktop.

  1. Open Claude Desktop.
  2. Download the latest .mcpb file.
  3. Double-click on the downloaded .dxt file or drag the file into the window.
  4. Configure your PythonAnywhere API token and username.
  5. Restart Claude Desktop.

Claude Code

Run:

claude mcp add pythonanywhere-mcp-server \
-e API_TOKEN=yourpythonanywhereapitoken \
-e PYTHONANYWHERE_USERNAME=yourpythonanywhereusername \
-- uvx pythonanywhere-mcp-server

GitHub Copilot in PyCharm:

Add it to your mcp.json.

{
  "servers": {
    "pythonanywhere-mcp-server": {
      "type": "stdio",
      "command": "uvx",
      "args": ["pythonanywhere-mcp-server"],
      "env": {
        "API_TOKEN": "yourpythonanywhereapitoken",
        "PYTHONANYWHERE_USERNAME": "yourpythonanywhereusername"
      }
    }
  }
}

Claude Desktop (manual setup) and Cursor:

Add it to claude_desktop_config.json (for Claude Desktop) or (mcp.json for Cursor).

{
  "mcpServers": {
    "pythonanywhere-mcp-server": {
      "type": "stdio",
      "command": "uvx",
      "args": ["pythonanywhere-mcp-server"],
      "env": {
        "API_TOKEN": "yourpythonanywhereapitoken",
        "PYTHONANYWHERE_USERNAME": "yourpythonanywhereusername"
      }
    }
  }
}

Caveats

Direct integration of an LLM with your PythonAnywhere account offers significant capabilities, but also introduces risks. We strongly advise maintaining human oversight, especially for sensitive actions such as modifying or deleting files.

If you are running multiple MCP servers simultaneously, be cautious -- particularly if any server can access external resources you do not control, such as GitHub issues. These can become attack vectors. For more details, see this story.

Implementation

The server uses the python mcp sdk in connection with the pythonanywhere-core package (docs), which wraps a subset of the PythonAnywhere API and may be expanded in the future as needed.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pythonanywhere_mcp_server-0.0.11.tar.gz (14.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pythonanywhere_mcp_server-0.0.11-py3-none-any.whl (12.6 kB view details)

Uploaded Python 3

File details

Details for the file pythonanywhere_mcp_server-0.0.11.tar.gz.

File metadata

File hashes

Hashes for pythonanywhere_mcp_server-0.0.11.tar.gz
Algorithm Hash digest
SHA256 1557367f93b14b3fa085c8ad6a96b920d7f14949d8b26cfd347d5c3842805707
MD5 a3b273336a41a319240ca66691b71cc2
BLAKE2b-256 60d84a4d44da44c116f3b4cc3392936bb08fd1452215c02694e9e18c98e9457b

See more details on using hashes here.

File details

Details for the file pythonanywhere_mcp_server-0.0.11-py3-none-any.whl.

File metadata

File hashes

Hashes for pythonanywhere_mcp_server-0.0.11-py3-none-any.whl
Algorithm Hash digest
SHA256 6a0371938a55351e0256d1af3004bd921b21d5a752de14434fb662b7051c4516
MD5 8697cc5058e8f012cf5ba3497e2ee9d0
BLAKE2b-256 47444f69be60ddf38279a4674337afc690c2655b81925da597365c06c62217b4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page