会话管理协议服务

用于管理Claude Code会话的MCP服务器和Web界面,提供会话管理、消息清理和项目浏览功能。

  • by es6kr
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 es6kr/claude-sessions-mcp

使用说明

克劳德会议mcp

⚠️ 已弃用:此程序包已被替换为 claude代码会话.

请迁移到新包:

npm uninstall claude-sessions-mcp
npm install claude-code-sessions

MCP(模型上下文协议)服务器和用于管理Claude代码会话的Web UI。

特性

  • 项目列表:浏览Claude Code项目文件夹
  • 会话管理:列出、重命名和删除会话
  • 消息管理:查看和删除会话中的消息
  • 清理:清除空会话并删除无效的API密钥消息
  • Web 界面:基于SvelteKit的web界面

安装

# Using npx (recommended)
npx claude-sessions-mcp

# Or install globally
npm install -g claude-sessions-mcp

用法

克劳德代码MCP集成

添加到克劳德代码:

claude mcp add claude-sessions -- npx claude-sessions-mcp

或手动编辑 ~/.claude.json:

{
  "mcpServers": {
    "claude-sessions": {
      "command": "npx",
      "args": ["claude-sessions-mcp"]
    }
  }
}

Web图形用户界面

通过MCP工具(来自Claude Code)启动web界面:

> Use the start_gui tool to launch web interface

GUI在以下位置打开 http://localhost:5050 具有以下特点:

  • 浏览所有项目和会话
  • 查看完整的对话历史记录
  • 使用内联编辑重命名会话
  • 删除不需要的会话
  • 批量清理空会话

发展

# Enable corepack
corepack enable

# Install dependencies
pnpm install

# Start web development server
pnpm dev

# MCP server development mode
pnpm dev:mcp

构建

pnpm build

MCP服务器工具

可用工具

工具 说明
list_projects 列出Claude Code项目
list_sessions 列出项目中的会话
rename_session 重命名会话
delete_session 删除会话(移动到备份文件夹)
delete_message 删除消息并修复UUID链
preview_cleanup 要清理的预览会话
clear_sessions 清除空会话和无效消息
start_gui 启动web UI
stop_gui 停止web UI

技术栈

  • MCP服务器:Node.js+TypeScript+效果
  • Web 界面:SvelteKit+Svelte 5
  • 构建:tsup(MCP)、Vite(Web)
  • 包管理器:pnpm(核心包)

效果TS模式

此项目使用 效果 对于功能异步操作:

import { Effect, pipe, Array as A, Option as O } from 'effect'

// Define an Effect (lazy, composable)
const listProjects = Effect.gen(function* () {
  const files = yield* Effect.tryPromise(() => fs.readdir(dir))
  return files.filter((f) => f.endsWith('.jsonl'))
})

// Parallel execution with concurrency control
const results =
  yield *
  Effect.all(
    items.map((item) => processItem(item)),
    { concurrency: 10 }
  )

// Option for nullable values
const title = pipe(
  messages,
  A.findFirst((m) => m.type === 'user'),
  O.map((m) => extractTitle(m)),
  O.getOrElse(() => 'Untitled')
)

// Run in SvelteKit endpoint
export const GET = async () => {
  const result = await Effect.runPromise(listProjects)
  return json(result)
}

许可证

麻省理工学院