puter
puter: файловая система, хостинг сайтов и воркеры облачной платформы Puter из чата
Что умеет
- Читать и записывать файлы, создавать и удалять папки
- Публиковать и обновлять сайты через хостинг
- Создавать, запускать и удалять воркеры
- Создавать и управлять приложениями Puter
- Получать данные аутентифицированного пользователя
Какие данные видит
Ассистент работает с файлами, хостингом и воркерами в аккаунте Puter пользователя, под чьим логином подключён сервер.
Нужен ли аккаунт
Не нужен: сервер работает без входа
MCP-сервер даёт ассистенту доступ к облачной платформе Puter: работать с файлами, публиковать сайты и запускать воркеры. Подключается к Claude, ChatGPT и Cursor без ключей — авторизация происходит через сам Puter.
Как подключить
Как подключить puter к Claude
Адрес сервера, который нужно вставить в настройках Claude:
https://puter--puter.run.tools
- Откройте Claude (сайт claude.ai или приложение для компьютера).
- Перейдите в Настройки → Коннекторы (в английском интерфейсе: Settings → Connectors).
- Нажмите Добавить пользовательский коннектор (Add custom connector).
- Вставьте адрес сервера, скопированный ниже, в поле URL удалённого MCP-сервера и нажмите Добавить.
- В чате нажмите + → Коннекторы и включите новый коннектор.
Пользовательские коннекторы доступны на тарифах Free, Pro, Max, Team и Enterprise. На Free можно добавить только один. В Team и Enterprise коннектор сначала добавляет владелец организации в Настройки организации → Коннекторы.
Авторизация
После нажатия Добавить откроется окно входа в сервис. Войдите под своим аккаунтом и подтвердите доступ. Пароль Claude не видит.
Как подключить puter к ChatGPT
Адрес сервера, который нужно вставить в настройках ChatGPT:
https://puter--puter.run.tools
- Откройте ChatGPT в браузере (chatgpt.com). Нужен тариф Plus, Pro, Business, Enterprise или Edu.
- Один раз включите режим разработчика: Настройки → Приложения → Дополнительные настройки → Режим разработчика (Settings → Apps → Advanced settings → Developer mode).
- Откройте Настройки → Коннекторы и нажмите Создать (Create).
- Заполните форму: Название (любое), Описание (одна фраза, что делает сервис), URL MCP-сервера (скопируйте ниже).
- В поле Аутентификация выберите OAuth, если сервис требует вход, иначе Нет. Нажмите Создать.
- В новом чате откройте + → Приложения/Коннекторы и включите коннектор.
Название раздела у OpenAI менялось (Connectors → Apps/Plugins). Если пункт называется иначе, ищите «режим разработчика» в настройках. В рабочих пространствах Business/Enterprise администратор должен разрешить пользовательские коннекторы.
Авторизация
При первом использовании ChatGPT откроет окно входа в сервис. Войдите и подтвердите доступ.
Как подключить puter к Cursor
Адрес сервера, который нужно вставить в настройках Cursor:
https://puter--puter.run.tools
Быстрый способ: нажмите кнопку Открыть в Cursor ниже, Cursor сам предложит добавить сервер.
Вручную:
- В Cursor откройте Settings → Cursor Settings → MCP и нажмите Add new global MCP server.
- Вставьте JSON, скопированный ниже, в открывшийся файл
~/.cursor/mcp.json(для одного проекта:.cursor/mcp.jsonв корне проекта). - Сохраните файл. Сервер появится в списке MCP; при необходимости пройдите авторизацию по кнопке рядом с ним.
Авторизация
Если сервис требует вход, рядом с сервером в списке MCP появится кнопка авторизации.
Список инструментов сервера (25)
Технические названия из tools/list. Нужны только разработчикам.
| whoami | Get the authenticated Puter user's account info — including username, uuid, and the home_directory (/<username>) that ALL filesystem paths must live under. Call this first to learn your username so you can build valid absolute paths (e.g. "/<username>/portfolio/index.html") instead of invalid bare root paths. Equivalent to PuterJS puter.auth.getUser(). |
| fs_read_file | Read the contents of a file in Puter. Returns UTF-8 text by default; pass encoding="base64" for binary files. Supports optional byte offset/length. Equivalent to PuterJS puter.fs.read(path). |
| fs_stat | Get metadata (name, size, type, timestamps, uid) for a file or directory in Puter. Equivalent to PuterJS puter.fs.stat(path). |
| fs_write_file | Write (create or overwrite) a file in Puter. Provide content as UTF-8 text, or set encoding="base64" to write binary data. Equivalent to PuterJS puter.fs.write(path, data). |
| fs_mkdir | Create a directory in Puter (optionally creating missing parents). Equivalent to PuterJS puter.fs.mkdir(path). |
| fs_delete | Delete a file or directory in Puter. Directories are removed recursively by default. Equivalent to PuterJS puter.fs.delete(path). |
| fs_readdir | List the entries (files and subdirectories) of a directory in Puter. Equivalent to PuterJS puter.fs.readdir(path). |
| hosting_list | List all websites (hosting subdomains) the authenticated Puter user has published. Each entry includes the subdomain (served at https://<subdomain>.puter.site) and the Puter directory it is hosted from. Use this to discover existing sites before creating or updating one. Equivalent to PuterJS puter.hosting.list(). |
| hosting_get | Get a single published website (hosting subdomain) by its subdomain label, including the Puter directory it serves from. The live site is reachable at https://<subdomain>.puter.site. Equivalent to PuterJS puter.hosting.get(subdomain). |
| hosting_create | Publish a new static website by creating a hosting subdomain. The site goes live at https://<subdomain>.puter.site. Point it at a Puter directory (root_dir) to serve that directory's files (e.g. an index.html) as a website; omit root_dir to reserve the subdomain and attach a directory later with hosting_update. Typical flow: fs_mkdir a directory, fs_write_file your index.html into it, then hosting_create with that root_dir. Equivalent to PuterJS puter.hosting.create(subdomain, root_dir). |
| hosting_update | Re-point an existing website (hosting subdomain) at a different Puter directory, changing which files https://<subdomain>.puter.site serves. Use this to attach content to a bare subdomain or to swap the served directory. Equivalent to PuterJS puter.hosting.update(subdomain, root_dir). |
| hosting_delete | Unpublish a website by deleting its hosting subdomain. This takes https://<subdomain>.puter.site offline but does NOT delete the underlying Puter directory or its files. Equivalent to PuterJS puter.hosting.delete(subdomain). |
| workers_create | Deploy a serverless Puter Worker from a JavaScript file in the Puter filesystem and return its public URL. The worker file MUST define handlers on the global `router` object (router.get/router.post/router.put/router.delete) and may use the global puter.js SDK (`puter`) for storage, KV, AI, and more — authenticated as you, the deployer. Puter Workers are designed to be used WITH puter.js and Puter authentication, so BEFORE writing worker code load the router guide and examples via puter_docs_get with path "Workers/router". Typical flow: fs_write_file the worker code to a path (e.g. "~/workers/api.js"), then workers_create with that file_path. TO UPDATE a deployed worker, simply write the new code to the SAME file with fs_write_file — there is no separate update call; the worker serves the current contents of its associated file (propagation takes ~5-30s). Requires a Puter account with a verified email. Equivalent to PuterJS puter.workers.create(worker_name, file_path). |
| workers_list | List all serverless Workers deployed by the authenticated Puter user, including each worker's name, public URL, and the source file it is deployed from (write to that file to update the worker). Equivalent to PuterJS puter.workers.list(). |
| workers_get | Get a single deployed Worker by name, including its public URL and the source file path it serves (write new code to that file with fs_write_file to update it). Equivalent to PuterJS puter.workers.get(worker_name). |
| workers_exec | Call a deployed Puter Worker over HTTP as the authenticated user, automatically attaching the Puter auth header so the worker can act on the caller's resources via `user.puter`. Use this to invoke or test a worker endpoint. Equivalent to PuterJS puter.workers.exec(url, options). |
| workers_delete | Delete (undeploy) a Puter Worker by name, stopping its execution and releasing its URL. Does NOT delete the worker's source file in the filesystem. Equivalent to PuterJS puter.workers.delete(worker_name). |
| apps_list | List the Puter apps the authenticated user owns / can edit. Each entry includes the app name, title, uid, index_url (the URL the app loads), icon, filetype associations, and aggregate usage stats (open_count, user_count). Use this to discover existing apps before creating or updating one. Equivalent to PuterJS puter.apps.list(). |
| apps_get | Get a single Puter app the user owns / can edit, by its app name, including its title, uid, index_url, icon, and usage stats. Pass stats_period for detailed open/user counts over a specific window. Equivalent to PuterJS puter.apps.get(name). |
| apps_create | Register a new Puter app so it appears in the user's app list and can be launched in Puter. You MUST provide a unique name and an index_url (the URL Puter loads when the app runs). The index_url is typically a static site you published with hosting_create (https://<subdomain>.puter.site) or a serverless worker URL, but can be any allowed https URL. Typical flow: fs_write_file the app files -> hosting_create to publish them -> apps_create with index_url set to the resulting URL. Equivalent to PuterJS puter.apps.create(spec). |
| apps_update | Update an existing Puter app, found by its current name. Only the fields you pass are changed; omitted fields keep their current values. Pass new_name to rename the app. Equivalent to PuterJS puter.apps.update(name, spec). |
| apps_delete | Delete a Puter app by name, removing it from the user's app list. This unregisters the app but does NOT delete the website/worker its index_url points to. Equivalent to PuterJS puter.apps.delete(name). |
| apps_check_name | Check whether a Puter app name is available (not already taken) before creating an app with it. Equivalent to PuterJS puter.apps.checkName(name). |
| puter_docs_index | Load the index of Puter / puter.js documentation (from docs.puter.com/llms.txt): a list of every topic and its doc path, spanning the whole puter.js SDK — Workers (serverless functions), Hosting, FS, KV, AI (500+ models), Auth, and more. Call this FIRST to discover which doc to read, then fetch the page with puter_docs_get. Puter Workers and the tools in this server are designed to be used WITH puter.js and Puter authentication, so consult these docs before writing any worker or SDK code. |
| puter_docs_get | Fetch a specific Puter / puter.js documentation page as Markdown by the topic path listed in puter_docs_index. Examples: "Workers/router" (the Worker router guide + canonical examples — read this before writing a worker), "Workers/create", "AI/chat", "KV/set", "FS/write", "Hosting/create". Use it to read the exact API and copy working examples before writing worker or puter.js code. |