会话关闭工具

一个用于Cursor的Model Context Protocol (MCP)服务器,用于优雅地关闭工作会话、同步上下文文件、更新Agent OS文件并将更改提交到git。

  • by Tylarcam
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 Tylarcam/mcp-session-closer

使用说明

MCP会话关闭器

Cursor的模型上下文协议(MCP)服务器,可以优雅地关闭工作会话、同步上下文文件、更新代理操作系统文件,并将更改提交到git。

特性

  • end_session:通过自动上下文同步、Notion条目创建和git commit关闭Cursor会话
  • sync_context_files:跨平台同步上下文文件 claude.md, gemini.md, agents.md,以及 .cursor/context.md
  • update_session_summary:在不结束会议的情况下更新会议摘要
  • 创建通知条目:从markdown内容创建Notion条目(附加到页面或在数据库中创建)
  • 概念整合:通过MCP工具自动创建Notion条目(使用Python脚本回退)

快速设置

1.安装依赖项

npm install

2.构建服务器

npm run build

3.配置光标

添加到光标MCP设置(~/.cursor/mcp.json 或 %APPDATA%\Cursor\mcp.json 在Windows上):

{
  "mcpServers": {
    "session-closer": {
      "command": "node",
      "args": [
        "/path/to/mcp-session-closer/dist/index.js"
      ],
      "env": {
        "CURSOR_WORKSPACE": "${workspaceFolder}"
      }
    }
  }
}

备注:替换 /path/to/mcp-session-closer 你的实际路径。在Windows上,使用正斜杠或双反斜杠。

4.重新启动游标

重新启动Cursor以加载MCP服务器。

用法

结束会话

在Cursor聊天中,只需问:

Close this session and sync everything

或者直接使用该工具:

Use end_session with conversationSummary: "Implemented user auth, fixed login bugs"

服务器将:

  1. 提取会话详细信息(成就、决策、阻碍因素、下一步行动)
  2. 更新 .agent-os/session-summary.md
  3. 通过MCP创建Notion条目(或回退到Python脚本)
  4. 更新代理操作系统路线图和决策(如果存在)
  5. 同步所有上下文文件(claude.md, gemini.md, agents.md, .cursor/context.md)
  6. 用描述性消息将所有更改提交到git

仅同步上下文文件

Sync context files

或者:

Use sync_context_files

仅更新会话摘要

Use update_session_summary with summary: "Made progress on feature X"

从Markdown创建概念条目

直接从markdown内容创建Notion条目。这对于向Notion添加完成报告、文档或任何结构化内容非常有用。

添加到现有页面:

Use create_notion_entry with markdownContent: "# My Report\n\nContent here..." and pageId: "your-page-id"

在数据库中创建新页面:

Use create_notion_entry with markdownContent: "# My Report\n\nContent here..." and databaseId: "your-database-id"

带有自定义标题和日期:

Use create_notion_entry with markdownContent: "# My Report\n\nContent here...", databaseId: "your-database-id", title: "Custom Title", date: "2026-02-08", project: "Development"

特征:

  • 自动将markdown转换为Notion块
  • 通过分块处理大型内容(通知限制:每个请求100个块)
  • 如果未提供,则从第一个H1中提取标题
  • 从降价中提取日期(如果存在)
  • 如果MCP工具不可用,则回退到指导Notion API

运作原理

会话关闭流程

当你打电话的时候 end_session,服务器自动:

  1. 收集会话信息

    • 从对话中提取成就
    • 确定所做的决定
    • 注意任何阻断器
    • 列出下一步
    • 跟踪更改的文件
  2. 更新会话摘要

    • 创建/更新 .agent-os/session-summary.md
    • 在会话详细信息后附加时间戳
    • 结构化标记格式
  3. 更新代理操作系统 (如果存在)

    • 在中标记已完成的项目 .agent-os/product/roadmap.md
    • 添加新决策 .agent-os/product/decisions.md
    • 保持适当的降价结构
  4. 同步上下文文件

    • 从所有上下文文件读取内容
    • 合并和消除重复内容
    • 使用统一上下文更新所有文件:
      • claude.md
      • gemini.md
      • agents.md
      • .cursor/context.md
  5. 提交到Git

    • 暂存所有已修改的文件
    • 创建描述性提交消息
    • 带有时间戳的提交

配置

所需的环境变量

  • CURSOR_WORKSPACE -通过光标自动设置到当前工作区文件夹

概念整合

