AI教练记忆管理服务

一个用于AI教练的持久化记忆和训练计划管理服务,通过MCP协议提供服务。

  • by barcia
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 barcia/running-coach-memory-mcp

使用说明

教练记忆MCP

AI教练的持久记忆和训练计划管理,作为 主控程序 服务器。

两个数据域:

  • 计划 --训练日历,包括计划锻炼。每个计划都遵循一个状态生命周期(pending → completed / skipped / cancelled)并且可以链接到外部活动ID。
  • 回忆 --具有向量嵌入的长期语义记忆(sqlite-vec),用于跨会话的智能检索。

此MCP可以 不 存储原始健康指标或生物特征数据。这些数据存在于外部服务中。这个系统充当了教练的“大脑”——训练什么、为什么训练以及记住什么。

安装

来自git(推荐给MCP客户端)

uvx --from "git+ssh://git@github.com/barcia/coach-memory" coach-memory

本地开发

git clone git@github.com:barcia/coach-memory.git
cd coach-memory
uv sync

配置

创建 .env 文件(参见 .env.example):

OPENROUTER_API_KEY=sk-or-v1-xxxx

# Optional
DATABASE_PATH=~/.local/share/coach/memory.db
变量 必填 默认 描述
OPENROUTER_API_KEY 是 - OpenRouter API密钥,用于生成嵌入
DATABASE_PATH 没有 ~/.local/share/coach/memory.db SQLite数据库路径

嵌入模型是固定的: openai/text-embedding-3-large (3072个维度)通过OpenRouter。

MCP客户端配置

克劳德桌面/克劳德代码/光标

{
  "mcpServers": {
    "Coach Memory": {
      "command": "uvx",
      "args": [
        "--from",
        "git+ssh://git@github.com/barcia/coach-memory",
        "coach-memory"
      ],
      "env": {
        "OPENROUTER_API_KEY": "sk-or-v1-xxxx"
      }
    }
  }
}

本地开发

{
  "mcpServers": {
    "Coach Memory": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/coach-memory", "coach-memory"],
      "env": {
        "OPENROUTER_API_KEY": "sk-or-v1-xxxx"
      }
    }
  }
}

MCP检查员

npx @modelcontextprotocol/inspector uv run coach-memory

可用工具

列表和搜索工具返回 逗号分隔值 令牌效率的格式。单记录工具返回JSON。

记忆

工具 参数 返回 描述
add_memory author, content JSON(内存) 通过自动嵌入生成存储教练见解。
search_memories query, limit? CSV(id,created_at,author,content,distance) 语义向量搜索。
list_memories author?, limit? CSV(id,created_at,author,content) 按逆时间顺序列出记忆。
get_memory memory_id JSON(内存) 按ID检索单个内存
delete_memory memory_id JSON(bool) 永久删除内存及其嵌入。

计划

工具 参数 返回 描述
add_plan planned_at, description, notes? JSON(计划) 安排锻炼。
get_plan plan_id JSON(计划) 按ID获取计划详细信息
list_plans start_date?, end_date?, status?, limit? CSV(id,planned_at,description,notes,status,activity_id) 使用可选筛选器查询计划。
get_today_plan -- CSV(相同) 获取今天安排的所有计划。
get_upcoming_plans days? CSV(相同) 获取未来N天的计划(默认值:7)。
update_plan plan_id, planned_at?, description?, notes?, status?, activity_id? JSON(计划) 更新任何计划字段。关闭反馈回路的关键工具。
delete_plan plan_id JSON(bool) 永久删除计划记录。

运行测试

uv run pytest

技术栈

  • Python 3.12+
  • FastMCP --MCP服务器框架
  • sqlite-vc --SQLite的矢量搜索扩展
  • 派单 --数据验证和序列化
  • OpenAI客户端 --通过OpenRouter嵌入生成

许可证

GPL-3.0