MCP Context Manager

MCP Context Manager

使用知识图谱提高效率的 MCP 服务器,用于在工作会话中保持持久上下文。

tejpalvirk

研究与数据
访问服务器

README

MCP 上下文管理器

一系列模型上下文协议 (MCP) 服务器,旨在通过项目生命周期中各个工作会话的持久上下文来增强 AI 模型。

每个项目的上下文都存储在由该领域的服务器处理的特定领域知识图中。所有领域服务器都可以通过提供统一访问的中央上下文管理器进行管理。

每个领域服务器也是一个独立的 MCP 服务器,您可以单独使用它,而无需上下文管理器。

特性

  • 持久上下文:在您从想法到生产/发布/完成的过程中,可以轻松地 buildcontextloadcontextdeletecontext
  • 高效访问:让 AI 模型在需要时获取它们需要的确切上下文
  • 会话管理
    1. startsession 工具,用于概述您在过去会话中所做的工作
    2. endsession 工具,用于分析整个会话并更新知识图以供未来会话使用
  • 跨领域支持:通过单个界面处理多个知识领域,包括在不同领域中的实体之间创建关系

为什么选择知识图?

为了释放上下文窗口(性能)并最大限度地降低 token 成本(效率)。

可用服务器

contextmanager 协调多个特定领域的 MCP 服务器:

  1. 开发者 MCP 服务器:软件开发上下文,包含项目、组件和任务等实体。包括状态跟踪(非活动、活动、完成)、优先级管理(高、低)以及通过 precedes 关系的任务排序。

  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 运行:

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:tejpalvirk/contextmanager

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

与领域服务器交互

领域管理

使用 setActiveDomain 工具选择要使用的领域:

setActiveDomain(domain="developer")

会话管理

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

startsession(domain="developer")

完成后结束会话:

endsession(sessionId="session_id_here", stage="assembly", stageNumber=6, totalStages=6, nextStageNeeded=false)

上下文操作

为活动领域构建上下文:

buildcontext(type="entities", data={...})

加载特定实体的上下文:

loadcontext(entityName="MyProject", entityType="project")

删除上下文:

deletecontext(type="entities", data={...})

实体状态和优先级管理

为实体分配状态:

buildcontext(type="relations", data=[
  { from: "LoginFeature", to: "active", relationType: "has_status" }
])

设置实体优先级:

buildcontext(type="relations", data=[
  { from: "BugFix", to: "high", relationType: "has_priority" }
])

定义顺序关系:

buildcontext(type="relations", data=[
  { from: "DataModel", to: "UserInterface", relationType: "precedes" }
])

示例:使用开发者领域

// 将活动领域设置为 developer
setActiveDomain(domain="developer")

// 启动一个新会话
startsession(domain="developer")

// 创建一个新的项目实体
buildcontext(type="entities", data={
  "entityType": "project",
  "name": "MyProject",
  "description": "A sample project",
  "language": "TypeScript",
  "framework": "React"
})

// 加载项目的上下文
loadcontext(entityName="MyProject", entityType="project")

// 为项目创建一个组件并将其状态设置为 active
buildcontext(type="entities", data={
  "entityType": "component",
  "name": "AuthService",
  "project": "MyProject",
  "description": "Authentication service component",
  "dependencies": ["UserService"]
})

buildcontext(type="relations", data=[
  { from: "AuthService", to: "active", relationType: "has_status" },
  { from: "AuthService", to: "high", relationType: "has_priority" }
])

跨领域操作

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

relateCrossDomain(fromDomain="developer", fromEntity="ProjectX", toDomain="project", toEntity="ProjectX", relationType="manages")

示例:跨领域集成

// 创建开发者项目和项目管理任务之间的关系
relateCrossDomain(
  fromDomain="developer", 
  fromEntity="MyProject", 
  toDomain="project", 
  toEntity="ProjectX", 
  relationType="manages"
)

与 Claude 集成

在 Claude Desktop 中,在设置中配置上下文管理器:

{
  "mcpServers": {
    "contextmanager": {
      "command": "npx",
      "args": [
        "-y",
        "github:tejpalvirk/contextmanager"
      ],
      "options": {
        "port": 3000,
        "domains": ["developer", "project", "student"]
      }
    }
  }
}

