Vancouver 使得在你的 Phoenix/Bandit 服务器上添加 模型上下文协议(MCP) 功能变得容易。Vancouver 负责初始化、请求验证,并提供辅助函数以简化 MCP 工具和提示的创建。
在 mix.exs 中:
defp deps do
[
{:vancouver, "~> 0.3"}
]
end
你可以这样实现工具:
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
在 config.ex 中:
config :vancouver,
name: "我的 MCP 服务器",
version: "1.0.0"
在 router.ex 中:
forward "/mcp", Vancouver.Router,
tools: [MyApp.Tools.CalculateSum],
prompts: [MyApp.Prompts.CodeReview]
例如,对于 Claude Desktop,你可以修改配置 设置 -> 开发者 -> 编辑配置 如下:
{
"mcpServers": {
"MyApp": {
"command": "npx",
"args": [
"mcp-remote",
"http://localhost:4000/mcp"
]
}
}
}
运行你的服务器,并重启 Claude 开始使用你的 MCP 工具。🚀
尚未完全支持。目前 Vancouver 支持:
然而,该库足够简单,你应该能够根据需要进行修改。
有关协议本身的更多信息,请参阅 MCP 用户指南。
不,这个库仍处于早期开发阶段。预计会有重大变更。
Vancouver 是 MCP(山、咖啡和凤凰)的自然家园。