项目简介
Tidewave Phoenix 是一个基于 Elixir 语言实现的 Model Context Protocol (MCP) 服务器,它专注于为大型语言模型 (LLM) 提供全栈 Web 应用开发的上下文信息和功能。它能够作为独立的 MCP 服务器运行,也可以深度集成到 Phoenix Web 框架中,为开发人员和智能代理提供强大的支持。
主要功能点
- 提供资源上下文: 允许 LLM 访问Web应用的各种资源,如代码文件、数据库结构、UI 组件定义等,以便全面理解项目状态。
- 注册与执行工具: 托管和管理一系列开发工具,允许 LLM 调用外部功能来执行具体的开发任务,例如代码生成、修改、测试、数据库操作或与UI框架交互。
- 自定义 Prompt 模板: 支持定义和渲染可定制的 Prompt 模板,帮助优化 LLM 的交互模式和输出质量。
- 灵活的部署方式: 既可以作为一个独立的 MCP 服务器运行,也可以方便地集成到现有的 Phoenix 应用程序中。
- 标准通信协议: 通过 JSON-RPC 协议与 LLM 客户端通信,支持会话管理、能力声明,并可支持多种传输协议。
安装步骤
Tidewave 是一个 Elixir 包,可以通过 Mix 包管理器安装:
对于 Phoenix 应用集成 (推荐)
- 添加依赖: 在你的 'mix.exs' 文件中的 'deps' 函数内添加 Tidewave 依赖:
# 示例: # def deps do # [ # {:tidewave, "~> 0.5", only: :dev} # ] # end - 集成 Plug: 在你的 'lib/my_app_web/endpoint.ex' 文件中,找到 'if code_reloading? do' 块,在其上方添加 Tidewave Plug:
+ if Code.ensure_loaded?(Tidewave) do + plug Tidewave + end if code_reloading? do - 启动 Phoenix 应用: 运行你的 Phoenix 应用。MCP 服务器将通过 '/tidewave' 路由提供服务。
作为独立 MCP 服务器运行 (非 Phoenix 应用)
- 添加依赖: 在你的 'mix.exs' 文件中的 'deps' 函数内添加 Tidewave 和 Bandit (一个 Elixir HTTP 服务器) 依赖:
# 示例: # def deps do # [ # {:tidewave, "~> 0.4", only: :dev}, # {:bandit, "~> 1.0", only: :dev}, # ] # end - 定义启动别名: 在 'mix.exs' 文件中的 'aliases' 函数内添加一个 Tidewave 启动别名:
# 示例: # aliases: [ # tidewave: # "run --no-halt -e 'Agent.start(fn -> Bandit.start_link(plug: Tidewave, port: 4000) end)'" # ] - 启动服务器: 在你的项目根目录运行 'mix tidewave' 命令。MCP 服务器将在 'http://localhost:4000/tidewave' 监听请求。
服务器配置
为了让支持 MCP 协议的 LLM 客户端(如编辑器插件)能够连接到 Tidewave 服务器,你需要配置客户端指向正确的服务器地址和启动方式。
- 服务器名称: 给你的 MCP 客户端连接起一个名称,例如 "Tidewave MCP 服务器"。
- 服务器地址:
- 集成到 Phoenix 应用时: 你的 Phoenix 应用的 '/tidewave' 路由,例如 'http://localhost:4000/tidewave' (如果 Phoenix 应用运行在 4000 端口)。
- 作为独立服务器运行时: 默认在 'http://localhost:4000/tidewave' 监听。
- 服务器启动命令 (供客户端在需要时自动启动):
- 命令: 'mix' (假设 'mix' 命令在客户端环境的 PATH 中可用)。
- 参数: 'tidewave' (这是你在 'mix.exs' 中为独立服务器启动定义的别名)。
- 工作目录: 你的 Elixir 项目的根目录(包含 'mix.exs' 文件的路径)。客户端通常需要知道此目录才能正确启动 'mix tidewave' 命令。
- 安全性配置 (服务器端): 如果你需要从非本地主机(例如远程机器或 Docker 容器)访问 Tidewave,你必须在服务器端的 'plug Tidewave' 配置中设置 'allow_remote_access: true',并可选地配置 'allowed_origins' 列表,例如:
# 示例配置,需要在endpoint.ex中添加 # plug Tidewave, # allow_remote_access: true, # allowed_origins: ["http://company.local", "//*.dev"]
基本使用方法
当 Tidewave MCP 服务器启动并运行后,你的 LLM 客户端即可通过配置好的地址连接。客户端将能够执行以下操作:
- 获取项目上下文: 请求服务器提供当前 Elixir/Phoenix 项目的代码文件、数据库模型、路由信息、UI 组件定义等,为 LLM 提供全面的开发环境视图。
- 调用开发工具: 利用 Tidewave 提供的工具,指示 LLM 执行代码生成、错误修复、功能重构、测试编写等任务。例如,LLM 可以请求 Tidewave “生成一个用户注册表单的 LiveView 代码”,或“检查当前模块的测试覆盖率”。
- 定制交互模式: 通过服务器定义的 Prompt 模板,客户端可以定制 LLM 的输入,以获得更精确、更符合预期的输出。
Tidewave 为 LLM 赋能,使其能够更深入地理解和参与到 Elixir/Phoenix 全栈 Web 应用的开发流程中。
信息
分类
开发者工具