返回市场
温哥华

温哥华

作者:jameslong38 星标更新:2025-06-18

项目介绍

CI Hex.pm Hexdocs.pm Hex.pm Hex.pm

Vancouver

Vancouver 使得在你的 Phoenix/Bandit 服务器上添加 模型上下文协议(MCP) 功能变得容易。Vancouver 负责初始化、请求验证,并提供辅助函数以简化 MCP 工具和提示的创建。

开始使用

1. 添加依赖

mix.exs 中:

defp deps do
  [
    {:vancouver, "~> 0.3"}
  ]
end

2. 创建你的工具/提示

你可以这样实现工具:

defmodule MyApp.Tools.CalculateSum do
  use Vancouver.Tool

  def name, do: "calculate_sum"
  def description, do: "将两个数字相加"

  def input_schema do
    %{
      "type" => "object",
      "properties" => %{
        "a" => %{"type" => "number"},
        "b" => %{"type" => "number"}
      },
      "required" => ["a", "b"]
    }
  end

  def run(conn, %{"a" => a, "b" => b}) do
    send_text(conn, "#{a + b}")
  end
end

以及提示:

defmodule MyApp.Prompts.CodeReview do
  use Vancouver.Prompt

  def name, do: "code_review"
  def description, do: "要求大语言模型分析代码质量并提出改进建议"

  def arguments do
    [
      %{
        "name" => "code",
        "description"  => "要审查的代码",
        "required" => true
      }
    ]
  end

  def run(conn, %{"code" => code}) do
    send_text(conn, "请审阅此代码:#{code}")
  end
end

3. 添加配置

config.ex 中:

config :vancouver,
  name: "我的 MCP 服务器",
  version: "1.0.0"

4. 添加你的 MCP 路由

router.ex 中:

forward "/mcp", Vancouver.Router, 
  tools: [MyApp.Tools.CalculateSum],
  prompts: [MyApp.Prompts.CodeReview]

5. (可选)添加到你的 MCP 客户端

例如,对于 Claude Desktop,你可以修改配置 设置 -> 开发者 -> 编辑配置 如下:

{
    "mcpServers": {
        "MyApp": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "http://localhost:4000/mcp"
            ]
        }
    }
}

运行你的服务器,并重启 Claude 开始使用你的 MCP 工具。🚀

常见问题

Vancouver 是否支持模型上下文协议规范的所有部分?

尚未完全支持。目前 Vancouver 支持:

  • 工具
  • 提示
  • 同步响应(无流式传输)

然而,该库足够简单,你应该能够根据需要进行修改。

有关协议本身的更多信息,请参阅 MCP 用户指南

Vancouver 是否稳定/准备好用于生产环境?

不,这个库仍处于早期开发阶段。预计会有重大变更。

为什么这个库叫 Vancouver?

Vancouver 是 MCP(山、咖啡和凤凰)的自然家园。