AI助手记忆服务器

Cortex MCP是一款本地服务器,通过Model Context Protocol (MCP)标准将项目历史转化为结构化上下文,为AI助手提供长期记忆功能。

  • by BUGG1N
  • TypeScript
  • 本地部署
  • 6 星标
  • 更新于
在 GitHub 查看 BUGG1N/cortex-mcp

使用说明

Cortex MCP服务器

AI代理的投资组合内存。
将您的真实项目历史转换为任何AI助手都可以实时查询的结构化上下文。

⚠️ 状态:活动MVP --功能齐全,经过测试,但正在积极开发中。欢迎提供反馈和意见。


目录


它是什么

Cortex MCP是一个实现 模型上下文协议(MCP) --允许AI助手安全访问外部数据的开放标准。

它读取关于项目的综合知识(一个轻量级的邻接知识图,映射应用程序、技术和领域之间的关系;模式;观察;开发人员配置文件),并将其公开为 工具、资源和提示 可由任何MCP兼容试剂消耗。

问题

当您在项目中打开Claude、Copilot或Cursor时,代理不知道:

  • 您还有哪些其他项目以及它们之间的联系
  • 你更喜欢哪种堆栈,为什么
  • 你反复使用哪些模式
  • 哪些组件可以重复使用
  • 您对每项技术的真实体验

每节课都从头开始-- 健忘症配对程序设计.

解决方案

Cortex为AI代理提供了相同的功能 长期记忆 作为一名开发人员。它在存储库中积累知识,并使其在每个会话中都能立即访问。

“人工智能是你的镜子——它能更快地揭示你是谁。如果你不称职,它会更快地产生坏事。如果你有能力,它会更快速地产生好事。” --秋田

Cortex的工作原理与 您整个投资组合的“CLAUDE.md” --不是一个项目,而是你整个职业生涯。

问题 无皮质 有皮质
Agent建议一个堆栈 基于流行度的通用堆栈 基于您的真实历史
Agent解决了一个问题 标准解决方案,可能会重新发明轮子 “您已经在X中完成了这项工作,它就在这里”
架构决策 过度工程化(代理从不拒绝) “你的模式是简化,见Y”
会话之间的上下文丢失 每次从零开始 累积决策、模式、陷阱

完全隐私

100%本地,无云,无遥测。你的数据永远不会离开你的机器。


它是如何工作的——三层

使用前请阅读本节。 大多数用户只使用第1层,觉得系统“肤浅”。真正的价值在于第2层和第3层。

Cortex不是被动学习的。它是一个结构化的知识库——你输入的越多,它就越有用。正确的思维模式: AI代理实时查询的投资组合维基.

第1层——自动扫描仪(约为值的20%)

cortex-mcp scan 自动检测:

  • 技术栈(语言、框架、数据库、CI、Docker)
  • 提交频率和贡献者历史
  • 跨存储库的重复模式
  • 初始操作员配置文件

重要限制: 扫描器只看到代码和git历史记录中的内容。它不知道你为什么选择一项技术,你遇到了什么问题,或者你学到了什么。一个项目 1 commit (浅克隆)产生非常差的轮廓。

第2层——通过MCP工具进行治疗(约占价值的60%)

Cortex的真正力量由您在工作会话中提供:

工具 何时使用 示例
add_observation 当你学到一些相关的东西时,找到一个陷阱,衡量一个指标 “准确性瓶颈是数据集大小,而不是架构”
track_decision 每一个架构或产品决策都有其基本原理 “选择REST而不是GraphQL,因为它是简单的CRUD”
add_pattern 当你识别出在项目中重复的东西时 “FastAPI+PostgreSQL+Redis for API with缓存”
start_session 开始任何项目的工作时 自动注入历史上下文
end_session 完成时——包括总结和下一步 在会话之间累积进度
add_skill 对于您重用的提示模板 “如何在Python项目中进行代码审查”

⚠️ 真正的挑战: 第二层是60%的价值所在,但它需要主动记住调用 start_session, track_decision,以及 end_session 每一天。

如果没有刻意的努力,大多数开发人员将无法保持这种习惯。之间的差距 “已安装” 和 “确实有用” 这是真的——Cortex的好坏取决于你对策展的训练。

