CodifierMCP
人工智能驱动发展的制度记忆——跨组织角色
CodifierMcp是一个远程MCP(模型上下文协议)服务器,为AI助手提供共享、持久的组织知识。它捕获任何团队成员的学习、决策和研究结果,并将其呈现给任何其他成员,从而形成一个反馈循环,使组织随着时间的推移变得更加智能。
](https://nodejs.org/)  
______________________________________________________________________
目录
______________________________________________________________________
概述
CodifierMcp弥合了人工智能助理与组织机构知识之间的差距。AI助手可以:
- 获取上下文:从共享知识库中检索相关规则、指南、决策和研究结果
- 更新存储器:保存在开发或研究过程中发现的新见解、模式和学习成果
- 跟随技能:引导式对话式工作流程,生成结构化工件(规则、路线图、研究报告)
- 与数据源集成:通过RepoMix拉入回购代码,并通过Athena查询数据仓库
这创造了一个良性循环,开发人员会话中的知识为研究人员的分析提供了信息,反之亦然。
关键能力
- 组织范围的知识持久性 --从任何人、任何角色、任何项目那里学到的知识都保存在一个共享的、可搜索的知识库中。六个月后,开发人员对遗留API的发现为研究人员的分析提供了信息。
- 经过身份验证的专有数据连接器 --RepoMix用于私有代码存储库;AWS Athena用于数据仓库。未来:SharePoint、Confluence、谷歌云端硬盘。
- 本地第一会话内存 --在任何会议中捕捉学习、陷阱、惯例和见解。在本地查看和编辑
docs/MEMORY.md,然后按需同步到共享KB。每个角色都能带来学习;内存捕获是基础能力。
- 通过技能引导减少摩擦 --特定角色的对话工作流。开发人员通过规则和路线图进行项目初始化。研究人员获得数据发现和综合。法学硕士阅读技能并指导对话——没有断断续续的循序渐进的协议。
- 多表面接入 --通过MCP集成开发环境(克劳德代码、光标、克劳德桌面、风帆、双子座、Codex、协作)。CLI安装程序(
npx codifier init).未来:团队机器人。
建筑
┌──────────────────────────────────────────────────────┐
│ MCP Clients │
│ (Claude Code, Cursor, Claude Desktop, Windsurf, │
│ Gemini, Codex, Cowork) │
│ │
│ Skills + docs/MEMORY.md ← npx codifier init │
│ Slash Commands (.claude/commands/ or .cursor/rules/)│
└──────┬──────────────────────────┬────────────────────┘
│ stdio (local) │ SSE/HTTP (remote)
↓ ↓
┌─────────────────────────────────────────┐
│ CodifierMcp Server │
│ ├── Transport: stdio | StreamableHTTP | SSE │
│ ├── Auth: Bearer token middleware │
│ └── MCP Tools (6) │
│ fetch_context / update_memory │
│ delete_memory / manage_projects │
│ pack_repo / query_data │
└──────┬──────────────────────────────────┘
│
┌────┴────────────────────────────────┐
│ Supabase (PostgreSQL + pgvector) │
│ projects / repositories / memories │
│ api_keys │
└─────────────────────────────────────┘
│
Direct Integrations:
├── RepoMix (npm programmatic API)
└── AWS Athena MCP (sidecar subprocess)技能是客户端的。 每个技能都是LLM在本地读取的标记指令文件。LLM驱动对话,并仅调用MCP工具进行数据操作。没有服务器端会话状态。
用例
- 项目初始化:按照初始化项目技能从描述、SOW或现有代码库生成Rules.md、Evals.md、Requirements.md和Roadmap.md
- 布朗菲尔德登船:使用RepoMix打包现有仓库并生成架构摘要
- 研究与分析:定义研究目标,发现Athena模式,执行查询,综合发现
- 跨角色知识流:研究人员的发现(存储为
research_finding)由开发人员通过以下方式检索fetch_context初始化相关项目时 - 入职AI助理:新的AI会话会自动学习团队的惯例和决策
- 会话内存捕获:从任何会议中汲取经验教训——陷阱、惯例、见解——
docs/MEMORY.md通过/remember,然后通过以下方式同步到共享KB/push-memory用于跨团队访问
______________________________________________________________________
先决条件
远程安装(推荐)
不需要本地设置。您需要:
- API身份验证令牌 --从您的Codifier部署管理员处获取
- MCP兼容AI客户端 --克劳德代码、光标、克劳德桌面、风帆、双子座、Codex或协作
在一个命令中安装Skills和MCP配置:
npx codifier init这种脚手架技能 .codifier/skills/,将斜杠命令写入正确的客户端位置,提示您输入服务器URL和API密钥,写入 .codifier/config.json 并验证连接。
本地/自托管先决条件
- Node.js 18+ —
node --version - Supabase项目 --免费套餐 网站 supabase.com;需要项目URL和服务角色密钥
- (可选)AWS凭据 --使用Athena进行研究和分析技能
- (可选)GitHub/GitLab代币 --通过RepoMix访问私有回购
______________________________________________________________________
安装
远程安装(推荐)
# Scaffold Skills and MCP config into your project
npx codifier initCLI会提示输入您的Codifier服务器URL(默认值: https://codifier-mcp.fly.dev)和API密钥,则:
- 将所有技能复制到
.codifier/skills/ - 创建
docs/MEMORY.md用于会话内存捕获 - 将斜线命令写入
.claude/commands/(克劳德代码),.cursor/rules/(光标),或.codifier/commands/(通用) - 写
.mcp.json(Claude Code)或等效的客户端配置 - 通过以下方式验证MCP连接
GET /health
Cowork(克劳德桌面插件)
npx codifier init --client cowork这创建了一个 .claude-plugin/ 目录与 plugin.json 并使用YAML frontmatter复制命令文件(description, argument-hint)因此,Cowork在其命令下拉列表中注册了它们。从Claude Desktop中的项目目录安装插件。
或者,手动配置MCP连接:
# Claude Code CLI
claude mcp add --transport http codifier https://codifier-mcp.fly.dev/mcp \
--header "Authorization: Bearer "本地/自托管安装
# 1. Clone
git clone https://github.com/yourusername/codifierMcp.git
cd codifierMcp
# 2. Install dependencies
npm install
# 3. Build
npm run build
# 4. Configure
cp .env.example .env
# Edit .env with your values______________________________________________________________________
配置
环境变量
# Data Store (supabase is default; confluence is legacy)
DATA_STORE=supabase
# Supabase (required when DATA_STORE=supabase)
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
# Transport mode
TRANSPORT_MODE=http # or stdio for local MCP clients
# HTTP auth (required when TRANSPORT_MODE=http)
HTTP_PORT=3000
API_AUTH_TOKEN=your-secure-random-token # openssl rand -base64 32
# Logging
LOG_LEVEL=info # debug | info | warn | error
# RepoMix — private repo access (optional)
GITHUB_TOKEN=ghp_xxxx
GITLAB_TOKEN=glpat-xxxx
BITBUCKET_TOKEN=xxxx
# AWS Athena — Research & Analyze Skill (optional)
AWS_REGION=us-east-1
AWS_ACCESS_KEY_ID=xxxx
AWS_SECRET_ACCESS_KEY=xxxx
ATHENA_S3_OUTPUT_LOCATION=s3://your-bucket/athena-results/
ATHENA_DATABASE=dev_stage_mfour
ATHENA_WORKGROUP=primary| 变量 | 必填 | 描述 |
|---|---|---|
DATA_STORE | 没有 | supabase (默认)或 confluence |
SUPABASE_URL | 何时 supabase | Supabase项目URL |
SUPABASE_SERVICE_ROLE_KEY | 何时 supabase | 服务角色密钥(非匿名密钥) |
TRANSPORT_MODE | 没有 | stdio (默认)或 http |
HTTP_PORT | 否 | HTTP服务器的端口(默认值:3000) |
API_AUTH_TOKEN | 何时 http | 用于身份验证的承载令牌 |
GITHUB_TOKEN | 对于私有仓库 | 具有仓库读取权限的GitHub PAT |
AWS_* / ATHENA_* | 用于研究和分析 | AWS凭据和Athena配置 |
ATHENA_DATABASE | 否 | Athena数据库/目录名称(默认值: "dev_stage_mfour");可超过每 query_data 呼叫 |
MCP客户端配置
克劳德代码(CLI)
# Remote (recommended — or use npx codifier init)
claude mcp add --transport http codifier https://codifier-mcp.fly.dev/mcp \
--header "Authorization: Bearer "
# Local
claude mcp add --transport http codifier http://localhost:3000/mcp \
--header "Authorization: Bearer "克劳德桌面版
Claude Desktop需要 mcp-remote 代理连接到SSE服务器:
{
"mcpServers": {
"codifier": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://codifier-mcp.fly.dev/mcp",
"--header",
"Authorization:Bearer "
]
}
}
}游标/其他MCP客户端
在以下位置配置为StreamableHTTP服务器 https://codifier-mcp.fly.dev/mcp 随着 Authorization: Bearer 头球
______________________________________________________________________
MCP工具
Codifier通过MCP协议公开了6个工具:
| 工具 | 说明 |
|---|---|
fetch_context | 从按以下条件筛选的KB中检索内存 project_id, memory_type (规则、文件、api_connect、学习、研究查找)和/或 tags |
update_memory | 在活动项目范围内创建或更新内存 |
delete_memory | 通过以下方式删除内存 id 和 project_id |
manage_projects | 创建、列出或切换活动项目;所有后续调用都仅限于此 |
pack_repo | 通过RepoMix压缩远程存储库,并将其作为版本快照存储在 repositories 表(本地路径被拒绝——服务器在Fly.io上远程运行) |
query_data | 对雅典娜执行操作: list-tables (模式发现), describe-tables (列元数据), execute-query (允许SELECT和WITH/CTE查询)。接受可选 database 参数覆盖 ATHENA_DATABASE 一个是电话。 |
内存类型
| 类型 | 描述 |
|---|---|
rule | 项目惯例、安全模式、编码标准 |
document | 技术规格、ADR、运行手册、最佳实践 |
api_contract | 端点规范、模式、身份验证要求 |
learning | 在人工智能辅助开发过程中获得的见解 |
research_finding | 研究与分析会议的数据分析结果 |
______________________________________________________________________
技能
技能是客户端的、与模型无关的代理工作流——LLM在本地读取的markdown指令文件。LLM驱动对话,并仅调用MCP工具进行数据操作。步骤之间没有服务器端会话状态或协议往返。
运行后 npx codifier init,技能生活 .codifier/skills/ 在您的项目中(或 skills/ 在Cowork的项目根源)。在中删除命令 .claude/commands/ (或您的客户的等效工具)激活每个技能。
skills/shared/codifier-tools.md 是一份参考文件,涵盖了所有6个MCP工具、它们的参数和使用模式。每个技能都引用它。
记忆技能(所有角色)
内存捕获是Codifier的基本功能——每个用例都会产生值得持久的学习,无论它是否产生结构化工件。
捕获会话(/remember)
引导和组织课程学习 docs/MEMORY.md.没有MCP调用--仅本地文件。
工作流程: 引导用户学习→ 分类(架构、gotcha、约定、工具、数据、流程)→ 对现有条目进行数据删除→ 附加到 docs/MEMORY.md
推送内存(/push-memory)
将未同步的本地学习同步到具有幂等性的共享知识库 [kb:] 注释。
工作流程: 阅读 docs/MEMORY.md → 识别没有 [kb:] 前缀→ 预览并确认→ call update_memory 每项→ 将返回的ID写回作为注释
召回(/recall)
展示本地和共享的团队学习。本地召回是即时的(无MCP呼叫);共享知识库召回使用 fetch_context 按当前任务上下文过滤。
开发人员技能
初始化项目(/codify)
适用于绿地和棕地项目。生成四个持久化到共享知识库的工件。
工作流程: 收集项目名称和描述→ 可选择接受SOW→ 可选择提供仓库URL→ 通过以下方式打包存储库 pack_repo → 生成Rules.md→ 生成Evals.md→ 生成需求.md→ 生成Roadmap.md→ 通过以下方式持久化所有工件 update_memory
上下文感知生成:
| 场景 | 使用的上下文 | 生成器行为 |
|---|---|---|
| 绿地+SOW | 描述+SOW | SOW约束和标准中的规则 |
| 绿地,无SOW | 仅描述 | 最低脚手架规则 |
| 棕地+SOW | 描述+SOW+回购快照 | 目标状态规则;SOW优先于现有模式 |
| Brownfield,无SOW | 描述+仓库快照 | 从现有代码库模式中提取的规则 |
布朗菲尔德机载(/onboard)
打包现有的仓库,并以最少的仪式生成架构摘要。
工作流程: 收集仓库URL→ call pack_repo 对于每一个→ 存储版本化快照→ 生成架构摘要→ 通过以下方式坚持学习 update_memory
研究员技能
研究与分析(/research)
连接到Athena,探索数据,执行查询,综合发现。
工作流程: 确定研究目标→ 提供上下文→ 通过以下方式发现Athena模式 query_data list-tables → 选择相关表格→ 通过以下方式描述模式 query_data describe-tables → 生成SQL查询(执行前的用户评论)→ 通过以下方式执行已批准的查询 query_data execute-query → 综合研究结果→ 生成研究发现.md→ 坚持作为 research_finding 回忆通过 update_memory
______________________________________________________________________
远程服务器(HTTP模式)
快速开始
# Generate auth token
export API_AUTH_TOKEN=$(openssl rand -base64 32)
# Start in HTTP mode
TRANSPORT_MODE=http \
HTTP_PORT=3000 \
API_AUTH_TOKEN=$API_AUTH_TOKEN \
SUPABASE_URL=https://your-project.supabase.co \
SUPABASE_SERVICE_ROLE_KEY=your-key \
node dist/index.js端点
| 端点 | 方法 | 身份验证 | 描述 |
|---|---|---|---|
/health | GET | 否 | 健康检查--返回 {"status":"ok"} |
/.well-known/oauth-authorization-server | GET | 否 | OAuth授权服务器元数据(MCP SDK 1.7+发现) |
/.well-known/oauth-protected-resource | GET | 否 | OAuth保护的资源元数据 |
/mcp | POST | 是 | 流式HTTP传输——无状态(MCP协议2025-03-26);GET/DELETE返回405 |
/sse | GET | 是 | 传统客户端的SSE传输 |
/messages | POST | 是 | SSE消息端点 |
认证
除以下端点外的所有端点 /health, /.well-known/*,以及 OPTIONS 飞行前请求要求:
Authorization: Bearer 没有有效令牌的请求将收到 401 使用OAuth标准错误正文进行响应:
{ "error": "unauthorized", "error_description": "..." }______________________________________________________________________
发展
项目结构
codifierMcp/
├── src/
│ ├── index.ts # Entry point (transport branching)
│ ├── config/
│ │ └── env.ts # Zod-validated configuration
│ ├── http/
│ │ ├── server.ts # Express server (StreamableHTTP + SSE)
│ │ └── auth-middleware.ts # Bearer token authentication
│ ├── datastore/
│ │ ├── interface.ts # IDataStore abstraction
│ │ ├── types.ts # Shared datastore types
│ │ ├── factory.ts # createDataStore() factory
│ │ ├── supabase-datastore.ts # Supabase implementation (default)
│ │ ├── supabase-client.ts # Supabase client wrapper
│ │ ├── supabase-types.ts # Supabase type definitions
│ │ ├── atlassian-datastore.ts # Confluence implementation (legacy)
│ │ ├── confluence-client.ts # Confluence REST API client
│ │ ├── confluence-types.ts # Confluence type definitions
│ │ └── content-parser.ts # Content parsing utilities
│ ├── mcp/
│ │ ├── server.ts # Registers exactly 6 tools
│ │ ├── schemas.ts # Zod schemas for tool parameters
│ │ └── tools/ # 6 tool implementations
│ │ ├── fetch-context.ts
│ │ ├── update-memory.ts
│ │ ├── delete-memory.ts
│ │ ├── manage-projects.ts
│ │ ├── pack-repo.ts
│ │ └── query-data.ts
│ ├── integrations/
│ │ ├── repomix.ts # RepoMix programmatic API wrapper
│ │ └── athena.ts # Athena MCP sidecar client
│ ├── services/
│ │ ├── context-service.ts # Rule retrieval with relevance scoring
│ │ └── memory-service.ts # Memory enrichment and storage
│ └── utils/
│ ├── logger.ts # Logging (stderr only)
│ └── errors.ts # Custom error classes
├── skills/
│ ├── shared/
│ │ └── codifier-tools.md # All 6 MCP tools reference
│ ├── capture-session/
│ │ └── SKILL.md
│ ├── push-memory/
│ │ └── SKILL.md
│ ├── initialize-project/
│ │ ├── SKILL.md
│ │ └── templates/
│ ├── brownfield-onboard/
│ │ └── SKILL.md
│ └── research-analyze/
│ ├── SKILL.md
│ └── templates/
├── commands/ # Slash commands (YAML frontmatter for Cowork registration)
│ ├── codify.md # /codify slash command
│ ├── onboard.md # /onboard slash command
│ ├── research.md # /research slash command
│ ├── remember.md # /remember slash command
│ ├── push-memory.md # /push-memory slash command
│ └── recall.md # /recall slash command
├── cli/
│ ├── bin/codifier.ts # CLI entry point
│ ├── detect.ts # LLM client detection
│ ├── init.ts # npx codifier init
│ ├── update.ts # npx codifier update
│ ├── add.ts # npx codifier add
│ └── doctor.ts # npx codifier doctor
├── supabase/
│ └── migrations/
│ ├── 001_initial_schema.sql
│ └── 002_v2_schema.sql # Drops sessions/insights; v2.0 schema
├── docs/
│ ├── rules.yaml # Project development rules
│ ├── evals.yaml # Rule evaluations
│ └── MEMORY.md # Session learnings (local-first, synced to KB via /push-memory)
├── Dockerfile
├── fly.toml
└── package.json命令
npm install # Install dependencies
npm run build # Compile TypeScript → dist/
npm run dev # Build + run (stdio mode)
npm run watch # Watch mode (rebuild on changes)添加新功能
- 审查
docs/rules.yaml编写代码之前 - 跟随
IDataStore任何存储更改的界面 - 使用来自的自定义错误类
utils/errors.ts - 仅记录到stderr(从不输出stdout)——MCP使用stdout进行协议
- 使用Zod模式验证所有输入
src/mcp/schemas.ts - 使用严格的TypeScript;需要显式类型
______________________________________________________________________
建筑细部
数据模式
迁移 002_v2_schema.sql (2026年2月24日申请)放弃了 sessions 和 insights 桌子。活动架构有4个表:
| 表 | 关键字段 | 目的 |
|---|---|---|
projects | id、名称、组织、元数据 | 顶级容器;项目范围内的所有实体 |
repositories | id、project_id、url、快照、file_tree、version_label | 来自RepoMix的版本化仓库快照 |
memories | id、project_id、memory_type、标题、内容、标签、置信度、嵌入、source_role | 所有知识实体(规则、文档、学习、发现) |
api_keys | id,project_id,key_hash | API密钥→ RLS的项目映射 |
检索策略
最有价值球员:精确匹配过滤 project_id, memory_type,以及 tags嵌入在写入时存储,但向量相似性搜索推迟到v2.1。
v2.1:混合检索——精确匹配过滤器+通过pgvector进行向量排名。
为什么使用技能而不是服务器端PlaybookRunner
最初的v2.0设计使用了服务器端 PlaybookRunner 带有a的状态机 sessions 桌子, run_playbook,以及 advance_step 工具。它在2026年2月被替换,原因有三:
- 消除往返:每个剧本步骤都需要一个MCP调用。技能允许LLM在其上下文窗口中管理工作流状态——无需额外调用步骤转换工具。
- 模型不可知论:技能标记文件适用于任何LLM客户端。YAML脚本格式将生成绑定到Codifier的服务器端提示程序集。
- 简化服务器:6个无状态工具更容易推理、测试和扩展。Fly.io部署始终运行(
min_machines_running = 1,auto_stop_machines = false)--客户无冷启动延迟。
______________________________________________________________________
路线图
v2.1
| 特性 | 描述 |
|---|---|
| 语义搜索 | 启用矢量相似性 memories.embedding;混合检索 |
| 技能经理/雨伞MCP | Confluence、SharePoint、GitHub、Jira连接器的代理模式 |
| 研究人员数据来源 | SharePoint+Google Drive作为研究和分析中的可选来源 |
| 建筑师技能 | 技术评估、系统建模、ADR |
| 战略家技能 | 路线图规划、竞争分析 |
| 团队机器人 | 只读知识库查询+技能步骤作为自适应卡片 |
| SSO/入口ID | 用组织SSO替换API密钥验证 |
| 记忆关系 | 关系查询中内存之间的图边 |
______________________________________________________________________
额外资源
- MCP文件: 模型上下文协议.io
- Supabase: Supabase.com/docs
- RepoMix: https://yamadashy/repomix
- AWS雅典娜MCP:
- TypeScript手册: typescriptlang.org/docs
______________________________________________________________________
使用克劳德代码构建
