mcpField
F
Frinus

Frinus

本地服务
github.com/frinus-ai记忆与知识01 天前更新

关于 Frinus

Frinus 是连接 MCP 客户端与 Frinus 托管平台的记忆服务桥接器,面向需要跨会话保存和检索 Agent 状态的用户。它通过 stdio 转发请求,不在本地存储数据,并提供涵盖记忆、会话、层级整合和训练流程的工具。

主要功能

  1. 01认知长期记忆的存储与搜索
  2. 02短期工作记忆管理
  3. 03会话与内容流捕获
  4. 04L0–L3 记忆层级整合
  5. 05Agent 编排与训练流程

适用场景

  1. 01跨会话保存并检索事实
  2. 02记录任务进度与会话摘要
  3. 03检测冲突并整合重复记忆

MCP 相关

作为 MCP 服务通过 stdio 连接客户端;工具调用经 HTTPS 转发至 Frinus 平台,需配置 Frinus API key。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"frinus": {
"command": "npx",
"args": [
"-y",
"frinus-mcp"
],
"env": {
"FRINUS_API_KEY": "<FRINUS_API_KEY>"
}
}
}
}
启动命令npx -y frinus-mcp
需要配置的环境变量
FRINUS_API_KEY密钥

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmfrinus-mcp

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Frinus MCP 服务

φρήν + νοῦς — 通过 Frinus 平台,为你的 Claude Agent 提供长期认知记忆。

frinus-mcp 是一款 MCP(Model Context Protocol)服务。它是你的 MCP 客户端——Claude Code、Cursor 或 Claude Desktop——与托管在 https://frinus.rdxsec.com.br 的 Frinus 平台之间的桥梁。

它无法独立运行。它不会在本地存储任何内容:每次工具调用都会通过 HTTPS 转发到你的 Frinus 账户。因此,在它发挥作用之前,你需要准备好两样东西:

  1. 一个 Frinus 账户(免费,无需银行卡),以及
  2. 一个 Frinus API 密钥(sk-frinus-...)。

准备好这两样东西后,该服务便会提供 70 个工具,涵盖认知记忆、工作记忆、会话、Agent、L0–L3 知识层级、编排任务和训练流水线。它使用标准输入/输出(stdio),可与任何支持 MCP 的客户端配合使用。

工作原理

+-------------------+        +--------------+        +----------------------------+
| Your MCP client   | stdio  | frinus-mcp   | HTTPS  | Frinus platform            |
| (Claude Code,     | <----> | (this server,| <----> | frinus.rdxsec.com.br       |
|  Cursor, Desktop) |        |  via npx)    |        | (your memories live here)  |
+-------------------+        +--------------+        +----------------------------+

该服务会在启动时向平台验证你的 API 密钥,解析你的账户和组织,并将每次工具调用路由到该平台。没有 API 密钥 → 服务会拒绝启动。

规则零——MCP 是强制要求

Frinus MCP 就是 Agent 的长期记忆、身份和智能。没有它,模型在不同会话之间不会保留状态。每个集成 Frinus 的 Claude Agent 都必须:

  1. 在对话开始时确认 MCP 工具可访问(例如 session_start、memory_search、search_with_attention)。
  2. 如果无法访问,向用户显示警告:“MCP Frinus 尚未连接。长期记忆功能不可用。”
  3. 在回答任何非简单问候的问题之前,执行 BOOT 协议(P1)。
  4. 在高效会话结束前,通过 memory_store 保存所学内容。

完整的协议集位于全局 CLAUDE.md(Frinus 组织)中,下方的七项协议对此进行了概述。

开始之前——账户和 API 密钥

你需要一个 Frinus 账户和 API 密钥,两者均可免费获取。

1. 创建免费账户

在 https://frinus.rdxsec.com.br 注册。免费计划(R$0) 足以满足入门需求:

  • 100 条记忆
  • 每天 20 次查询
  • 无需信用卡
2. 生成 API 密钥

登录后,打开账户的 设置 → API 密钥,创建一个新密钥。你会得到一个如下格式的值:

sk-frinus-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

现在就复制它——出于安全考虑,它只会显示一次。此值将填入下方的 FRINUS_API_KEY 环境变量。请像对待密码一样妥善保管;切勿将它提交到代码仓库。

快速入门(从零到第一条记忆)

只需五分钟,分四步完成。

步骤 1 — 创建账户

在 https://frinus.rdxsec.com.br 注册(免费计划,无需银行卡)。参见上文。

步骤 2 — 生成 API 密钥

设置 → API 密钥 → 创建。复制 sk-frinus-... 值。参见上文。