路线图项目 “基于会话历史的动态提示” 有助于缩小这一差距,但尚未发货。与此同时:设置提醒,或将这些电话作为团队“完成定义”的一部分。

第3层——操作员配置文件(约20%的值)

文件 knowledge/operator-profile.yaml 是开发人员的个人背景。它由扫描仪自动生成,但需要手动策展才能获得真实的内容。直接编辑:

identity:
  name: Your Name
  role: Your Role
  domain: Your areas of expertise
  github: https://github.com/your-username

第三方存储库

您可以添加第三方存储库(公共或私有)作为分析和比较的来源。

  • Cortex将这些信号整合到您的本地上下文中(堆栈、模式、约定、关系)。
  • 这使得建议更具情境性,而不是靠魔法“更聪明”。
  • 有判断力地使用:尊重许可证、保密性,以及你自己的投资组合和外部参考之间的分离。
  • 为了避免混淆。, --name ref-repo-name).

快速开始

先决条件

  • Node.js 20+
  • Git

安装和构建

git clone https://github.com/BUGG1N/cortex-mcp.git cortex-mcp
cd cortex-mcp
npm install
npm run build

生成知识

# 1. Initialize the knowledge directory
npx cortex-mcp init

# 2. Add repositories (local, public GitHub, or private with token)
npx cortex-mcp add ./my-project
npx cortex-mcp add https://github.com/user/public-repo
npx cortex-mcp add https://github.com/user/private-repo --token ghp_xxx

# 3. Scan everything → generates knowledge files automatically
npx cortex-mcp scan

# 4. Start the MCP server
npx cortex-mcp

安全性:令牌仅用于验证Git操作,不会写入克隆存储库的远程URL。

⚠️ 从URL克隆的存储库的历史记录很浅。 这会导致扫描仪报告 1 commit 并且降低了所生成的简档的质量。要修复:

cd repos/repo-name && git fetch --unshallow
cd ../.. && npx cortex-mcp scan

配置您的个人资料(推荐)

第一次扫描后,编辑 knowledge/operator-profile.yaml 添加真实上下文:

identity:
  name: Your Real Name
  role: Your Role (e.g. Founder CTO, Senior Engineer)
  domain: Your domains (e.g. fintech, IoT, healthcare)
  github: https://github.com/your-username

如果没有此选项,配置文件默认为 name: Developer 只有通过提交量才能推断出专业知识。

丰富真实情境(价值所在)

扫描仪生成一个起点。有用的知识来自策展——通过与代理连接的MCP工具:

# Examples of prompts that feed Cortex automatically:
"Record that I chose FastAPI over Flask because I needed native async"
"Add an observation to project-x that the accuracy bottleneck is dataset size, not architecture"
"Start a work session on project-y focused on Sprint 0"

当代理执行这些操作时,Cortex会将知识保存在YAML/JSONL文件中,并在未来的所有会话中提供。

连接到克劳德桌面

添加 claude_desktop_config.json:

{
  "mcpServers": {
    "cortex": {
      "command": "node",
      "args": ["/absolute/path/to/cortex-mcp/dist/cli.js"]
    }
  }
}

窗户:

{
  "mcpServers": {
    "cortex": {
      "command": "node",
      "args": ["C:\\dev\\cortex-mcp\\dist\\cli.js"]
    }
  }
}

macOS/Linux:

{
  "mcpServers": {
    "cortex": {
      "command": "node",
      "args": ["/home/user/cortex-mcp/dist/cli.js"]
    }
  }
}

重新启动克劳德桌面。您将看到“cortex”可用的工具和资源。

连接到VS代码(GitHub Copilot)

选项1——仅限工作区

在 .vscode/mcp.json 在Cortex项目根目录处:

{
  "servers": {
    "cortex": {
      "command": "node",
      "args": ["<path>/dist/cli.js"]
    }
  }
}

选项2——全球(建议用于投资组合)

使用Cortex 任何VS代码窗口 (例如,打开另一个项目,仍然可以访问完整的知识库),创建全局MCP配置文件:

文件位置:

  • 窗户: %APPDATA%\Code\User\mcp.json
  • macOS: ~/Library/Application Support/Code/User/mcp.json
  • Linux: ~/.config/Code/User/mcp.json
{
  "servers": {
    "cortex": {
      "command": "node",
      "args": ["<path>/dist/cli.js"],
      "type": "stdio",
      "env": {
        "CORTEX_ROOT": "<path>"
      }
    }
  }
}

