pythonanywhere/pythonanywhere-mcp-server

pythonanywhere/pythonanywhere-mcp-server

от pythonanywhere
MCP сервер связывает AI-агентов с вашим PythonAnywhere: управляйте файлами, перезагружайте веб-приложения и настраивайте задачи по расписанию. Полезен разработчикам для автоматизации хостинга. Подключается через API токен.

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: Reload only (at the moment).
  • 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.)
Инструменты были проиндексированы:
create_scheduled_task

Создаёт новую запланированную задачу. Аргументы: params (dict): Словарь с обязательными спецификациями запланированной задачи. Должен включать: - command (str): Команда для запуска. - enabled (bool): Включена ли задача. - interval (str): 'daily' или 'hourly'. - hour (int, необязательный): Час (24-часовой формат, для ежедневных задач). - minute (int): Минута. Возвращает: dict: Словарь с параметрами созданной задачи.

Параметры
  • paramsobjectобязательный
create_webapp

Создаёт новое веб-приложение на базе uWSGI для указанного домена. Создаёт новое веб-приложение на PythonAnywhere с заданной конфигурацией. Приложение будет создано с указанной версией Python, виртуальным окружением и путём к проекту. Если веб-приложение для этого домена уже существует, операция завершится ошибкой, если параметр nuke не равен True. Файл конфигурации WSGI находится в /var/www. Имя файла имеет формат: domain.replace('.', '_') + '_wsgi.py'. Он будет автоматически создан как побочный эффект выполнения этого инструмента. Примечание: Виртуальные окружения следует настраивать в конфигурации веб-приложения PythonAnywhere, а не в самом WSGI-файле. Аргументы: domain (str): Имя домена для нового веб-приложения (например, 'alice.pythonanywhere.com'). python_version (str): Версия Python (например, '3.11', '3.10', '3.9'). virtualenv_path (str | None): Путь к виртуальному окружению. (или None, если виртуальное окружение не нужно — при использовании одной из предустановленных версий Python с включёнными батарейками) project_path (str): Путь к каталогу проекта, содержащему код веб-приложения. Возвращает: str: Сообщение о статусе, указывающее результат создания. Вызывает: RuntimeError: Если не удаётся аутентифицироваться, веб-приложение уже существует (и nuke=False), или возникают другие ошибки API. Если получена ошибка 403, это может означать, что на этом домене уже запущен сайт не на uWSGI. Инструмент list_websites можно использовать для проверки.

Параметры
  • domainstringобязательный
  • project_pathstringобязательный
  • python_versionstringобязательный
  • virtualenv_pathstringобязательный
create_website

Создаёт новый сайт с указанным доменным именем и командой. Эта функция в основном используется для создания нового сайта на базе ASGI на PythonAnywhere, но её можно применять и для любого сайта, который общается через Unix-сокет. Переданная команда должна использовать переменную окружения DOMAIN_SOCKET, чтобы привязаться к сокету. Аргументы: domain_name (str): Доменное имя для нового сайта (например, yourusername.pythonanywhere.com или www.mydomain.com). command (str): Команда для запуска нового сайта. Примеры: - Для FastAPI (ASGI): /usr/local/bin/uvicorn myapp:app --app-dir '/home/yourusername/fastapi/' --uds ${DOMAIN_SOCKET} - Для асинхронного Django: /home/yourusername/.virtualenvs/my_venv/bin/uvicorn asyncdjango.asgi:application --app-dir /home/yourusername/asyncdjango --uds ${DOMAIN_SOCKET} - Для сайтов не на ASGI (например, Streamlit): /home/yourusername/.virtualenvs/my_venv/bin/streamlit run /home/yourusername/my_streamlit/streamlit_app.py --server.address "unix://${DOMAIN_SOCKET}" --server.enableCORS false --server.enableXsrfProtection false --server.enableWebsocketCompression false Возвращает: dict: Словарь с информацией о созданном сайте.

