MCP 端点
概述
特别感谢 XiaoZhi AI Chatbot 的开源贡献,使这个项目成为可能。
MCP(模型上下文协议) 是一个强大的框架,通过启用远程控制、计算、邮件操作、知识搜索等功能来扩展 AI 的能力。
MCP 允许服务器通过定义良好的协议向语言模型公开可调用的工具。这些工具使模型能够与外部系统交互,例如查询数据库、调用 API 或执行复杂计算。每个工具都由名称唯一标识,并由定义其功能的元数据描述。
MCP 端点 作为您本地 MCP 服务与小智 AI 模型之间的桥梁。它为语音设备和其他终端提供接口,以无缝利用这些外部功能。
获取 MCP 端点
-
要访问控制面板,请点击页面右上角的 Watcher Agent。

- 打开智能体配置

- 点击
MCP Setting和Get MCP Endpoint

- 获取端点地址和连接状态

选择预提供的 MCP 服务
以下四个 MCP 服务可供您选择。
保存配置并重启设备后,所选服务将自动生效。
您可以通过点击 × 来移除服务

MCP 示例
特别感谢 XiaoZhi AI Chatbot 的开源贡献,使这个项目成为可能。
您可以从 MCP 示例代码 Github 获取以下代码
MCP 服务器代码示例
# server.py
from mcp.server.fastmcp import FastMCP
import logging
logger = logging.getLogger('test_mcp')
import math
import random
# Create an MCP server
mcp = FastMCP("Calculator")
# Add an addition tool
@mcp.tool()
def calculator(python_expression: str) -> dict:
"""For mathamatical calculation, always use this tool to calculate the result of a python expression. `math` and `random` are available."""
result = eval(python_expression)
logger.info(f"Calculating formula: {python_expression}, result: {result}")
return {"success": True, "result": result}
# Start the server
if __name__ == "__main__":
mcp.run(transport="stdio")
代码解释
以下是 MCP 服务器示例中一些关键部分的详细解释:
-
@mcp.tool(): 将以下函数注册为可由 AI 模型远程调用的 MCP 工具。 -
def calculator(python_expression: str) -> dict: 定义一个从模型接收数学表达式的工具。 -
result = eval(python_expression): 使用 Python 的 eval() 来评估表达式。可以使用 math 和 random 等库,因为它们已在上面导入。 -
mcp.run(transport="stdio"): 启动服务器。stdio 传输允许它与 Watcher Agent 或您的 MCP 客户端通信。
执行结果
export MCP_ENDPOINT=<mcp_endpoint_address_get_from_your_agent_configuration>
python mcp_pipe.py calculator.py
2025-05-16 09:07:09,009 - MCP_PIPE - INFO - Connecting to WebSocket server...
2025-05-16 09:07:09,096 - MCP_PIPE - INFO - Successfully connected to WebSocket server
2025-05-16 09:07:09,097 - MCP_PIPE - INFO - Started test.py process
Processing request of type ListToolsRequest
Processing request of type CallToolRequest
Calculating formula: 3.14159 * (8 / 2) ** 2, result: 50.26544
Processing request of type CallToolRequest
Calculating formula: math.comb(10, 3), result: 120
MCP 端点状态

- Connection Status: 显示您的 MCP 连接是否正常工作。
- Refresh icon: 刷新您的 MCP 连接状态。
- Enabled Services: 列出您的 Watcher 可以使用的所有 MCP 服务。
- Endpoint Address: 您的 MCP 端点地址(除非官方技术支持需要,否则请勿与任何人分享)
对话日志


注意事项
1. MCP 中的工具和参数命名
工具及其参数的名称必须清晰,以便大型模型理解其用途。 尽可能避免使用缩写,并提供注释解释工具的功能以及何时应该使用它。
例如,名为 calculator 的工具让模型知道它是一个计算器,参数 python_expression 表示模型应该输入一个 Python 表达式。
如果您正在编写 bing_search 工具,参数名称应该是 keywords。
2. 函数文档字符串指导
文档字符串(使用 """...""")指导模型何时使用该工具。
它还可以提到可以在表达式中使用 math 和 random 库中的函数。
这两个库已经在示例代码中导入。
3. 使用日志记录而不是打印
由于此 MCP 服务器示例中的标准输入/输出用于数据传输,您不能使用 print 来输出信息。
请使用 logger 进行调试和日志记录。
4. 返回值
MCP 返回值通常是字符串或 JSON。在示例中,计算结果在名为 result 的 JSON 字段中返回。
返回值的长度通常有限制,类似于 IoT 设备命令,通常在 1024 字节以内。
5. 工具列表限制
MCP 工具列表有上限。
稍后它将显示在配置页面中,基于令牌数量计算。
注意:工具过多可能会影响设备的调度效率。
6. 连接限制
每个 MCP 端点都有最大并发连接数。
注意:超过此限制或同时连接过多可能会降低设备性能。