返回市场
上下文管理器

上下文管理器

作者:tejpalvirk8 星标更新:2025-04-06

项目介绍

MCP上下文管理器

一组模型上下文协议(MCP)服务器,用于在整个项目生命周期中增强AI模型的持久上下文。每个项目的上下文存储在一个由该领域服务器处理的特定领域的知识图谱中。所有领域的服务器都可以通过中央上下文管理器进行统一访问。

每个领域服务器也是一个独立的MCP服务器,可以在没有上下文管理器的情况下单独使用。

功能

  • 持久上下文:在从构思到生产/发布/完成的过程中,轻松地构建上下文加载上下文删除上下文
  • 高效访问:让AI模型在需要时获取所需的精确上下文
  • 会话管理
    1. 使用开始会话工具来了解过去会话的工作内容
    2. 使用结束会话工具来分析整个会话并更新知识图谱以供未来会话使用
  • 跨领域支持:通过单一接口与多个知识领域合作,包括创建不同领域实体之间的关系

为什么使用知识图谱?

为了释放上下文窗口(性能),并最小化标记成本(效率)。

可用服务器

上下文管理器协调几个特定领域的MCP服务器:

  1. 开发者MCP服务器:软件开发上下文,包含项目、组件和任务等实体。包括状态跟踪(非活跃、活跃、完成)、优先级管理(高、低)以及通过先行关系进行的任务排序。
  2. 项目MCP服务器:项目管理上下文,包含项目、任务和资源等实体。特性包括状态管理(非活跃、活跃、完成)、优先级分配(高、低)以及任务排序能力。
  3. 学生MCP服务器:教育上下文,包含课程、作业和考试等实体。支持状态跟踪(活跃、已完成、待定、放弃)、作业优先级(高、低)以及学习序列的创建。
  4. 质性研究MCP服务器:质性研究上下文,包含研究、参与者和访谈等实体。包括研究活动状态跟踪(活跃、已完成、待定、放弃)、优先级管理(高、低)以及分析顺序。
  5. 量化研究MCP服务器:量化研究上下文,包含数据集、变量和分析等实体。特性包括状态管理(活跃、已完成、待定、放弃)、优先级分配(高、低)以及顺序过程管理。

关于每个领域服务器的详细文档,请参阅其各自目录中的README文件:

上下文管理器的优势

上下文管理器提供:

  • 统一界面:通过单一接口访问所有领域服务器。
  • 智能路由:自动将请求路由到适当的领域服务器。
  • 跨领域上下文:维护不同领域之间的引用。
  • 一致的状态管理:跨领域标准化的状态跟踪方法。
  • 统一的优先级系统:跨不同上下文的一致优先级管理。
  • 集成的顺序流程:跨领域和谐的顺序工作流方法。

实现

上下文管理器使用MCP客户端SDK与特定领域的MCP服务器通信。它:

  1. 维护一个包含各领域服务器连接信息的注册表。
  2. 创建MCP客户端以连接到每个领域服务器。
  3. 根据当前活动领域将请求路由到适当的领域服务器。
  4. 提供跨领域的功能,以便在不同领域之间关联实体。
  5. 确保状态、优先级和顺序关系的一致处理。

路径解析

上下文管理器使用运行时构造的绝对路径来定位领域服务器。如果需要修改领域服务器路径,请更新main/index.ts中的domains数组。

安装及使用

您可以多种方式使用MCP上下文管理器:

使用npx(推荐)

直接运行:

npx github:tejpalvirk/contextmanager

全局安装

全局安装以使所有服务器可用作命令:

npm install -g github:tejpalvirk/contextmanager

然后运行:

mcp-server-contextmanager

或者直接运行特定的领域服务器:

contextmanager-developer
contextmanager-project
contextmanager-student
contextmanager-qualitativeresearch
contextmanager-quantitativeresearch

克隆并从源代码构建

用于开发或定制:

git clone https://github.com/tejpalvirk/contextmanager.git
cd contextmanager
npm install
npm run build

然后运行:

node main/index.js

命令行参数

上下文管理器和领域服务器接受以下命令行参数:

# 在特定端口上运行(默认:3000)
npx github:tejpalvirk/contextmanager --port 3001

# 启用调试日志
npx github:tejpalvirk/contextmanager --debug

# 指定配置文件
npx github:tejpalvirk/contextmanager --config ./my-config.json

# 只运行特定的领域服务器
npx github:tejpalvirk/contextmanager --domains developer,project

环境变量

每个领域服务器支持以下环境变量来自定义数据存储位置:

  • MEMORY_FILE_PATH:知识图谱数据存储路径
    • 可以是绝对路径或相对路径(相对路径使用当前工作目录)
    • 默认值:<domain_directory>/memory.json
  • SESSIONS_FILE_PATH:会话数据存储路径
    • 可以是绝对路径或相对路径(相对路径使用当前工作目录)
    • 默认值:<domain_directory>/sessions.json

示例用法:

# 将数据存储在当前目录
MEMORY_FILE_PATH="./my-dev-memory.json" SESSIONS_FILE_PATH="./my-dev-sessions.json" npx github:tejpalvirk/contextmanager

