项目简介

'FrostAura MCP Gaia Core' 是一个轻量级的Model Context Protocol (MCP) 服务器,专门用于为大型语言模型(LLM)客户端提供核心的上下文管理能力。它能够托管和管理简单的任务列表以及持久化的记忆(作为资源),并提供工具让LLM可以读取、更新任务以及存储和召回记忆。该服务器通过标准输入/输出(Stdio)进行通信,非常适合作为LLM工具调用的后端服务。

主要功能点

  • 任务管理: LLM可以通过工具查询当前待办任务列表,也可以创建或更新任务的状态和详情。
  • 记忆存储: LLM可以将重要的决策、上下文信息或关键知识点存储起来,以便后续查询和利用。这些记忆通过分类和键值进行管理,并支持更新以避免重复。
  • 记忆召回: LLM可以模糊搜索之前存储的记忆,以获取相关的历史信息或上下文,提高交互的连贯性和准确性。
  • 上下文持久化: 任务和记忆都以JSONL格式存储在文件系统中,确保了数据在会话间的持久性。

安装步骤

该MCP服务器是基于.NET开发的,通常作为LifeOS项目的一部分运行。以下是其独立运行的简要步骤:

  1. 安装必要软件:

    • Node.js 20+ LTS
    • .NET SDK 9.0+
    • Docker 24+ 及 Docker Compose (如果选择Docker方式)
  2. 克隆仓库: 打开您的终端或命令行工具,执行以下命令克隆项目:

    git clone https://github.com/frostaura/fa.lifeos.git
    cd fa.lifeos
  3. 构建MCP服务器: 进入MCP服务器项目目录并构建。

    cd .gaia/mcps/gaia/src/fa.mcp.gaia
    dotnet restore
    dotnet build
  4. 运行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响应。

信息

分类

开发者工具