Как стать автором
Обновить

Попробую запостить тут пост - размышления :)
Наконец-то написал небольшой mcp сервер для flutter до относительно стабильного состояния.

Самым интересным было понять как работать с dart vm и devtools extensions - можно ли вообще обращаться к ним со стороннего сервера и что можно использовать для агента (например в cursor).

Так как на момент начала dart mcp сервера стабильного не было в pub.dev, решил mcp server писать на typescript.

Что получилось (на данный момент)

Архитектура сообщений (использовал везде JSON RPC 2, так как это по умолчанию протокол общения с Dart VM):

  1. MCP server <-> Dart VM
    Из плюсов - прямой доступ, проще работать
    Из минусов - не все методы работали (в основном связанные с другими extensions), все структуры нужно писать с нуля

  2. MCP server (TS) <-> Forwarding Server (TS) <-> Devtools Extension (Dart) <-> Dart VM
    Из плюсов: в devtools можно использовать готовые библиотеки для работы с dart vm. Все методы работают как должны. Можно очень просто дебажить все методы, так как есть прямой доступ к dart vm, и не нужно работать через MCP inspector.
    Все ошибки мониторятся (слушаются через Dart VM) в Devtools Extension.

    Из минусов: сложность запуска: нужно обязательно запускать Forwarding Server, Devtools Extension и проверять что всё работает.

    Почему так: напрямую MCP server связать с Devtools Extension пока не удалось, идея через регистрацию методов в Dart VM, чтобы Dart VM выступала как forwarding server пока тоже не сработала.

Изначально, чтобы разобраться как работает, подключил все методы, доступные в dart vm, но со временем пришел только к двум-трем основным:
- get_app_errors - чтобы мониторить ошибки, появляющиеся в Dart VM. Использовал только краткое описание, чтобы было сложно переполнить context.
- hot_reload - чтобы агент мог сделать hot reload и ошибки записались в Devtools Extension.

Теги:
Рейтинг0
Комментарии0

Публикации

Работа

Ближайшие события