# 将数据存储在特定位置(绝对路径)
MEMORY_FILE_PATH="/path/to/data/developer-memory.json" npx github:tejpalv
virk/contextmanager

# 将数据存储在用户的主目录
MEMORY_FILE_PATH="$HOME/contextmanager/memory.json" npx github:tejpalvirk/contextmanager

与领域服务器交互

领域管理

使用设置活动领域工具选择您想要工作的领域:

设置活动领域(领域="developer")

会话管理

为活动领域启动一个新的会话:

开始会话(领域="developer")

完成时结束会话:

结束会话(会话ID="session_id_here", 阶段="装配", 阶段数=6, 总阶段数=6, 是否需要下一阶段=false)

上下文操作

为活动领域构建上下文:

构建上下文(类型="实体", 数据={...})

加载特定实体的上下文:

加载上下文(实体名称="MyProject", 实体类型="项目")

删除上下文:

删除上下文(类型="实体", 数据={...})

实体状态和优先级管理

为实体分配状态:

构建上下文(类型="关系", 数据=[
  { from: "登录功能", to: "活跃", 关系类型: "具有状态" }
])

设置实体优先级:

构建上下文(类型="关系", 数据=[
  { from: "修复错误", to: "高", 关系类型: "具有优先级" }
])

定义顺序关系:

构建上下文(类型="关系", 数据=[
  { from: "数据模型", to: "用户界面", 关系类型: "先于" }
])

示例:使用开发者领域

// 设置活动领域为开发者
设置活动领域(领域="developer")

// 启动新的会话
开始会话(领域="developer")

// 创建新的项目实体
构建上下文(类型="实体", 数据={
  "实体类型": "项目",
  "名称": "MyProject",
  "描述": "一个示例项目",
  "语言": "TypeScript",
  "框架": "React"
})

// 加载项目的上下文
加载上下文(实体名称="MyProject", 实体类型="项目")

// 为项目创建组件,并将其状态设置为活跃
构建上下文(类型="实体", 数据={
  "实体类型": "组件",
  "名称": "AuthService",
  "项目": "MyProject",
  "描述": "身份验证服务组件",
  "依赖项": ["UserService"]
})

构建上下文(类型="关系", 数据=[
  { from: "AuthService", to: "活跃", 关系类型: "具有状态" },
  { from: "AuthService", to: "高", 关系类型: "具有优先级" }
])

跨领域操作

在不同领域之间创建实体关系:

跨领域关联(来源领域="developer", 来源实体="ProjectX", 目标领域="project", 目标实体="ProjectX", 关系类型="管理")

示例:跨领域集成

// 创建开发者项目和项目管理任务之间的关系
跨领域关联(
  来源领域="developer", 
  来源实体="MyProject", 
  目标领域="project", 
  目标实体="ProjectX", 
  关系类型="管理"
)

与Claude集成

在Claude桌面版中,在设置中配置上下文管理器:

{
  "mcpServers": {
    "contextmanager": {
      "命令": "npx",
      "参数": [
        "-y",
        "github:tejpalvirk/contextmanager"
      ],
      "选项": {
        "端口": 3000,
        "领域": ["developer", "project", "student"]
      }
    }
  }
}

故障排除

常见问题

  1. 端口已被占用
    错误:监听EADDRINUSE:地址已在使用中:::3000
    
    解决方案:使用--port选项指定不同的端口。
  2. 连接被拒绝
    错误:连接ECONNREFUSED 127.0.0.1:3000
    
    解决方案:确保服务器正在运行并且可以访问指定地址。
  3. 找不到领域服务器
    错误:未找到领域服务器'developer'
    
    解决方案:检查领域名称是否正确且服务器已注册在上下文管理器中。
  4. 路径解析错误
    错误:无法找到模块'...'
    
    解决方案:确保main/index.ts中的domains数组中的所有路径都正确指定。
  5. 方法未找到
    错误:在领域'developer'中未找到方法'buildcontext'
    
    解决方案:验证方法名称并确保它受领域服务器支持。
  6. 无效的状态或优先级值
    错误:无效的状态值'in_progress'。有效值为:非活跃、活跃、完成
    
    解决方案:确保您使用的是特定领域正确的状态值。

下一步

  • 将JSON替换为YAML以提高20-30%的标记效率
  • 探索Markdown中的知识图谱

版本控制

此包遵循语义版本控制

  • 主要版本:不兼容的API更改
  • 次要版本:向后兼容的功能添加
  • 补丁版本:向后兼容的错误修复

当前版本:1.0.0

贡献

欢迎贡献!请遵循以下步骤:

  1. 分叉仓库
  2. 创建功能分支(git checkout -b feature/amazing-feature
  3. 提交您的更改(git commit -m '添加一些惊人的功能'
  4. 推送到分支(git push origin feature/amazing-feature
  5. 打开拉取请求

编码标准

  • 对于所有新代码使用TypeScript
  • 遵循现有的代码风格
  • 为新功能添加测试
  • 根据需要更新文档

开发

先决条件

  • Node.js v16或更高版本
  • npm v7或更高版本

构建

npm install
npm run build

测试

npm test

许可证

MIT

致谢

该项目基于Anthropic为Claude创建的模型上下文协议。