函数调用与MCP服务器
此存储库旨在说明LLM函数调用和模型上下文协议(MCP)之间的区别。 函数调用已经存在了一段时间,而MCP是一种较新的标准化尝试。 比较这两种方法展示了MCP的价值以及它是如何构建在函数调用之上的。
此存储库包含两个示例:
/func-calling:使用OpenAI函数调用控制Home Assistant灯光的CLI应用程序/mcp-server:Node.js MCP服务器暴露control_lights使用MCP协议的LLM的功能
想看看它的实际效果吗?看看我在YouTube上的演练: MCP与功能调用-用光标控制我的办公室灯
家庭助手
家庭助手 是一个开源的家庭自动化平台。我在家里的Raspberry Pi上运行它。 Home Assistant控制我的灯,您可以通过Home Assistant WebSocket API控制它。
我建造了 ./data-manager 和 ./hass-ws-client 不久前,在玩Home Assistant时使用了utils。我认为这将是一个有趣的外部工具示例。但是,Home Assistant代码不是此存储库的重点。
函数调用
函数调用允许AI助手调用预定义的函数或工具。这些函数直接在助手的环境中运行,可以执行从文件搜索到API调用的任何操作。LLM接收JSON格式的函数描述,并指定使用哪些参数调用哪个函数。然后,应用程序处理执行。
->函数存在于LLM应用程序代码中。
MCP服务器
MCP服务器将AI应用程序与第三方服务连接起来。它们通过任何兼容MCP的LLM都可以使用的标准化协议公开功能。当函数调用发生在本地时,MCP服务器分别处理外部服务通信、身份验证和命令执行。
->MCP服务器是任何兼容MCP的LLM都可以使用的独立应用程序。
设置MCP服务器
- 创建一个
.env文件在mcp-server目录:
cp mcp-server/.env.example mcp-server/.env- 将您的Home Assistant API令牌添加到
.env文件:
HOME_ASSISTANT_API_TOKEN=- 构建MCP服务器:
bun i
bun run build- 将MCP服务器添加到LLM应用程序配置中(例如Cursor):
{
"name": "home-assistant",
"command": "node /Users/andrelandgraf/workspaces/mcps/mcp-server/dist/index.js"
}就是这样!您的LLM应用程序现在可以通过MCP服务器控制家庭助理灯。