⚠️ CORTEX_ROOT 在全局配置中是必需的。 没有它,Cortex会尝试从当前工作目录中查找根目录(cwd).当VS Code打开另一个项目时 cwd 就是那个项目,Cortex找不到 knowledge/ 文件夹,返回空结果。 CORTEX_ROOT 通过明确指向存储数据的目录来解决这个问题。

替换 <path> 使用到Cortex根的绝对路径(例如。, C:\\dev\\CORTEX 在Windows上, /home/user/cortex 在Linux上)。


日常工作流程

皮质在融入自然发育节奏时最有用,而不仅仅是在初始设置时使用。

开始项目工作

[in the agent chat, Agent mode]
"Start a session on project X focused on [goal]"

start_session 自动注入:项目堆栈、先前观察、相关模式、上次记录的决策和运算符上下文。

工作期间

"Record that I found an N+1 query problem in the /observations endpoint"
"Add the decision to use Alembic instead of manual migrations, reason: traceability"
"Note that the current model accuracy is below the target threshold — the bottleneck is dataset size, not architecture"

完成时

"End the session with summary: [what was done], decisions: [list], next steps: [list]"

数天后返回

"What do you know about project X?" → the agent queries Cortex and summarizes current state
"What were the last decisions on project Y?" → returns curated decisions log
"What is my pattern for Python APIs?" → returns from the knowledge store

定期维护(每周/每两周一次)

# Update GitHub sources
npx cortex-mcp sync

# Re-scan after stack changes
npx cortex-mcp scan

# Diagnostics if something seems wrong
npx cortex-mcp doctor

命令行界面

cortex-mcp [command] [options]

Commands:
  init                    Initialize knowledge directory with empty files
  add <source>            Add a repository source (local path or GitHub URL)
  scan                    Scan all sources and update the knowledge base
  sync                    Update GitHub sources (pull latest)
  sources                 List all configured sources
  remove <name>           Remove a source
  serve                   Start the MCP server (default if no command given)
  doctor                  Diagnose the environment and knowledge files

Adding sources:
  cortex-mcp add ./local/path                  Local directory
  cortex-mcp add https://github.com/u/repo     Public GitHub repo (auto-clones)
  cortex-mcp add https://github.com/u/repo --token ghp_xxx   Private repo
  cortex-mcp add <source> --name my-name       Custom name
  cortex-mcp add <source> --branch develop     Specific branch

Options:
  --root <path>   Root directory (auto-detected from cwd)
  --no-watch      Disable file watching for hot-reload
  --help, -h      Show help
  --version, -v   Show version

环境变量:

  • CORTEX_ROOT --覆盖根目录
  • CORTEX_KNOWLEDGE_PATH --覆盖知识文件路径
  • GITHUB_TOKEN --私有存储库的GitHub令牌(替代 --token)

它通过MCP暴露了什么

工具

阅读 代理在回答问题时会自动使用工具。 策展 工具是积累知识的方式——每次调用都会对YAML/JSONL文件进行持久化处理。

阅读和查询

工具 它做什么
search_portfolio 跨项目、技术和模式的全文搜索
get_app_context 应用程序的完整上下文:堆栈、模式、连接
query_graph 从任何实体浏览知识图
who_uses 列出使用特定技术的应用程序
find_similar_apps 按堆栈重叠查找类似的应用程序
get_portfolio_overview 概述:简介、统计数据、顶尖技术、分布
find_patterns 确定了架构和工作流模式
get_conventions 特定上下文的代码约定
find_reusable 查找可重用的组件/项目
get_tech_radar 技术雷达:采用/实验/评估/保持
suggest_stack 通过推理和风险分析为新项目建议一个堆栈
run_health 知识库的健康检查
get_portfolio_diff 过去N天的投资组合变化
compare_stacks 比较两个项目之间的堆栈
get_module_map 库内导入/模块映射
export_context_bundle 将投资组合导出为单个捆绑包,以便入职
get_file 从公文包存储库中读取文件
grep_codebase 在存储库代码中搜索正则表达式
get_file_tree 存储库的目录结构
list_skills 列出可用技能/提示(内置+自定义)
get_skill 返回完整技能
invoke_skill 通过上下文注入执行技能