第 3 步——将服务添加到客户端

你无需安装任何内容——npx 会按需获取并运行该软件包。你只需提供 API 密钥;平台 URL 已默认为生产环境。

Claude Code(一行命令):

claude mcp add frinus --env FRINUS_API_KEY=sk-frinus-... -- npx -y frinus-mcp@latest

Cursor / Claude Desktop / 任意客户端(配置 JSON):

{
  "mcpServers": {
    "frinus": {
      "command": "npx",
      "args": ["-y", "frinus-mcp@latest"],
      "env": {
        "FRINUS_API_KEY": "sk-frinus-..."
      }
    }
  }
}

配置文件位置:

  • Claude Code: ~/.claude.json,位于 mcpServers 下。
  • Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json(macOS)/ ~/.config/claude/claude_desktop_config.json(Linux)。也可以使用一键式 .mcpb 扩展,只需粘贴 API 密钥。
  • Cursor: ~/.cursor/mcp.json,位于 mcpServers 下。

重启客户端,使其加载新服务。

将 sk-frinus-... 替换为第 2 步中获取的真实密钥。通常你只需设置 FRINUS_API_KEY——每个后端 URL 都已默认为托管平台。完整列表和自托管覆盖设置请参阅环境变量。

第 4 步——用第一条记忆进行验证

在客户端中,让 Agent 存储并回忆某项内容:

Store this in Frinus memory: "Our staging DB is reset every night at 02:00 UTC."

然后在同一会话或之后的会话中:

What time does our staging DB reset?

在后台,Agent 会调用 memory_store,然后调用 memory_search / search_with_attention。如果成功回忆出内容,说明桥接已正常运行。你可以在 https://frinus.rdxsec.com.br 的 Web 应用中确认同一条记忆是否出现。

环境变量

正常使用时,你只需设置 FRINUS_API_KEY。服务 URL 已指向托管平台——除非你使用自托管,否则请保持不变(参见高级——自托管——本地开发)。

变量默认值(托管平台)说明
FRINUS_API_KEY必填你的个人 API 密钥(sk-frinus-...)。启动时解析账户和组织。
MEMORY_SERVICE_URLhttps://frinus-memory.rdxsec.com.brMemory Engine 基础 URL
FRINUS_CP_URLhttps://frinus-api.rdxsec.com.brControl Plane 基础 URL(账户、组织、API 密钥、账单)
AGENT_SERVICE_URLhttps://frinus-agents.rdxsec.com.brAgent Service 基础 URL(Agent、调用、技能)
FRINUS_MEMORY_API_KEY—FRINUS_API_KEY 的旧版备用项

启动时,服务会向平台验证 API 密钥,并解析你的组织和已登录用户。如果验证失败,服务会以 [FATAL] 中止,以便客户端显示错误——请重新检查“设置”→“API 密钥”中的密钥。

7 项协议

协议适用时机工具用途
P1 — BOOT每次会话开始时session_start、working_memory_get、search_with_attention加载身份信息、近期状态和相关上下文
P2 — CONSULT执行任何操作前search_with_attention、session_context、memory_reinforce、memory_weaken检索、评估并强化相关记忆
P3 — PLAN规划任务时memory_store(procedural)、working_memory_add、stream_capture持久化计划、工作状态和架构决策
P4 — CAPTURE每 2–3 次交互heartbeat_tick、working_memory_add、memory_store(episodic)、stream_capture持续记录进展、错误和模式
P5 — LEARN获取新知识时training_teach、training_qa、training_stats、stream_process、sleep_run教授事实和流程,并运行整合周期
P6 — AUDIT维护时consolidation_detect_conflicts、consolidation_resolve_conflict、consolidation_detect_redundant、hierarchy_consolidate检测冲突和冗余,并整合记忆
P7 — CLOSE会话结束时session_summary、stream_process、memory_store、hierarchy_consolidate、session_end总结内容、提升流项目并持久化所学内容

详细的协议脚本位于 Agent 的 CLAUDE.md 中。请将上表视为每个集成 Frinus 的 Agent 都必须遵守的约定。

工具参考

70 个工具,按领域分组。每个工具都返回文本内容;负载遵循 MCP Tool 规范。完整的 JSON 架构位于 src/tools/definitions.ts。

记忆(7)

认知型长期记忆:情景记忆(发生了什么)、语义记忆(我知道什么)、程序性记忆(如何做事)。

