tidewave_phoenix
Elixir/Phoenix 框架 AI 原生 MCP 服务器,提供运行时级 60+ 工具
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Elixir/Phoenix 框架 AI 原生 MCP 服务器,提供运行时级 60+ 工具
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下,你给 AI 一个任务:帮我修改这个 Phoenix 项目的用户认证模块,让它支持 OAuth2 登录。AI 信誓旦旦地开始写代码,但当你把代码跑起来时,发现它调用了一个根本不存在的函数,参数类型对不上,甚至连模块名都拼错了。
这背后的原因很残酷:AI 在编写代码时,看到的只是静态的文本——源代码、文档、GitHub 仓库。但它完全看不到应用在运行时的真实状态。它不知道数据库里有什么数据,不知道某个函数实际返回了什么,不知道日志里藏着什么错误提示,更不知道 Phoenix LiveView 的组件树长什么样。
这就是传统 AI 编程助手的盲区问题。而 Tidewave Phoenix 正是为解决这一痛点而生。
Tidewave Phoenix 是一个专为 Elixir/Phoenix 框架打造的 MCP(Model Context Protocol)服务器。它的核心理念是:让 AI 在运行时与 Phoenix 应用对话,而非仅凭静态代码猜行为。
Tidewave 将 Phoenix 应用变成一个可观测、可交互的智能体运行环境。AI 通过 MCP 协议连接后,可以:
project_eval:AI 在真实运行时上下文中执行代码,如同拥有了一个 IEx 会话
execute_sql_query:AI 直接查询开发数据库,验证数据变更
Tidewave 的架构分为两层:
第一层:MCP 服务器(lib/mcp.ex、lib/handler.ex)负责处理 MCP 协议的通信,解析来自 AI 客户端(如 Claude Code、Codex、Cursor)的请求,并路由到对应的工具模块。
第二层:工具层(lib/tools/ 目录)提供具体的操作能力:
| 工具名 | 功能 | 应用场景 |
|---|---|---|
| project_eval | 在运行时执行 Elixir 代码 | AI 想验证某个函数的行为,直接跑一遍看结果 |
| execute_sql_query | 执行 SQL 查询 | 验证数据变更、检查数据库状态 |
| get_logs | 读取应用日志 | 追踪请求处理、分析错误原因 |
| get_source_location | 定位模块/函数的源码文件路径 | 跳转到第三方依赖的源码中查看实现 |
| get_docs | 获取精确版本的依赖文档 | 确保 AI 看的文档与实际使用的版本一致 |
| get_ecto_schemas | 列出所有 Ecto schema 模块 | 帮助 AI 理解数据模型 |
| get_ash_resources | 列出 Ash 框架的资源定义 | 如项目使用 Ash,则额外提供框架信息 |
Tidewave 依赖精简,主要包括:
值得注意的是,Tidewave 对 Phoenix LiveView v1.1+ 有良好支持,自动开启 HEEX 注解和属性调试功能。
在 mix.exs 的 deps 中添加:
{:tidewave, "~> 0.6", only: :dev}
然后在 lib/my_app_web/endpoint.ex 中注册 Plug:
if Mix.env() == :dev do
plug Tidewave
end
mix archive.install hex igniter_new
mix igniter.install tidewave
Igniter 会自动修改必要的文件,无需手动编辑。
任何 Elixir 项目都可以使用:
{:tidewave, "~> 0.6", only: :dev},
{:bandit, "~> 1.0", only: :dev}
然后运行 mix tidewave 启动 MCP 服务器。
Tidewave 支持多种 AI 编程工具的 MCP 客户端配置,包括:
连接方式统一:通过 HTTP Streamable 类型的 MCP 连接,地址为 http://localhost:4000/tidewave/mcp。
get_docs:AI 获取精确版本的依赖文档
get_logs:AI 读取应用运行日志,追踪请求处理流程
Tidewave 的出现反映了一个更大的趋势:AI 编程助手正在从代码补全工具进化为代码加运行时智能体。
传统的 AI 编程助手(如 GitHub Copilot)只能处理静态代码。而 Tidewave 代表的路线是:让 AI 接入真实的运行时环境,获得上下文感知能力。这条路线的成功,会让 AI 修改代码后直接报错的情况大幅减少。
目前,Tidewave 已经将这一能力成功带入了 Phoenix/Elixir 生态(Dashbit 团队背书),这对于 Elixir 社区的 AI 辅助开发具有标志性意义。
# 1. 添加依赖
# 在 mix.exs deps 中添加 {:tidewave, "~> 0.6", only: :dev}
# 2. 安装依赖
mix deps.get
# 3. 配置 endpoint(见上文安装部分)
# 4. 启动应用
mix phx.server
# 5. 在 AI 工具中配置 MCP 连接
# http://localhost:4000/tidewave/mcp
Tidewave Phoenix 为 Phoenix 开发者打开了一扇通向 AI 原生开发的大门——让 AI 不再是门外汉,而是真正理解你代码的搭档。