策展与知识积累 (主动使用——这才是真正的价值所在)

工具 它的持久性 何时使用
add_observation 观察 observations.jsonl 学习、实际指标、遇到的陷阱
track_decision 有理由的决定 observations.jsonl 每种架构、堆栈或产品选择
add_pattern 可重复使用的图案 patterns.yaml 当你识别出在项目中重复的东西时
update_app_status 状态/健康状况 registry.yaml 项目状态发生重大变化后
start_session 在中打开会话 sessions.jsonl 注入上下文 启动任何工作会话时
end_session 使用摘要和后续步骤结束会话 完成时--不要跳过此步骤
add_skill 中的提示模板 skills.yaml 对于您经常重复使用的提示

资源

URI 内容
cortex://portfolio 完整的投资组合概述(JSON)
cortex://graph 完整的知识图谱
cortex://registry 所有带有元数据的应用程序
cortex://patterns 所有已识别的模式
cortex://profile 开发者简介
cortex://stats 快速数字统计
cortex://app/{id} 任何应用程序的完整上下文
cortex://app/{id}/file/{path} 通过URI访问的存储库文件
cortex://sessions/{appId} 应用程序的会话历史记录
cortex://skills 列出所有技能
cortex://skill/{id} 特定技能的内容

提示

提示 功能
session-context 会话引导——注入配置文件、应用程序、模式、约定
code-review 具有堆栈和模式意识的代码审查
new-project 根据投资组合历史规划新项目

知识存储

Cortex从 knowledge/ 目录。每个文件都有一个来源和预期的实用程序级别:

文件 由您生成 由您策划 内容
knowledge-graph.yaml 汽车 scan 不需要 实体+关系(应用程序、技术、域)
registry.yaml 汽车 scan update_app_status 带有元数据(堆栈、运行状况、状态)的应用程序注册表
operator-profile.yaml 汽车 scan 建议手动编辑 开发人员简介(姓名、域名、专业知识)
patterns.yaml scan (部分) add_pattern 重复出现的架构和工作流模式
observations.jsonl 从不自动 add_observation, track_decision 观察、决策、陷阱-- 最有价值的文件
sessions.jsonl 从不自动 start_session / end_session 每个应用程序的会话历史记录
skills.yaml 从不自动 add_skill 用户定义的技能/提示
sources.yaml add + scan 不需要 注册源(本地路径、GitHub URL)

observations.jsonl 是最重要的文件,也是唯一一个从不自动填充的文件。 一个没有观察的投资组合只检测到堆栈——不记得为什么会这样做。

operator-profile.yaml 是通过以下方式生成的 name: Developer 以及根据承诺量推断的专业知识。 对于真实内容,请手动编辑,添加姓名、域名和个人背景。

示例数据

这 examples/knowledge/ 目录包含一个完整的示例组合,其中包括4个应用程序、14种技术、24种关系、6种模式和7个观察结果。将其用作理解文件结构的参考,或作为您自己作品集的起点。


建筑

cortex-mcp/
├── src/
│   ├── cli.ts                  # CLI entry point (init, add, scan, sync, serve)
│   ├── config.ts               # Config resolution (flags → yaml → env → defaults)
│   ├── index.ts                # Public API exports
│   ├── server.ts               # MCP server (stdio transport)
│   ├── types.ts                # Core TypeScript types
│   ├── engine/
│   │   ├── knowledge-engine.ts # Orchestrator — load, index, query
│   │   ├── yaml-parser.ts      # YAML/JSONL parsers
│   │   ├── search-index.ts     # MiniSearch full-text index
│   │   ├── graph-traversal.ts  # BFS/DFS graph queries
│   │   ├── file-reader.ts      # Repository file reader
│   │   └── file-watcher.ts     # Hot-reload via Chokidar
│   ├── mcp/
│   │   ├── tools/              # MCP tools
│   │   ├── resources/          # MCP resources
│   │   └── prompts/            # MCP prompts
│   ├── scanner/
│   │   ├── index.ts            # Scanner orchestrator
│   │   └── detectors/          # Stack auto-detection
│   │       ├── package-json.ts # Node.js / TypeScript
│   │       ├── python.ts       # Python (pip, poetry, pipenv)
│   │       ├── java.ts         # Java (Maven, Gradle)
│   │       ├── dotnet.ts       # .NET / C#
│   │       ├── go.ts           # Go (go.mod)
│   │       ├── rust.ts         # Rust (Cargo.toml)
│   │       ├── infra.ts        # Terraform, Kubernetes, Helm
│   │       ├── docker.ts       # Docker / containerization
│   │       ├── ci.ts           # CI/CD (GitHub Actions, GitLab, Jenkins)
│   │       └── git.ts          # Git metadata (commits, contributors)
│   ├── sources/
│   │   └── index.ts            # Source manager (local, GitHub)
│   └── writer/
│       └── index.ts            # Knowledge writer (YAML/JSONL persistence)
├── test/                       # 35 test files, 90 tests
├── package.json
├── tsconfig.json
└── tsup.config.ts