工具描述
memory_store创建一条记忆。必需参数:agent_id、content。memory_type ∈ {episodic, semantic, procedural}。scope ∈ {user, agent, universe, organization}。importance 为 0–1。
memory_search语义相似度搜索。筛选条件:agent_id、memory_types、limit。
memory_get按 memory_id 获取一条记忆(完整内容、元数据、相关性)。
memory_list列出某个 agent_id 的记忆,可选按类型筛选。
memory_delete按 memory_id 永久删除一条记忆。
memory_reinforce提升有用记忆的相关性(memory_id、boost 0–1,默认值为 0.1)。
memory_weaken降低过时记忆的权重(memory_id、penalty 0–1,默认值为 0.2)。
工作记忆(3)

短期、受上下文限制的状态。米勒定律:每个上下文最多 7 项,最旧的项目会自动移除。默认 TTL 为 30 min(最长 2 h)。

工具描述
working_memory_get加载当前上下文的状态。任务开始时务必调用。
working_memory_add持久化当前状态。上下文格式:agent:{uuid}、universe:{uuid}、organization:{uuid}。
working_memory_clear移除某个上下文的所有项目。
会话(5)

会话 = 流、工作记忆和捕获记录的逻辑容器。

工具描述
session_start为某个 Agent 开始会话。返回 session_id。支持通过 parent_session_id 继承子 Agent 的上下文。
session_end终止会话并定稿其摘要。
session_context结合工作记忆与长期记忆检索,并通过提取的会话主题增强结果。
session_summary生成结构化回顾(决策、收获、待办事项)。
session_clear清除会话的工作状态,但不结束会话。
流(4)

持续捕获管道。项目会被批量处理并评分,其中重要项目会提升为永久记忆。

工具描述
stream_capture记录与会话关联的输入 / 输出 / 内部备注。
stream_get_session重放某个 session_id 捕获的每个项目。
stream_get_recent获取跨会话的近期流项目(可筛选)。
stream_process将待处理项目提升为长期记忆(手动触发;调度器也会每隔 5 min 运行一次)。
上下文与注意力(2)
工具描述
memory_get_context为任务描述构建有令牌数量限制的上下文窗口。
search_with_attention使用任务类型感知权重的 RAG。task_type ∈ {implementation, debug, deploy, documentation, review},用于调整各 memory_type 的权重。
用户(2)
工具描述
user_register在记忆系统中注册用户(幂等)。
user_get_context检索用户记忆和租户上下文的组合结果。
维护(2)
工具描述
heartbeat_tick为 Agent 执行轻量级时钟周期,驱动相关性衰减和轻量整合。
sleep_run触发一次休眠周期。phases ⊆ {evaluation, forgetting, consolidation, relevance}。与调度器的常规 / 深度休眠相对应。
整合(3)
工具描述
consolidation_detect_conflicts显示相似度高于阈值的候选冲突记忆。
consolidation_resolve_conflict保留一条记忆,用书面解决说明取代另一条。
consolidation_detect_redundant查找可合并或移除的近似重复项。
记忆层级(2)
工具描述
hierarchy_consolidate将多个相关记忆整合为更高层级的摘要记忆。
hierarchy_get_tree查看根记忆的整合树。
Agent(6)

Agent 的 CRUD 操作和编排调用。

工具描述
agent_create创建 Agent(可选择使用模板),并限定在某个知识域 / 团队内。
agent_list列出调用方租户中的 Agent。根据 API 密钥自动限定范围。
agent_get根据 agent_id 获取 Agent。
agent_update更新角色设定、团队、知识域等。
agent_delete删除 Agent。
agent_invoke以编程方式向 Agent 分配任务并调用。返回其工具调用和最终答案。用于委派。
知识域(4)

知识域 = 受租户限定的知识领域。包含 L0–L3 层级。

工具描述
universe_create在调用方组织中创建知识域。包括 slug、名称和描述。
universe_list列出已解析组织中的知识域。
universe_update更新知识域(名称、描述)。
universe_hierarchy遍历知识域的完整 L0 → L3 树,并显示状态图标。
知识层级 L0–L3(16)
Universe
  └─ Concept   (L0)  body of knowledge
       └─ Theme  (L1)  thematic split
            └─ Topic   (L2)  unit of work (status: pending / in_progress / completed)
                 └─ Point   (L3)  atomic knowledge unit

每个层级都提供 create、list、update、delete:

  • L0 概念:concept_create、concept_list、concept_update、concept_delete
  • L1 主题:theme_create、theme_list、theme_update、theme_delete
  • L2 话题:topic_create、topic_list、topic_update、topic_delete
  • L3 要点:point_create、point_list、point_update、point_delete

topic_update 和 point_update 接受 status 字段,以便 Agent 标记进度。

