项目简介
'FrostAura MCP Gaia Core' 是一个轻量级的Model Context Protocol (MCP) 服务器,专门用于为大型语言模型(LLM)客户端提供核心的上下文管理能力。它能够托管和管理简单的任务列表以及持久化的记忆(作为资源),并提供工具让LLM可以读取、更新任务以及存储和召回记忆。该服务器通过标准输入/输出(Stdio)进行通信,非常适合作为LLM工具调用的后端服务。
主要功能点
- 任务管理: LLM可以通过工具查询当前待办任务列表,也可以创建或更新任务的状态和详情。
- 记忆存储: LLM可以将重要的决策、上下文信息或关键知识点存储起来,以便后续查询和利用。这些记忆通过分类和键值进行管理,并支持更新以避免重复。
- 记忆召回: LLM可以模糊搜索之前存储的记忆,以获取相关的历史信息或上下文,提高交互的连贯性和准确性。
- 上下文持久化: 任务和记忆都以JSONL格式存储在文件系统中,确保了数据在会话间的持久性。
安装步骤
该MCP服务器是基于.NET开发的,通常作为LifeOS项目的一部分运行。以下是其独立运行的简要步骤:
-
安装必要软件:
- Node.js 20+ LTS
- .NET SDK 9.0+
- Docker 24+ 及 Docker Compose (如果选择Docker方式)
-
克隆仓库: 打开您的终端或命令行工具,执行以下命令克隆项目:
git clone https://github.com/frostaura/fa.lifeos.git cd fa.lifeos -
构建MCP服务器: 进入MCP服务器项目目录并构建。
cd .gaia/mcps/gaia/src/fa.mcp.gaia dotnet restore dotnet build -
运行MCP服务器: 服务器会以控制台应用的形式启动,并通过标准输入输出与MCP客户端通信。
dotnet run(请注意:'dotnet run' 通常用于开发测试,生产环境部署建议使用 'dotnet publish' 发布后直接运行可执行文件。)
服务器配置
MCP客户端需要以下JSON格式的配置信息才能连接到 'FrostAura MCP Gaia Core' 服务器。此配置信息用于告知MCP客户端如何启动和与服务器通信。
{ "server_name": "fa.mcp.gaia", "command": "dotnet", "args": [ "run", "--project", "./.gaia/mcps/gaia/src/fa.mcp.gaia/fa.mcp.gaia.csproj" ], "description": "FrostAura MCP Gaia Core 服务器,提供任务和记忆管理工具。", "transport": "stdio", "version": "2.0.0" }
- 'server_name': 注册到MCP客户端的服务名称,用于标识这个MCP服务器。
- 'command': 启动MCP服务器进程的命令。此处设置为 'dotnet'。
- 'args': 传递给 'command' 的参数列表。这里指示 'dotnet' 运行位于 './.gaia/mcps/gaia/src/fa.mcp.gaia/fa.mcp.gaia.csproj' 的项目。请确保此路径是相对于执行MCP客户端命令的目录。
- 'description': 对MCP服务器功能的简要描述,方便LLM客户端理解其用途。
- 'transport': 服务器与客户端通信的协议。此处设置为 'stdio'(标准输入/输出),意味着通过控制台的标准流进行通信。
- 'version': MCP服务器的版本号。
基本使用方法
一旦MCP服务器启动并被MCP客户端正确配置,LLM即可通过调用服务器提供的工具来执行操作。以下是几个JSON-RPC请求示例,演示了如何与服务器交互:
-
读取任务 (read_tasks): LLM可以调用 'mcp__gaia__read_tasks' 工具来获取当前的任务列表。
{ "jsonrpc": "2.0", "method": "mcp__gaia__read_tasks", "params": { "hideCompleted": true }, "id": "1" }'params.hideCompleted': 设置为 'true' 则只返回未完成的任务。
-
更新任务 (update_task): LLM可以调用 'mcp__gaia__update_task' 工具来创建新任务或更新现有任务。
{ "jsonrpc": "2.0", "method": "mcp__gaia__update_task", "params": { "taskId": "plan_project", "description": "Detailed project planning for Q3 initiative.", "status": "in_progress", "assignedTo": "AI Assistant" }, "id": "2" }'params.taskId': 任务的唯一标识符。 'params.description': 任务的详细描述。 'params.status': 任务的状态,例如 "in_progress"(进行中)、"completed"(已完成)。 'params.assignedTo': (可选)任务的负责人。
-
存储记忆 (remember): LLM可以调用 'mcp__gaia__remember' 工具来保存重要信息。
{ "jsonrpc": "2.0", "method": "mcp__gaia__remember", "params": { "category": "project_strategy", "key": "q3_goals", "value": "Key goal is to launch new feature X by end of Q3 with 80% user adoption." }, "id": "3" }'params.category': 记忆的分类。 'params.key': 记忆的键标识符,与分类一起用于唯一标识记忆。 'params.value': 实际要存储的记忆内容。
-
召回记忆 (recall): LLM可以调用 'mcp__gaia__recall' 工具来检索之前存储的信息。
{ "jsonrpc": "2.0", "method": "mcp__gaia__recall", "params": { "query": "new feature launch", "maxResults": 5 }, "id": "4" }'params.query': 用于模糊搜索记忆的查询字符串。 'params.maxResults': (可选)返回的最大记忆数量,默认为20。
这些JSON-RPC请求将通过配置的Stdio传输协议发送给运行中的MCP服务器,服务器会处理请求并返回相应的JSON-RPC响应。
信息
分类
开发者工具