mcpField
T
tidewave-integration

tidewave-integration

github.com/oliver-kriska开发57157 次安装1 周前更新
代码仓库

关于 tidewave-integration

用于在开发 Phoenix 应用时使用 Tidewave 运行时工具的技能,指导开发者查询文档、执行代码和 SQL,并检查运行状态,同时强调仅用于开发环境及确认服务器归属。

主要功能

  1. 01Tidewave 工具选择与替代方案
  2. 02按版本查询文档
  3. 03运行时代码与 SQL 检查
  4. 04LiveView 和浏览器调试
  5. 05运行时验证检查点

适用场景

  1. 01测试运行中 Phoenix 应用的函数
  2. 02查询数据库前检查 schema
  3. 03调试 LiveView 状态和 DOM
  4. 04代码修改后检查日志

MCP 相关

Tidewave 为 Phoenix 运行时工具提供可流式传输的 HTTP MCP 服务。该技能说明设置与客户端配置,并建议使用前确认工具可用。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/oliver-kriska/claude-elixir-phoenix --skill tidewave-integration

安装后在 Claude Code 中输入/tidewave-integration确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
proactive-patterns.md
tool-examples.md
validation-checklist.md

详细介绍

Tidewave MCP 集成

通过 MCP 为 Phoenix 应用提供运行时洞察。条件允许时,优先使用 Tidewave 工具,而非 Bash。

不可违背的铁律

  1. 仅限开发环境 — 绝不要在生产环境中使用 Tidewave 工具。避免在包含生产数据副本的共享开发服务器上使用。
  2. 优先使用 TIDEWAVE,而非 BASH — mcp__tidewave__get_docs > web_fetch,execute_sql_query > psql
  3. 先检查是否可用 — 只有存在相匹配的 mcp__tidewave__* 工具时,才调用 Tidewave
  4. SQL 以读取为主 — 使用 execute_sql_query 执行 SELECT,谨慎进行数据修改
  5. 版本必须精确 — get_docs 返回的是与你的 mix.lock 版本相对应的文档,而非最新文档

快速参考

任务Tidewave 工具后备方案
获取文档mcp__tidewave__get_docs Module.func/3web_fetch hexdocs.pm/...
运行代码mcp__tidewave__project_evalmix run -e "code"
SQL 查询mcp__tidewave__execute_sql_querypsql $DATABASE_URL
查找源代码mcp__tidewave__get_source_locationgrep -rn "defmodule"
检查 DOMmcp__Tidewave-Web__browser_eval手动检查浏览器
列出架构mcp__tidewave__get_ecto_schemas阅读 lib/*/schemas/
读取日志mcp__tidewave__get_logs level: :errortail -f log/dev.log

检测

# Check endpoint
curl -s http://localhost:4000/tidewave/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"ping"}'

或者在 Claude Code 中使用 /mcp 查看已连接的服务。

核心模式

立即测试函数
# mcp__tidewave__project_eval
MyApp.Accounts.create_user(%{email: "[email protected]"})
验证迁移
-- mcp__tidewave__execute_sql_query
SELECT column_name, data_type FROM information_schema.columns
WHERE table_name = 'users';
调试 LiveView(使用从浏览器获取的 PID)
# mcp__tidewave__project_eval
pid = pid("0.1234.0")
:sys.get_state(pid) |> Map.get(:socket) |> Map.get(:assigns) |> Map.keys()

设置要求

# mix.exs
{:tidewave, "~> 0.6", only: :dev}

# endpoint.ex (in dev block)
plug Tidewave

# config/dev.exs (for LiveView source mapping)
config :phoenix_live_view,
  debug_heex_annotations: true,
  debug_attributes: true

该依赖项和端点 plug 会公开 Tidewave 的可流式 HTTP 服务,但不会将其注册到 MCP 客户端。请单独配置当前运行时,使用 http://localhost:<port>/tidewave/mcp,然后确认 Tidewave 工具可用,再依赖此技能。

可靠性防护

工作树/端口检查(多工作树环境下优先执行):多个工作树 = 多个使用不同端口的开发服务器。在信任任何 Tidewave 结果之前,请确认端点属于本次检出的代码库:检查 config/dev.exs 中配置的端口,并通过 project_eval File.cwd!() 验证——如果返回的是不同的工作树路径,说明你正在调试错误的服务器。

先检查架构,再执行 SQL:绝不要猜列名。针对本会话中尚未检查过的表编写 SQL 前,先运行 get_ecto_schemas(或查询 information_schema.columns)。猜错列名导致的错误,比先检查架构代价更高。

输出大小防护:运行时输出没有上限。务必限制输出——SQL 使用 LIMIT 20,求值时使用 Enum.take(20),大型结构体使用 inspect(x, limit: 50, printable_limit: 500)。应缩小范围重新查询,而不是倾倒大量数据。

browser_eval 后备方案:如果 mcp__Tidewave-Web__browser_eval 不存在或报错,不要停滞不前——在服务端检查相同状态:通过 project_eval 中的 :sys.get_state(pid) 查看 LiveView assigns,通过 Phoenix.LiveViewTest 查看渲染后的 HTML,或直接阅读模板源代码。

QA 演练模式:功能完成后,通过 project_eval/browser_eval 执行简短检查清单:创建记录、取回记录、触发主要事件,并确认 get_logs level: :error 没有错误。逐项报告通过/失败情况,而不只是说“冒烟测试通过”。

主动运行时检查

不要只在需要时才使用 Tidewave。请在工作流检查点自动查询运行时状态:

  • 代码编辑后:运行 get_logs level: :error(捕获运行时崩溃)
  • 功能完成后:运行 project_eval 冒烟测试(检查行为)
  • 规划前:运行 get_ecto_schemas 和路由求值(了解具体上下文)
  • 调查问题时:询问用户前自动捕获错误
  • LiveView UI 问题:编辑组件前使用 browser_eval 检查 DOM 状态

完整集成点请参阅 ${CLAUDE_SKILL_DIR}/references/proactive-patterns.md。

参考资料

如需了解详细模式,请参阅:

  • ${CLAUDE_SKILL_DIR}/references/proactive-patterns.md - 工作流检查点处的推送式运行时模式
  • ${CLAUDE_SKILL_DIR}/references/tool-examples.md - 完整的工具使用示例
  • ${CLAUDE_SKILL_DIR}/references/validation-checklist.md - 运行时验证模式

评论

支持 Markdown