训练流程(6)

显式地教会系统事实、流程、问答对和完整文档。

工具描述
training_teach注入事实或流程。type ∈ {semantic, procedural}。
training_qa使用 {question, answer} 的 pairs 进行训练。
training_stats整个语料库的覆盖率统计。
training_gaps检测到的知识缺口 / 覆盖不足的话题。
training_recent最近通过训练导入的记忆。
编排 — 任务(4)

Memory Engine 上的任务表驱动多 Agent 编排。

工具描述
task_create创建任务(标题、描述、可选的 assigned_agent_id、父任务)。
task_get获取任务及其完整状态。
task_list使用筛选条件(状态、Agent、父任务)列出任务。
task_update更新状态、输出或指派对象。
技能(4)

可分配给 Agent 的可复用行为。

工具描述
skill_list列出租户中可用的技能。
skill_assign为 Agent 添加技能。
skill_remove从 Agent 移除技能。
skill_agent_list列出指定 Agent 拥有的技能。
凭据保管库(5)——credential_exec 代理工具

加密凭据存储在控制平面中,并通过 credential_ref 在记忆中引用。

工具描述
credential_store将加密凭据存储在某个引用名下(例如 mysql_x)。
credential_get仅查看非机密元数据(主机/用户/数据库/端口,以及 credential_exec 将注入的环境变量)。绝不会返回凭据值。
credential_exec**运行命令,并将凭据注入子进程的环境变量中。**仅返回 stdout/stderr/exit_code——机密信息不会到达模型、屏幕或磁盘。
credential_list列出已存储的凭据引用(不含机密数据)。
credential_delete删除已存储的凭据。

机密信息处理原则——服务端代理,绝不通过值传递。模型永远不会收到机密值:没有明文、没有临时文件,也没有携带机密信息的 shell 片段。要使用凭据,请调用 credential_exec。MCP 服务(已通过 npx -y frinus-mcp@latest 在本地运行)会从保管库获取凭据,将其字段注入子进程的环境变量中——绝不放入 argv,也绝不放入模型可见的任何文本——然后使用 shell:false(不进行 shell 注入)运行命令,并且只返回输出。

// MYSQL_PWD / MYSQL_USER / MYSQL_HOST are pre-injected → standard clients just work
credential_exec(ref="mysql_prod", argv=["mysql", "-e", "SELECT 1"])
credential_exec(ref="pg_prod",    argv=["psql",  "-c", "SELECT 1"])

// For anything else, read the injected vars inside an explicit shell:
credential_exec(ref="jira_x", argv=["sh","-c",
  "curl -sS -H \"Authorization: Bearer $CRED_TOKEN\" \"$CRED_BASE_URL/whoami\""])

注入的环境变量(凭据中存在相应字段时):password/secret/token → MYSQL_PWD、PGPASSWORD、CRED_PASSWORD;user/username → CRED_USER、 MYSQL_USER、PGUSER;host → CRED_HOST、MYSQL_HOST、PGHOST;port → CRED_PORT、MYSQL_TCP_PORT、PGPORT;database → CRED_DATABASE、 PGDATABASE;其他任意标量 → CRED_<UPPER_SNAKE>(例如,base_url → CRED_BASE_URL)。argv 必须是字符串数组(不能是 shell 命令字符串; 如果确实需要 shell,请使用 ["sh","-c","..."])。超时时间为 30s,输出上限为 256 KiB。所有内容都打包在 npm 包中——用户无需安装任何内容,无需编辑 PATH,也无需运行额外命令;只需使用最新的 MCP。

记忆类型

