使用说明
项目简介
Omnispindle 是一个基于 FastMCP (Fast Model Context Protocol) 框架构建的 Todo 服务器,旨在为 LLM (大型语言模型) 客户端提供结构化的上下文信息和功能。作为一个 MCP 服务器,Omnispindle 专注于任务管理,通过标准化的 MCP 协议与客户端进行通信,提供创建、查询、更新、删除待办事项的功能,并集成了 AI 助手和智能调度能力,增强任务管理的智能化和自动化水平。
主要功能点
- 任务管理 (Resources): 提供创建、查询、更新、删除待办事项的功能,支持设置任务描述、项目、优先级、目标代理人、状态等属性。数据存储在 MongoDB 数据库中。
- AI 助手 (Tools): 集成 AI 助手工具,提供以下智能功能:
- 智能建议: 基于已完成的任务分析模式,为用户提供任务自动化和优先级调整建议。
- 特定任务建议: 针对特定待办事项,提供优先级建议和预计完成时间,并列出相似的已完成任务。
- 智能调度 (Tools): 提供智能任务调度工具:
- 截止日期建议: 根据任务优先级和内容,智能建议合理的截止日期。
- 时间槽建议: 根据历史完成模式和任务优先级,为任务建议最佳完成时间槽。
- 每日日程生成: 基于待办事项,生成优化的每日日程,合理安排任务执行顺序和时间。
- MQTT 集成 (Tools): 支持通过 MQTT 协议发布和获取消息,用于系统状态监控和外部系统集成。
- 灵活的部署方式: 支持 SSE (Server-Sent Events) 传输协议,方便与各种 MCP 客户端集成。
安装步骤
-
克隆仓库:
git clone https://github.com/DanEdens/Omnispindle.git cd Omnispindle -
安装 uv: (如果尚未安装)
curl -LsSf https://astral.sh/uv/install.sh | sh -
创建并激活虚拟环境:
uv venv source .venv/bin/activate # On Unix/macOS # 或 .venv\Scripts\activate # On Windows -
安装依赖:
uv pip install -r requirements.txt -
(可选) 安装开发依赖:
uv pip install -r requirements-dev.txt -
配置环境变量: 创建 '.env' 文件,并配置 MongoDB 连接信息:
MONGODB_URI=mongodb://localhost:27017 MONGODB_DB=swarmonomicon MONGODB_COLLECTION=todos注意: 您可能需要根据实际 MongoDB 服务器的配置修改 'MONGODB_URI',并根据需要调整数据库和集合名称。
服务器配置
MCP 客户端需要配置以下 JSON 信息以连接到 Omnispindle 服务器:
{ "serverName": "OmnispindleTodoServer", "command": "python", "args": ["-m", "src.fastmcp_todo_server"] // "command": "python" // 启动服务器的命令,这里使用 python 解释器 // "args": ["-m", "src.fastmcp_todo_server"] // 启动参数,指定运行 src.fastmcp_todo_server 模块 }
请注意:
- 'serverName' 可以自定义,用于在客户端标识服务器。
- 'command' 和 'args' 必须根据您的 Python 环境和项目结构进行调整,确保客户端能够正确启动 Omnispindle 服务器进程。
- 确保您的 MCP 客户端支持 Stdio 传输协议,Omnispindle 服务器默认使用 Stdio 进行通信。
基本使用方法
-
启动服务器: 在终端中,进入项目根目录,并运行以下命令启动 Omnispindle 服务器:
python -m src.fastmcp_todo_server服务器成功启动后,将监听来自 MCP 客户端的请求。
-
使用 MCP 客户端与服务器交互: 您可以使用任何支持 MCP 协议的客户端与 Omnispindle 服务器进行交互。例如,可以使用 'fastmcp' Python 客户端库。以下是一个使用 Python 客户端添加待办事项的示例:
import asyncio from fastmcp import FastMCPClient async def main(): client = FastMCPClient() # 默认连接到本地 Stdio 服务器 response = await client.call_tool("add_todo", { "description": "Example todo from MCP client", "project": "Test Project", "priority": "medium" }) print(response) if __name__ == "__main__": asyncio.run(main())更多工具调用方法,请参考 'test_client.py' 和 'stdiomcpexample.py' 文件中的示例代码。您可以根据需要调用 'add_todo', 'query_todos', 'get_todo_suggestions', 'suggest_deadline' 等工具,利用 Omnispindle 服务器提供的各种功能。
信息
分类
生产力应用