项目简介
VT.ai 是一个多模态AI聊天应用项目,支持多种AI模型和提供商。本项目仓库中包含了一个独立的Model Context Protocol (MCP) 服务器实现,该服务器基于官方FastMCP SDK构建,旨在以标准化的方式向兼容MCP的LLM客户端提供功能和上下文。
主要功能点
该MCP服务器主要提供以下标准化功能:
- 工具注册与执行: 提供预定义的工具(如天气查询、网页搜索、图像生成)供LLM调用,并执行相应的逻辑。
- JSON-RPC通信: 通过标准JSON-RPC协议与MCP客户端进行交互。
- 能力声明: 向客户端声明其提供的工具及相关定义。
- 会话管理: 支持与客户端进行会话状态的维护。
安装步骤
该项目及其MCP服务器部分可以通过Python包管理器 'uv' 或 'pip' 进行安装。
- 安装uv(推荐): 如果你还没有安装uv,可以按官方文档安装。通常使用 'curl -LsSf https://astral.sh/uv/install.sh | sh'。
- 克隆仓库:
git clone https://github.com/vinhnx/VT.ai.git cd VT.ai - 设置API密钥: MCP服务器的某些工具(如图像生成、网页搜索)可能需要依赖于特定AI服务提供商的API密钥。请在项目根目录下创建 '.env' 文件,并添加所需的API密钥,例如:
OPENAI_API_KEY='sk-your-openai-key' TAVILY_API_KEY='tvly-your-tavily-key' # 可选,用于网页搜索 - 安装依赖:
uv pip install -e . # 或者使用 pip install -e .
服务器配置 (供MCP客户端连接使用)
该MCP服务器通常作为独立进程运行,并通过标准输入/输出(Stdio)或网络端口与客户端通信。MCP客户端需要以下配置信息才能连接并使用此服务器:
{ "name": "VT.ai MCP Server", "command": [ "/path/to/your/cloned/repo/VT.ai/run_vtai_server.sh" ], "args": [], "note": "该配置用于通过Stdio连接并启动VT.ai MCP服务器进程。请将 '/path/to/your/cloned/repo/VT.ai/' 替换为你实际克隆仓库的路径。", "env_vars_needed": "OPENAI_API_KEY, TAVILY_API_KEY (可选) 等,需在运行环境中配置", "default_port": 9393, "communication_protocol": "Stdio (默认, 当command方式启动时) 或 WebSocket/SSE (如果配置并作为独立服务启动)" }
- 'name': 服务器的友好名称,供客户端显示。
- 'command': 用于启动MCP服务器进程的命令行及其参数列表。在此项目中,是执行 'run_vtai_server.sh' 脚本。
- 'args': 传递给启动命令的额外参数列表。根据项目脚本,主机和端口通过环境变量控制,这里通常为空。
- 'note': 提醒用户替换实际的项目路径。
- 'env_vars_needed': 指出服务器运行所需的关键环境变量。
- 'default_port': 服务器默认监听的端口(如果作为网络服务运行)。
- 'communication_protocol': 指出支持的通信协议。当客户端通过 'command' 方式启动服务器脚本时,通常默认为 Stdio 协议;如果服务器被配置为监听特定端口(例如通过设置 'MCP_PORT' 环境变量并使用支持网络传输的FastMCP配置),则可能是 WebSocket 或 SSE 等。
基本使用方法
作为MCP服务器,它本身通常不提供直接的用户界面。它通过命令行脚本启动,等待MCP客户端连接并发送请求。
- 启动MCP服务器: 打开终端,进入项目目录,执行以下命令启动服务器:
./run_vtai_server.sh # 服务器默认监听 localhost:9393,但通过 ./run_vtai_server.sh 脚本启动时,常用于Stdio模式与客户端交互 # 可以通过设置环境变量 MCP_HOST 和 MCP_PORT 来指定监听地址和端口 (需FastMCP及服务器代码支持) # export MCP_PORT="9393" # ./run_vtai_server.sh - 连接MCP客户端: 使用任何兼容Model Context Protocol的LLM客户端,并配置客户端连接到上述启动的服务器(根据客户端的连接方式,可能需要配置Stdio命令或WebSocket/SSE地址)。
- 客户端交互: LLM客户端通过MCP协议向服务器发送请求,例如:
- 请求服务器能力 (Declare Capabilities)
- 调用服务器提供的工具 (Call Tool),如请求网页搜索、图像生成。
- 请求Prompt模板 (Get Prompt) 等(本项目当前代码示例主要展示工具调用能力)。 服务器将处理这些请求并返回JSON-RPC响应。
例如,一个客户端可能会发送一个JSON-RPC请求来调用 'web_search' 工具:
{ "jsonrpc": "2.0", "method": "tool.call", "params": { "tool_name": "web_search", "tool_args": {"query": "latest news on AI"} }, "id": "req-123" }
服务器将执行网页搜索并返回结果作为JSON-RPC响应。
注意事项
- 确保运行环境已设置必要的API密钥。
- 'run_vtai_server.sh' 脚本需要执行权限 ('chmod +x run_vtai_server.sh')。
- 具体的工具功能(如网页搜索、图像生成)依赖于配置的API密钥是否有效。
信息
分类
AI与计算