Параметры
  • commandstringобязательный
  • domain_namestringобязательный
delete_path

Окончательно удаляет файл или каталог (рекурсивно, если это каталог). Аргументы: path (str): Абсолютный путь к файлу или каталогу для удаления. Возвращает: str: Сообщение о статусе, указывающее результат удаления.

Параметры
  • pathstringобязательный
delete_scheduled_task

Удаляет запланированную задачу по её ID. Args: task_id (int): ID запланированной задачи для удаления. Returns: bool: True, если удаление прошло успешно.

Параметры
  • task_idintegerобязательный
delete_webapp

Удаляет веб-приложение на базе uWSGI для указанного домена. Это действие навсегда удаляет конфигурацию веб-приложения с PythonAnywhere. Фактические файлы в вашей файловой системе не удаляются — удаляется только конфигурация веб-приложения, которая их обслуживает. Это действие нельзя отменить. Аргументы: domain (str): Имя домена удаляемого веб-приложения (например, 'alice.pythonanywhere.com'). Возвращает: str: Сообщение о статусе результата удаления. Вызывает исключение: RuntimeError: Если не удаётся пройти аутентификацию, веб-приложение не существует или возникают другие ошибки API.

Параметры
  • domainstringобязательный
delete_website

Удаляет веб-сайт с указанным доменным именем. Аргументы: domain_name (str): Доменное имя удаляемого веб-сайта. Возвращает: dict: Пустой словарь при успешном выполнении.

Параметры
  • domain_namestringобязательный
get_scheduled_task

Получает спецификации запланированной задачи по её идентификатору. Аргументы: task_id (int): Идентификатор запланированной задачи. Возвращает: dict: Словарь со спецификациями задачи.

Параметры
  • task_idintegerобязательный
get_webapp_info

Получает подробную информацию о конкретном веб-приложении на базе uWSGI. Извлекает полную информацию о конфигурации и состоянии указанного веб-приложения, включая пути, версию Python, статус включения и другие детали конфигурации. Args: domain (str): Доменное имя веб-приложения, для которого нужно получить информацию (например, 'alice.pythonanywhere.com'). Returns: dict: Словарь, содержащий подробную информацию о веб-приложении, включая: - "id": int, # Уникальный идентификатор сайта или сессии пользователя - "user": str, # Имя пользователя, связанное с развёртыванием - "domain_name": str, # Доменное имя развёрнутого сайта - "python_version": str, # Используемая версия Python, например "3.10" - "source_directory": str, # Абсолютный путь к директории с исходным кодом сайта - "working_directory": str, # Абсолютный путь к рабочей директории - "virtualenv_path": str, # Путь к виртуальному окружению Python (может быть пустым) - "expiry": str, # Дата истечения в формате ISO, например "2025-10-16" - "force_https": bool, # Принудительное использование HTTPS - "password_protection_enabled": bool, # Включена ли защита паролем - "password_protection_username": str, # Имя пользователя для доступа по паролю - "password_protection_password": str # Пароль для доступа по паролю Raises: RuntimeError: Если аутентификация не удалась, веб-приложение не существует или произошли другие ошибки API.

Параметры
  • domainstringобязательный
list_scheduled_tasks

Перечисляет все запланированные задачи для текущего пользователя. Пустой список означает, что запланированных задач нет. Возвращает: list[dict]: Список словарей, каждый из которых представляет запланированную задачу.

Параметры

Без параметров.

list_webapps

Перечисляет все веб-приложения на базе uWSGI для текущего пользователя. Получает информацию обо всех веб-приложениях, настроенных в учётной записи PythonAnywhere. Возвращаемый список содержит словари с подробной информацией о каждом веб-приложении, включая домен, версию Python, пути и статус. В PythonAnywhere также могут быть веб-сайты, не на базе uWSGI (обычно на базе ASGI), которые не входят в этот список. Для них используйте инструмент list_websites. Возвращает: list: Список словарей, содержащих информацию о веб-приложении. Пустой список означает, что не развёрнуто ни одного веб-приложения на WSGI. Это по-прежнему может означать, что существуют приложения не на WSGI, которые можно перечислить с помощью инструмента list_websites. Смотрите также: get_webapp_info: Получает подробную информацию о конкретном веб-приложении. Вызывает: RuntimeError: В случае сбоя аутентификации или других ошибок API.