故障排除

常见问题

  1. 端口已被占用

    Error: listen EADDRINUSE: address already in use :::3000
    

    解决方案:使用 --port 选项指定不同的端口。

  2. 连接被拒绝

    Error: connect ECONNREFUSED 127.0.0.1:3000
    

    解决方案:确保服务器正在运行并且可以在指定的地址访问。

  3. 未找到领域服务器

    Error: Domain server 'developer' not found
    

    解决方案:检查域名是否正确,并且服务器已在上下文管理器中注册。

  4. 路径解析错误

    Error: Cannot find module '...'
    

    解决方案:确保 main/index.tsdomains 数组中的所有路径都已正确指定。

  5. 未找到方法

    Error: Method 'buildcontext' not found in domain 'developer'
    

    解决方案:验证方法名称,并确保该领域服务器支持该方法。

  6. 无效的状态或优先级值

    Error: Invalid status value 'in_progress'. Valid values are: inactive, active, complete
    

    解决方案:确保您为特定领域使用正确的状态值。

下一步

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

版本控制

此软件包遵循 语义版本控制

  • MAJOR:不兼容的 API 更改
  • MINOR:向后兼容的功能添加
  • PATCH:向后兼容的错误修复

当前版本:1.0.0

贡献

欢迎贡献!请按照以下步骤操作:

  1. Fork 存储库
  2. 创建一个功能分支 (git checkout -b feature/amazing-feature)
  3. 提交您的更改 (git commit -m 'Add some amazing feature')
  4. 将分支推送到远程仓库 (git push origin feature/amazing-feature)
  5. 打开一个 Pull Request

编码标准

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

开发

前提条件

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

构建

npm install
npm run build

测试

npm test

许可证

MIT

致谢

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

推荐服务器

Crypto Price & Market Analysis MCP Server

Crypto Price & Market Analysis MCP Server

一个模型上下文协议 (MCP) 服务器,它使用 CoinCap API 提供全面的加密货币分析。该服务器通过一个易于使用的界面提供实时价格数据、市场分析和历史趋势。 (Alternative, slightly more formal and technical translation): 一个模型上下文协议 (MCP) 服务器,利用 CoinCap API 提供全面的加密货币分析服务。该服务器通过用户友好的界面,提供实时价格数据、市场分析以及历史趋势数据。

精选
TypeScript
MCP PubMed Search

MCP PubMed Search

用于搜索 PubMed 的服务器(PubMed 是一个免费的在线数据库,用户可以在其中搜索生物医学和生命科学文献)。 我是在 MCP 发布当天创建的,但当时正在度假。 我看到有人在您的数据库中发布了类似的服务器,但还是决定发布我的服务器。

精选
Python
mixpanel

mixpanel

连接到您的 Mixpanel 数据。 从 Mixpanel 分析查询事件、留存和漏斗数据。

精选
TypeScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Nefino MCP Server

Nefino MCP Server

为大型语言模型提供访问德国可再生能源项目新闻和信息的能力,允许按地点、主题(太阳能、风能、氢能)和日期范围进行筛选。

官方
Python
Vectorize

Vectorize

将 MCP 服务器向量化以实现高级检索、私有深度研究、Anything-to-Markdown 文件提取和文本分块。

官方
JavaScript
Mathematica Documentation MCP server

Mathematica Documentation MCP server

一个服务器,通过 FastMCP 提供对 Mathematica 文档的访问,使用户能够从 Wolfram Mathematica 检索函数文档和列出软件包符号。

本地
Python
kb-mcp-server

kb-mcp-server

一个 MCP 服务器,旨在实现便携性、本地化、简易性和便利性,以支持对 txtai “all in one” 嵌入数据库进行基于语义/图的检索。任何 tar.gz 格式的 txtai 嵌入数据库都可以被加载。

本地
Python
Research MCP Server

Research MCP Server

这个服务器用作 MCP 服务器,与 Notion 交互以检索和创建调查数据,并与 Claude Desktop Client 集成以进行和审查调查。

本地
Python
Cryo MCP Server

Cryo MCP Server

一个API服务器,实现了模型补全协议(MCP),用于Cryo区块链数据提取,允许用户通过任何兼容MCP的客户端查询以太坊区块链数据。

本地
Python