服务器可以在关闭会话时自动创建Notion条目,您也可以使用 create_notion_entry 工具。通过环境变量进行配置:

必修的:

  • NOTION_API_TOKEN 或 NOTION_API_KEY 或 NOTION_TOKEN -您的Notion集成令牌(从获取https://www.notion.so/my-integrations)

选择一个(用于自动会话条目):

  • NOTION_PAGE_ID -将块附加到现有页面(推荐,避免序列化问题)
  • NOTION_DATABASE_ID -在数据库中创建新页面

可选:

  • NOTION_PROJECT -数据库条目的默认项目名称(默认:“Development”)

例子:

export NOTION_API_TOKEN="ntn_your_token_here"
export NOTION_DATABASE_ID="2ba968fc-73c0-8045-b1c7-c89951ece547"
export NOTION_PROJECT="Development"

它是如何工作的:

  1. 主要的,重要的:通过Docker使用Notion MCP工具(mcp/notion:latest)
  2. 后备方案:如果MCP失败,则回退以直接调用Notion API
  3. 分块:通过将大型内容拆分为100个块的块来自动处理(注意API限制)

备注:使用时 create_notion_entry 工具,您可以通过传递以下内容来覆盖环境变量 pageId, databaseId, title, date,或 project 作为参数。

MCP集成:

  • 通过Docker stdio传输连接到Notion MCP服务器
  • 用途 append-blocks 工具(首选)或 create-page 工具
  • 正确处理参数序列化
  • 非阻塞:错误不会使会话关闭失败

可选文件

服务器可以使用或不使用这些文件:

  • .agent-os/session-summary.md -会话历史记录(如果缺少,则创建)
  • .agent-os/product/roadmap.md -产品路线图(如有更新)
  • .agent-os/product/decisions.md -决策日志(如有更新)
  • claude.md, gemini.md, agents.md, .cursor/context.md -上下文文件

发展

以开发模式运行

npm run dev

构建

npm run build

启动生产服务器

npm start

故障排除

未找到MCP服务器

  • 验证Cursor MCP配置中的路径是否正确
  • 在Windows上使用正斜杠或转义反斜杠
  • 检查一下 dist/index.js 建筑后存在

Git提交失败

  • 确保git已初始化: git init
  • 配置git用户:
    git config user.name "Your Name"
    git config user.email "your.email@example.com"
    
  • 检查您是否具有写入权限

上下文文件不同步

  • 验证工作区目录中的写入权限
  • 检查是否没有其他进程锁定文件
  • 确保工作区路径正确

会话摘要未更新

  • 检查一下 .agent-os 目录存在(自动创建)
  • 验证工作区中的写入权限
  • 在Cursor的MCP日志中查找错误

概念条目未创建

  • 验证 NOTION_API_TOKEN 设置正确
  • 检查一下 NOTION_PAGE_ID 或 NOTION_DATABASE_ID 已配置
  • 确保Docker可以运行 mcp/notion:latest 容器
  • 检查Docker日志: docker logs mcp-notion (如果作为容器运行)
  • 验证Notion集成是否可以访问目标页面/数据库
  • 如果MCP失败,请检查Python回退脚本是否存在且可执行

项目结构

mcp-session-closer/
├── src/
│   ├── index.ts          # MCP server implementation
│   ├── session-closer.ts # Core session closing logic
│   ├── notion-client.ts  # Notion MCP client wrapper
│   └── types.ts          # TypeScript type definitions
├── dist/                 # Compiled JavaScript (generated)
├── package.json          # Node.js dependencies
├── tsconfig.json         # TypeScript configuration
├── Dockerfile            # Docker build configuration
├── docker-compose.yml    # Docker Compose configuration
└── README.md            # This file

为什么使用这个?

自动化工作流程

  • 无手动步骤:自动同步、更新和提交
  • 一致格式:标准化的会话摘要和git提交
  • 节省时间:以秒而不是分钟关闭会话

上下文连续性

  • 统一上下文:所有AI助手都看到相同的项目上下文
  • 跨会话内存:会话摘要在重新启动后仍然存在
  • 决策跟踪:保留决策原因的历史记录

Git集成

  • 自动提交永远不要忘记提交你的工作
  • 描述的消息:自动生成带有上下文的提交消息
  • 干净的历史:在自然断点处进行有组织的提交

许可证

麻省理工学院

贡献

这是一个个人工具,但请随意分叉并根据您的需求进行调整!