Skip to main content
Glama
shaekhx

Teletype MCP

by shaekhx
README.md
# Teletype MCP

Локальный MCP-сервер для управления публикациями на `teletype.in`. Он запускается на компьютере пользователя и не требует Vercel, другого хостинга или постоянно работающего внешнего сервера.

## Как это работает

```text
ChatGPT / Claude / Cursor / другой MCP-клиент
                │ stdio
                ▼
       локальный server.js
                │ HTTPS
                ▼
            teletype.in
```

Сервер работает только пока запущен MCP-клиент. Токены и настройки хранятся в локальном `.env` и не отправляются в GitHub.

## Два режима

- `DRAFT_ONLY` — агент может создавать и редактировать только скрытые материалы. Открытая публикация заблокирована кодом.
- `AUTO_PUBLISH` — агент может создать материал и сразу опубликовать его открыто.

По умолчанию используется `DRAFT_ONLY`.

## Установка для Windows — рекомендуемый вариант

Нужен Node.js 20 или новее.

1. Установи Node.js 20+ с официального сайта: https://nodejs.org/
2. Скачай репозиторий через **Code → Download ZIP** или клонируй его через Git.
3. Распакуй архив и открой папку `teletype-mcp`.
4. Дважды запусти файл **`install.cmd`**.
5. Установщик проверит Node.js, установит зависимости, задаст вопросы для `.env` и создаст файлы запуска.

Если Windows показывает предупреждение SmartScreen, выбери «Подробнее → Выполнить в любом случае»: скрипт работает только внутри папки проекта и не отправляет секреты наружу.

### Если запускаешь из PowerShell

```powershell
.install.ps1
```

Если PowerShell блокирует `.ps1`, используй `install.cmd` или выполни:

```powershell
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.install.ps1
```

### Ручной вариант

```powershell
npm.cmd install
node setup.mjs
```

На macOS/Linux:

```bash
chmod +x install.sh
./install.sh
```

Установщик создаёт `.env`, `mcp-config.json`, `start-teletype-mcp.cmd`, `start-teletype-mcp.ps1` и, на macOS/Linux, `start-teletype-mcp.sh`. Реальные значения `.env` остаются только на компьютере пользователя.

## Запуск после установки

На Windows просто запусти **`start-teletype-mcp.cmd`** двойным щелчком. Для PowerShell:

```powershell
.\start-teletype-mcp.ps1
```

В macOS/Linux запусти `./start-teletype-mcp.sh`. Пустое окно терминала — нормальное поведение: сервер ждёт команды от MCP-клиента. Не закрывай его, если клиент не запускает сервер самостоятельно.

## Подключение к MCP-клиенту

Установщик создаёт файл `mcp-config.json` с уже подставленными абсолютными путями. Скопируй его содержимое в конфигурацию MCP-клиента, который поддерживает локальные серверы через `stdio`:

```json
{
  "mcpServers": {
    "teletype": {
      "command": "C:/Program Files/nodejs/node.exe",
      "args": ["C:/путь/к/teletype-mcp/server.js"]
    }
  }
}
```

На Windows укажи полный путь к `server.js`. На macOS/Linux пример выглядит так:

```json
{
  "mcpServers": {
    "teletype": {
      "command": "node",
      "args": ["/полный/путь/к/teletype-mcp/server.js"]
    }
  }
}
```

После перезапуска MCP-клиента появятся инструменты `check_connection`, `get_profile`, `create_article`, `update_article`, `publish_article`, `list_articles` и `get_article`. Первой командой попроси агента выполнить `check_connection`.

Важно: не каждый веб-чат поддерживает подключение локального `stdio` MCP. Если в ChatGPT нет раздела для локальных MCP-серверов, используй MCP-клиент с такой поддержкой, например Claude Desktop, Cursor или другой совместимый клиент. Сам MCP при этом уже работает локально и не зависит от Vercel.

## Безопасность

Не добавляй в GitHub, сообщения или Notion:

- токены, cookies, session ID и CSRF;
- содержимое `.env`;
- личные URL и идентификаторы аккаунта;
- логи с приватными данными.

Перед включением `AUTO_PUBLISH` рекомендуется проверить работу в `DRAFT_ONLY`.

## Проверка

```bash
npm run check
npm test
```

В Windows PowerShell используй `npm.cmd run check` и `npm.cmd test`, если команда `npm` блокируется политикой выполнения сценариев.

## Частые ошибки

### `npm.ps1 cannot be loaded` / выполнение сценариев отключено

Это ограничение PowerShell, а не ошибка проекта. Используй `npm.cmd ...`, запусти `install.cmd` или временно разреши скрипты только для текущего окна:

```powershell
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
```

### `node is not recognized`

Node.js не установлен или PowerShell открыт до его установки. Установи Node.js 20+, закрой все окна терминала и открой новое.

### MCP подключился, но `check_connection` выдаёт 401/403

Проверь локальный `.env`: токен, `TELETYPE_CLIENT_ID`, `TELETYPE_SESSION_ID`, `TELETYPE_LID` и `TELETYPE_CSRF` должны относиться к одной актуальной сессии Teletype. Не отправляй их в чат.

### `TELETYPE_BLOG_ID` не задан

Заполни идентификатор блога в `.env` или передай `blog_id` инструменту MCP. Пустой `TELETYPE_BLOG_URI` допустим.

### Агент не видит инструменты

Проверь путь в `mcp-config.json`, перезапусти MCP-клиент и убедись, что используется полный путь к `node.exe` и `server.js`. Локальный сервер должен запускаться из папки проекта.

### Статья создаётся скрытой

Это ожидаемо в `DRAFT_ONLY`. Для открытой автопубликации повторно запусти `setup.mjs` и выбери режим 2, но сначала протестируй соединение и создание скрытой статьи.