# serial-mcp-server

Даёт агенту инструменты для работы с последовательным портом: открыть соединение, отправить команду, прочитать ответ, дёрнуть DTR.

- MCP-сервер · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 26
- Автор: es617
- Лицензия: MIT · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/es617/serial-mcp-server
- Обновлён: 2026-03-07
- HTML: https://affpapa.org/nevibecode/mcp/serial-mcp-server

## Что делает

Сервер держит состояние соединения и общается с клиентом через stdio. Внутри — набор инструментов поверх pyserial: список портов, открытие и закрытие с настройкой baud rate, чётности, стоп-битов и кодировки, чтение и запись в тексте, hex или base64. Для текстовых протоколов есть построчный ввод-вывод и чтение до разделителя, для сброса платы — управление линиями DTR и RTS.

Кроме сырых байтов агент может опираться на спецификации протоколов и плагины устройств. Спецификация описывает набор команд и формат вывода, плагин даёт готовые высокоуровневые операции. Включаются через переменную `SERIAL_MCP_PLUGINS`: `all` разрешает всё, список имён — только нужные, без переменной плагины выключены. Ещё есть PTY-зеркало: `screen`, `minicom` или ваш скрипт подключаются к тому же сеансу, что и агент. На macOS и Linux это работает, на Windows — нет.

Нужен Python 3.11 или новее и пакет `serial-mcp-server`, ставится из PyPI или через `uvx`. Порт по умолчанию держит до 10 соединений, меняется через `SERIAL_MCP_MAX_CONNECTIONS`. В Cursor имена инструментов не могут содержать точки, поэтому `SERIAL_MCP_TOOL_SEPARATOR` там задаётся как `_` — без этого инструменты в клиенте не поднимутся.

## Требования
- Нужно: Python и uv (команды через uvx)
- Переменные окружения: `SERIAL_MCP_MAX_CONNECTIONS`, `SERIAL_MCP_PLUGINS`, `SERIAL_MCP_MIRROR`, `SERIAL_MCP_MIRROR_LINK`, `SERIAL_MCP_TOOL_SEPARATOR` — это ключи и токены: значения спроси у человека, в репозиторий и общие файлы не записывай.

## Установка

### Claude Code (родная платформа)

**Командой платформы**
```bash
claude mcp add --env SERIAL_MCP_MAX_CONNECTIONS=<SERIAL_MCP_MAX_CONNECTIONS> --env SERIAL_MCP_PLUGINS=<SERIAL_MCP_PLUGINS> --env SERIAL_MCP_MIRROR=<SERIAL_MCP_MIRROR> --env SERIAL_MCP_MIRROR_LINK=<SERIAL_MCP_MIRROR_LINK> --env SERIAL_MCP_TOOL_SEPARATOR=<SERIAL_MCP_TOOL_SEPARATOR> --transport stdio serial-mcp-server -- uvx serial-mcp-server
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from serial-mcp-server <команда>

### Codex

**Командой платформы**
```bash
codex mcp add serial-mcp-server --env SERIAL_MCP_MAX_CONNECTIONS=<SERIAL_MCP_MAX_CONNECTIONS> --env SERIAL_MCP_PLUGINS=<SERIAL_MCP_PLUGINS> --env SERIAL_MCP_MIRROR=<SERIAL_MCP_MIRROR> --env SERIAL_MCP_MIRROR_LINK=<SERIAL_MCP_MIRROR_LINK> --env SERIAL_MCP_TOOL_SEPARATOR=<SERIAL_MCP_TOOL_SEPARATOR> -- uvx serial-mcp-server
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from serial-mcp-server <команда>

### Cursor

**Файл настроек**
Файл `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "serial-mcp-server": {
            "command": "uvx",
            "args": [
                "serial-mcp-server"
            ],
            "env": {
                "SERIAL_MCP_MAX_CONNECTIONS": "<SERIAL_MCP_MAX_CONNECTIONS>",
                "SERIAL_MCP_PLUGINS": "<SERIAL_MCP_PLUGINS>",
                "SERIAL_MCP_MIRROR": "<SERIAL_MCP_MIRROR>",
                "SERIAL_MCP_MIRROR_LINK": "<SERIAL_MCP_MIRROR_LINK>",
                "SERIAL_MCP_TOOL_SEPARATOR": "<SERIAL_MCP_TOOL_SEPARATOR>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from serial-mcp-server <команда>

### GitHub Copilot

**Файл настроек**
Файл `.vscode/mcp.json`:
```json
{
    "servers": {
        "serial-mcp-server": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "serial-mcp-server"
            ],
            "env": {
                "SERIAL_MCP_MAX_CONNECTIONS": "<SERIAL_MCP_MAX_CONNECTIONS>",
                "SERIAL_MCP_PLUGINS": "<SERIAL_MCP_PLUGINS>",
                "SERIAL_MCP_MIRROR": "<SERIAL_MCP_MIRROR>",
                "SERIAL_MCP_MIRROR_LINK": "<SERIAL_MCP_MIRROR_LINK>",
                "SERIAL_MCP_TOOL_SEPARATOR": "<SERIAL_MCP_TOOL_SEPARATOR>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from serial-mcp-server <команда>

### Gemini CLI

**Командой платформы**
```bash
gemini mcp add -e SERIAL_MCP_MAX_CONNECTIONS=<SERIAL_MCP_MAX_CONNECTIONS> -e SERIAL_MCP_PLUGINS=<SERIAL_MCP_PLUGINS> -e SERIAL_MCP_MIRROR=<SERIAL_MCP_MIRROR> -e SERIAL_MCP_MIRROR_LINK=<SERIAL_MCP_MIRROR_LINK> -e SERIAL_MCP_TOOL_SEPARATOR=<SERIAL_MCP_TOOL_SEPARATOR> serial-mcp-server uvx serial-mcp-server
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from serial-mcp-server <команда>

## Когда брать
- найти подключённый микроконтроллер и определить его порт
- прочитать загрузочный баннер после сброса платы
- прогнать последовательность команд и сверить вывод
- отладить незнакомый протокол по ответам устройства
- перевести сброс и вход в bootloader в автоматический сценарий

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