类型用途示例
episodic记录发生的事情Bug: payment endpoint returned 500. Cause: missing null check on customer.address. Fix: guard + 422 response. File: services/payment.py
semantic存储事实和知识`MemoryResponse now includes universe_id (UUID
procedural记录操作流程Procedure: rotate-claude-credentials. Steps: 1) aws ecr login, 2) kubectl set image deployment/agent..., 3) verify pod is Ready. Caveat: deployment is named "agent", not "agent-service".

作用域

作用域可见范围用途
user仅存储该记忆的用户个人偏好和历史记录
agent仅存储该记忆的 AgentAgent 私有备注
universe宇宙(部门)内的所有 Agent共享领域知识
organization租户中的所有 Agent组织范围内的流程和事实

旧版 agent / project / global 作用域已随 project_id 一并弃用。Universe 取代了 project,成为组织内部的隔离边界。

最佳实践

记忆的必需格式——确保未来检索具有确定性:

  • Bug: Bug: <description>. Cause: <root cause>. Fix: <solution>. File: <path>
  • 模式: Pattern: <description>. When to use: <context>. File: <path>
  • 流程: Procedure: <name>. Steps: 1) ... 2) ... 3) .... Caveats: <warnings>

操作指南:

  1. 始终先启动。 回答前调用 session_start + working_memory_get + search_with_attention。
  2. 使用时强化/弱化。 回忆出的记忆有所帮助时,调用 memory_reinforce。记忆有误时,调用 memory_weaken(并替换它)。
  3. 每隔 2–3 轮进行捕获。 使用 working_memory_add 记录状态,使用 stream_capture 记录决策,使用 memory_store 保存提炼后的经验。
  4. 选择正确的 task_type。 search_with_attention 会根据任务对记忆类型加权。debug 倾向于情景记忆,documentation 倾向于语义记忆,deploy 倾向于程序性记忆。
  5. 完成闭环。 结束会话时调用 session_summary + stream_process + session_end。批次增多时运行 sleep_run,进行更深入的整合。
  6. 避免杂乱累积,及时审查。 定期调用 consolidation_detect_conflicts + consolidation_detect_redundant,让回忆保持精准。

架构

+---------------------+       +------------------+       +----------------------+
| Claude Agent /      | <---> | Frinus MCP       | <---> | Memory Engine        |
| Claude Code         | stdio | (this server)    | HTTPS | (memories, sessions, |
+---------------------+       +------------------+       |  hierarchy, tasks)   |
                                |                        +----------------------+
                                |                                  |
                                |                                  v
                                |                        +----------------------+
                                |                        | PostgreSQL+pgvector  |
                                |                        | + Apache AGE (graph) |
                                |                        +----------------------+
                                |
                                +---HTTPS---> Control Plane (universes, orgs)
                                +---HTTPS---> Agent Service (agents, invocation, skills)
  • 记忆引擎负责管理记忆、工作记忆、会话、流、L0–L3 层级、训练、睡眠周期、任务和技能。
  • 控制平面负责管理组织、宇宙、成员、API 密钥、计费、凭证、白标和 LLM 密钥。
  • Agent 服务负责管理 Agent 运行时、工具分发、团队路由、角色设定和调用。

租户隔离采用每个租户独立数据库的方式。MCP 会在启动时根据 API 密钥解析你的租户组织 ID——你无需手动传入 org_id。

高级用法 — 自托管/本地开发

以上内容均面向 https://frinus.rdxsec.com.br 上的托管平台,这也是绝大多数人的选择。如果你运行自己的 Frinus 技术栈(或针对本地后端开发 MCP),请从源代码构建并覆盖这三个 URL:

git clone https://github.com/frinus-ai/frinus-mcp && cd frinus-mcp
npm install
npm run build      # emits dist/index.js
{
  "mcpServers": {
    "frinus": {
      "command": "node",
      "args": ["/absolute/path/to/mcp/dist/index.js"],
      "env": {
        "FRINUS_API_KEY": "sk-frinus-...",
        "MEMORY_SERVICE_URL": "http://localhost:8001",
        "FRINUS_CP_URL": "http://localhost:8000",
        "AGENT_SERVICE_URL": "http://localhost:8002"
      }
    }
  }
}
发布(维护者)
# 1) npm package — powers `npx -y frinus-mcp` everywhere
npm version <patch|minor|major>
npm publish                      # prepublishOnly runs the build

# 2) .mcpb bundle — powers the Claude Desktop one-click install
npm run pack:mcpb                # -> frinus.mcpb
gh release upload v<version> frinus.mcpb --repo frinus-ai/frinus-mcp --clobber
# Frontend points at: releases/latest/download/frinus.mcpb

开发

mcp/
  src/
    index.ts                       Entry: MCP server, dispatch, auth bootstrap
    client/
      memory-client.ts             HTTP client + identity state for Memory Engine
      cp-client.ts                 HTTP client for Control Plane
      agent-client.ts              HTTP client for Agent Service
    tools/
      definitions.ts               Tool schemas (70 tools)
      handlers.ts                  Tool handlers (70 handlers)
    capture/
      interaction-capture.ts       Auto stream capture for every tool call
    types/
      index.ts                     Shared types
  dist/                            Compiled output (npm run build)
  package.json
  tsconfig.json

脚本:

npm run build     # tsc to dist/
npm run dev       # tsx hot reload (src/index.ts)
npm start         # node dist/index.js

类型检查:TypeScript 5.6+、ES 模块、axios。

许可证

许可条款请参阅仓库根目录。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。