设计原则

  1. 零重依赖 --没有数据库,没有Docker,没有云。读取本地文件,通过stdio提供服务。
  2. 综合知识,而非原始代码 --代理接收模式、关系和决策,而不是10000行代码。
  3. 可推广的 --适用于任何存储库集合,不与特定的组合绑定。
  4. 快 --启动时加载到内存中的所有数据。典型响应<100ms。
  5. 隐私第一 --所有数据都保留在您的机器上。没有任何东西被发送到外部。

技术栈

组件 技术
运行时 Node.js 20+
语言 TypeScript(严格,零 any)
MCP SDK @modelcontextprotocol/SDK
YAML YAML(npm)
搜索 MiniSearch(BM25+词汇模糊)
手表 Chokidar(去抖动500毫秒)
构建 tsup(ESM,节点20目标)
测试 Vitest

发展

命令

npm install          # Install dependencies
npm run build        # Compile with tsup
npm run typecheck    # TypeScript check (zero errors expected)
npm run test         # Run tests
npm run dev          # Watch mode

完整贡献指南: 贡献.md

项目规则

  • TypeScript严格 --零 any,没有 @ts-ignore,没有 @ts-expect-error
  • 100%内存数据 启动后--没有外部数据库
  • MCP传输: 标准输入(JSON-RPC)
  • 工具结果 上限为 MAX_ITEMS=10 避免上下文溢出
  • 热重载 通过文件监视器(chokidar,去抖动500ms)
  • Vitest测试 --覆盖范围侧重于关键路径、错误路径和弹性

代码规范

要素 公约
文件 kebab-case.ts
课程 PascalCase
函数/变量 camelCase
常量 UPPER_SNAKE_CASE
进口 ESM(.js 需要延期)

贡献清单

  • []笔试并通过
  • [ ] npm run build 无误
  • [ ] npm run typecheck 零误差
  • [ ] npm test 全通
  • []代码遵循项目惯例
  • []没有 any,没有 @ts-ignore

定位

工具 多仓库 技术图 开发概况 本地MCP 隐私 成本
皮质MCP ✅ ✅ ✅ ✅ ✅ 总计 免费
人类记忆 ❌ ⚠️ ❌ ✅ ✅ 免费
Mem0/OpenMemory ⚠️ ⚠️ ⚠️ ✅ ✅ 选择。 免费增值
Repomix ⚠️ ❌ ❌ ✅ ✅ 免费
源代码图科迪 ✅ ⚠️ ❌ ❌ ✅ 自我 $$$
增强代码 ✅ ✅ ⚠️ ❌ ❌ 云 $$

此表比较的是功能,而不是成熟度。Cortex是一个独立的MVP阶段项目;其他工具有团队、社区和更大的生产历史。

Cortex结合了多仓库扫描+本地技术图+开发人员配置文件+通过本地MCP交付。


用法示例

创建新项目

无皮质:

You: "I need to build a real-time chat app"
Claude: "You can use Socket.IO with Express..."
(Generic advice, no context about your experience)

使用Cortex:

You: "I need to build a real-time chat app"
Claude: "I can see in your portfolio that you have experience with Socket.IO
in 'collab-tool' and 'gaming-platform'. You prefer NestJS for structured APIs.
I can reuse your auth middleware from 'user-service'
and the Redis session pattern from 'marketplace-backend'."