Параметры

Без параметров.

list_websites

Возвращает словари информации для каждого ASGI-сайта, настроенного для текущего пользователя. Пустой список означает, что сайты не развёрнуты. Он не включает веб-приложения на базе WSGI; их можно получить только с помощью инструмента list_webapps. Возвращает: List[dict[str, Any]]: список словарей с информацией о сайтах. Пустой список, если для пользователя не настроено ни одного сайта, но при этом могут быть настроены веб-приложения на базе WSGI; их можно получить с помощью инструмента list_webapps.

Параметры

Без параметров.

patch_webapp

Обновляет настройки конфигурации для веб-приложения на основе uWSGI. Это позволяет изменять различные настройки веб-приложения, такие как версия Python, путь к виртуальному окружению, исходный каталог и другие параметры конфигурации. Будут обновлены только те поля, которые указаны в словаре data. Чтобы изменения вступили в силу, необходимо перезагрузить веб-приложение. Если указать недопустимую версию Python, вы получите ошибку 400 с сообщением о том, что выбранная версия не является допустимым вариантом. При получении такой ошибки необходимо выбрать другую версию Python. Аргументы: domain (str): Имя домена веб-приложения, которое нужно обновить (например, 'alice.pythonanywhere.com'). data (dict): Словарь, содержащий обновления конфигурации. Поддерживаемые ключи: - 'python_version': версия Python (например, '3.11') - 'virtualenv_path': путь к виртуальному окружению - 'source_directory': путь к каталогу с исходным кодом - 'working_directory': рабочая директория веб-приложения - 'force_https': принудительно использовать HTTPS при доступе к веб-приложению - 'password_protection_enabled': включить базовую HTTP-защиту паролем для веб-приложения (настраивается через PythonAnywhere, а не в коде приложения) - 'password_protection_username': имя пользователя для HTTP-защиты паролем - 'password_protection_password': пароль для HTTP-защиты паролем Возвращает: dict: Информация об обновленной конфигурации веб-приложения. Пример: { "id": 2097234, "user": username, "domain_name": domain, "python_version": "3.10", "source_directory": f"/home/{username}/mysite", "working_directory": f"/home/{username}/", "virtualenv_path": "", "expiry": "2025-10-16", "force_https": False, "password_protection_enabled": False, "password_protection_username": "foo", …

Параметры
  • dataobjectобязательный
  • domainstringобязательный
read_file_or_directory

Возвращает содержимое файла или список содержимого каталога. Если указанный путь ведёт к файлу, возвращает его содержимое в виде строки. Если путь ведёт к каталогу, возвращает JSON-строку со списком его содержимого (рекурсивно, до 1000 записей). Аргументы: path (str): Абсолютный путь к файлу или каталогу. Возвращает: str: Содержимое файла или JSON-список каталога.

Параметры
  • pathstringобязательный
reload_webapp

Перезагружает веб-приложение на базе uWSGI для указанного домена. Этот инструмент перезагружает веб-приложения на базе uWSGI на PythonAnywhere. Для веб-приложений на базе ASGI используйте инструмент reload_website вместо этого. Любые изменения кода требуют перезагрузки, чтобы вступить в силу. Аргументы: domain (str): Доменное имя веб-приложения для перезагрузки (например, 'alice.pythonanywhere.com'). Возвращает: str: Сообщение о статусе с результатом перезагрузки.

Параметры
  • domainstringобязательный
reload_website

Перезагружает ASGI-сайт для указанного домена. Это для ASGI-приложений на PythonAnywhere. Для uWSGI-приложений используйте инструмент reload_webapp. Любые изменения в коде требуют перезагрузки, чтобы вступить в силу. Аргументы: domain (str): доменное имя сайта, который нужно перезагрузить (например, 'alice.pythonanywhere.com'). Возвращает: str: сообщение о статусе результата перезагрузки.

Параметры
  • domainstringобязательный
tree

Возвращает список абсолютных путей, содержащихся в указанной директории. Аргументы: path (str): Абсолютный путь к директории. Путь к домашней директории: /home/<username>/, где <username> - ваше имя пользователя. Возвращает: List[str]: Список абсолютных путей, содержащихся в директории.

Параметры
  • pathstringобязательный
update_scheduled_task

Обновляет существующую запланированную задачу. Аргументы: task_id (int): Идентификатор запланированной задачи для обновления. params (dict): Словарь характеристик для обновления. Должен содержать хотя бы одно из: - command, enabled, interval, hour, minute. Возвращает: dict: Словарь с обновлёнными характеристиками задачи.

Параметры
  • paramsobjectобязательный
  • task_idintegerобязательный
upload_directory

Загружает локальную директорию на PythonAnywhere, сохраняя структуру директорий. Рекурсивно обходит локальную директорию и загружает каждый файл. Пустые директории сохраняются. Аргументы: local_dir_path (str): Абсолютный путь к локальной директории для загрузки. remote_dir_path (str): Абсолютный путь на PythonAnywhere, куда будет загружена директория. Возвращает: str: Сообщение о статусе, указывающее результат загрузки.

Параметры
  • local_dir_pathstringобязательный
  • remote_dir_pathstringобязательный
upload_text_file

Создаёт или заменяет файл с заданным содержимым (в кодировке UTF-8). Аргументы: dest_path (str): Абсолютный путь, по которому будет создан или заменён файл. content (str): Текстовое содержимое для записи в файл. Возвращает: str: Сообщение о статусе, указывающее результат загрузки.

Параметры
  • contentstringобязательный
  • dest_pathstringобязательный

Похожие MCP-сервера

Xuanwo/mcp-server-opendal

Xuanwo/mcp-server-opendal

MCP-сервер для доступа к облачным хранилищам через Apache OpenDAL. Позволяет AI-агентам читать файлы и просматривать каталоги в S3, Azure Blob, GCS и других сервисах. Настраивается через переменные...

Python35
hmk/box-mcp-server

hmk/box-mcp-server

MCP-сервер для поиска и чтения файлов в облачном хранилище Box. Поддерживает форматы PDF и Word, авторизуется через JWT или Developer Token. Помогает разработчикам подключать Box к AI-агентам.

JavaScript11
colapsis/transfa

colapsis/transfa

Transfa — это утилита и MCP-сервер для быстрого обмена файлами из терминала или через AI-агентов. Без регистрации загружайте файлы до 100 ГБ, получайте ссылку, защищайте паролем или устанавливайте ...

JavaScript19
SagaPeak/artifacta-mcp

SagaPeak/artifacta-mcp

MCP сервер для Artifacta — хранилища артефактов для AI-агентов. Сохраняет файлы, отчеты и датасеты с метаданными сессии, передает между сессиями и делится по ссылкам с истечением. Дедупликация по х...

TypeScript1
erikhoward/adls-mcp-server

erikhoward/adls-mcp-server

MCP-сервер для Azure Data Lake Storage Gen2. Предоставляет инструменты для файловых операций: загрузка, скачивание, управление метаданными и контейнерами. Полезен для интеграции ADLS2 с MCP-клиента...

Python6
motherduckdb/mcp-server-motherduck

motherduckdb/mcp-server-motherduck

MCP сервер для SQL аналитики, соединяющий AI-помощников с DuckDB. Работает с локальными файлами, S3 и MotherDuck. Выполняйте запросы, исследуйте схемы, переключайте соединения. Полезен разработчикам и аналитикам.

Python520
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин