项目简介

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 应用集成 (推荐)

  1. 添加依赖: 在你的 'mix.exs' 文件中的 'deps' 函数内添加 Tidewave 依赖:
    # 示例:
    # def deps do
    #   [
    #     {:tidewave, "~> 0.5", only: :dev}
    #   ]
    # end
  2. 集成 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
  3. 启动 Phoenix 应用: 运行你的 Phoenix 应用。MCP 服务器将通过 '/tidewave' 路由提供服务。

作为独立 MCP 服务器运行 (非 Phoenix 应用)

  1. 添加依赖: 在你的 'mix.exs' 文件中的 'deps' 函数内添加 Tidewave 和 Bandit (一个 Elixir HTTP 服务器) 依赖:
    # 示例:
    # def deps do
    #   [
    #     {:tidewave, "~> 0.4", only: :dev},
    #     {:bandit, "~> 1.0", only: :dev},
    #   ]
    # end
  2. 定义启动别名: 在 'mix.exs' 文件中的 'aliases' 函数内添加一个 Tidewave 启动别名:
    # 示例:
    # aliases: [
    #   tidewave:
    #     "run --no-halt -e 'Agent.start(fn -> Bandit.start_link(plug: Tidewave, port: 4000) end)'"
    # ]
  3. 启动服务器: 在你的项目根目录运行 '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 客户端即可通过配置好的地址连接。客户端将能够执行以下操作:

  1. 获取项目上下文: 请求服务器提供当前 Elixir/Phoenix 项目的代码文件、数据库模型、路由信息、UI 组件定义等,为 LLM 提供全面的开发环境视图。
  2. 调用开发工具: 利用 Tidewave 提供的工具,指示 LLM 执行代码生成、错误修复、功能重构、测试编写等任务。例如,LLM 可以请求 Tidewave “生成一个用户注册表单的 LiveView 代码”,或“检查当前模块的测试覆盖率”。
  3. 定制交互模式: 通过服务器定义的 Prompt 模板,客户端可以定制 LLM 的输入,以获得更精确、更符合预期的输出。

Tidewave 为 LLM 赋能,使其能够更深入地理解和参与到 Elixir/Phoenix 全栈 Web 应用的开发流程中。

信息

分类

开发者工具