有背景的决策

问题: “这个项目使用GraphQL还是REST?”

用Cortex回答: “看看你的历史:你在12个项目中的2个项目中使用了GraphQL,这两个项目都是具有许多数据关系的复杂仪表板。对于简单的CRUD API,你一直选择REST+Express。这个项目看起来像CRUD,所以REST符合你经验证的模式。”

框架分析(NestJS)

从NestJS中提取知识的完整示例 examples/nestjs-analysis.md --演示了18种技术、企业模式和集成策略的自动检测。


上下文开销

“加载所有这些知识会占用我的上下文窗口吗?”

不,这是证据。

每个会话的令牌预算

元素 大约令牌
工具调用(名称+模式) ~150
start_session 响应(堆栈、最后3个决策、模式、操作员配置文件) ~1200
会话期间的其他工具调用(3–5×) ~600–1000
会话引导总数 ~2,000–2,500

令牌计数按实际值测量 start_session 响应序列化为JSON-RPC。如果你的知识库稀疏,你的数字会略低,如果你有密集的操作员配置文件注释,你的数据会更高。

占上下文窗口的百分比

模型 上下文窗口 Cortex预算 %已使用
克劳德十四行诗3.7/3.5 200000代币 ~2500 ~1.25 %
GPT-4o 128000个代币 ~2500个 ~1.95 %
GitHub Copilot(GPT-4o) 128000个代币 ~2500个 ~1.95 %
双子座2.0闪存盘 1048576个代币 ~2500个 ~0.24 %

投资回报率

对于≈2%的上下文窗口,你会被注入到每个会话中:

  • 活跃项目的完整技术栈
  • 上次记录的架构决策及其基本原理
  • 所有存储库中的累积模式
  • 随时间记录的陷阱和观察结果
  • 您的完整运营商配置文件(域、首选项、约定)

与Repomix的典型代码库转储相比(50000-300000个令牌——20万窗口的25-150%)。Cortex为您提供 知识层 --提炼出的“为什么”和“如何”——成本只是粘贴原始源文件的一小部分。

比率: ~1-2%的上下文窗口→ 投资组合范围内存。这是对上下文投资的50-100倍的回报。


路线图

  • [x] 多堆栈扫描仪(10种语言/平台)
  • [x] 29个MCP工具+资源+提示
  • [x] 在所有处理程序中使用Zod进行运行时验证
  • [x] 35个文件中的90个测试(快乐路径+错误路径+弹性+并发性+CLI e2e+MCP合约+stdio集成)
  • [x] CLI doctor 首次使用诊断
  • [x] GitHub操作CI(节点20+22)
  • [x] 示例数据目录(examples/knowledge/)
  • []嵌入语义搜索(目前为词汇+同义词扩展)
  • []自定义探测器的插件生态系统
  • []本地web仪表板,用于可视化知识图
  • []基于会话历史的动态提示
  • []npm发布(npx cortex-mcp init)

参考文献

资源 链接
模型上下文协议 https://modelcontextprotocol.io/
人类MCP记忆 https://github.com/modelcontextprotocol/servers/tree/main/src/memory
Graphiti(Zep) https://github.com/getzep/graphiti
Mem0 https://github.com/mem0ai/mem0
Repomix https://github.com/yamadashy/repomix

支持

如果Cortex能节省你的时间,可以考虑给我买杯咖啡☕

加密

网络 地址
比特币(BTC) bc1qwvmzcy62c9kcd44zy67s57cn6pktmnctjk9zws
以太坊/EVM(ETH) 0x797eca0D88f92d08Ccc6dd10E3DEcFEacAc511Ce

提示: 使用专门为捐款而创建的钱包——不要使用你的主钱包或交易钱包。对于以太坊,您可以注册一个人类可读的 ENS 名称(例如。 yourname.eth)因此,该地址易于共享和验证。

PIX(巴西)

Chave PIX: 4978dd10-e12d-42e8-8a32-257ad00594e3

您还可以通过以下方式支持该项目:

  • ⭐ 对存储库进行标记
  • 🐛 通过以下方式报告错误或请求功能 问题
  • 🔀 打开拉取请求

许可证

麻省理工学院