MCP会话管理器
](https://badge.fury.io/js/mcp-session-manager)  ](https://nodejs.org)
允许多个Claude Code会话共享MCP守护进程,而不会发生SIGINT冲突。
问题
当同时运行多个Claude Code会话时,每个新会话都会向现有的MCP进程发送SIGINT,从而导致:
- 会话断开连接:新会话会杀死现有会话的MCP
- SQLite冲突:多个进程访问同一数据库
- 国家隔离:内存状态(文件监视器、索引)未共享
- 资源争用:进程冲突和崩溃
解决方案
此会话管理器引入了一个3层架构:
Session A Session B
| |
v v
[Proxy A] -------- HTTP -------- [MCP Daemon]
(stdio) shared (HTTP/SSE)
| |
[Claude A] [Claude B]- Singleton Daemons:每个MCP都作为一个守护进程运行,为所有会话提供服务
- 标准代理:轻量级代理将Claude的stdio桥接到守护进程HTTP
- 信号情报保护:代理忽略信号,保护共享守护进程
- 自动启动:守护进程在第一次请求时自动启动
安装
来自npm(推荐)
npm install -g mcp-session-manager来源
git clone https://github.com/daichi-kudo/mcp-session-manager.git
cd mcp-session-manager
npm install
npm run build快速开始
1.生成Claude配置
# If installed globally
mcp-manager generate-config
# If installed from source
node dist/manager/index.js generate-config这创造了 ~/.claude/mcp.json 使用代理配置。
2.重新启动克劳德代码
关闭并重新打开Claude Code。代理将根据需要自动启动守护进程。
3.验证
打开多个Claude Code会话-它们应该同时工作而不会发生冲突。
配置
克劳德代码(~/.claude/mcp.json)
{
"mcpServers": {
"memory": {
"command": "node",
"args": ["path/to/mcp-session-manager/dist/proxy/index.js", "--target", "memory"]
},
"code-index": {
"command": "node",
"args": ["path/to/mcp-session-manager/dist/proxy/index.js", "--target", "code-index"]
},
"ast-grep": {
"command": "node",
"args": ["path/to/mcp-session-manager/dist/proxy/index.js", "--target", "ast-grep"]
}
}
}守护程序设置(src/shared/config.ts)
自定义守护进程配置:
{
name: "memory",
command: "node",
args: ["path/to/memory-mcp-sqlite/dist/index.js", "--transport", "http", "--port", "3100"],
port: 3100,
transport: "streamable-http",
env: { MEMORY_DB_PATH: "..." }
}港口
| 守护进程 | 默认端口 | 传输 |
|---|---|---|
| 内存 | 3100 | 可流式传输http |
| 代码索引 | 3101 | 可流式传输http(SSE响应) |
| 希腊东部 | 3102 | sse |
| 管理器API | 3199 | HTTP |
手动守护程序管理
启动管理器进行健康监控并自动重启:
# Start all daemons
mcp-manager --start-all
# Or from source
node dist/manager/index.js --start-allAPI经理
| 端点 | 方法 | 描述 |
|---|---|---|
/ping | GET | 健康检查 |
/status | GET | 所有守护进程状态 |
/start | POST | 启动守护进程({"name": "memory"}) |
/stop | POST | 停止守护进程 |
/ensure | POST | 确保守护进程正在运行(必要时启动) |
/start-all | POST | 启动所有守护进程 |
/stop-all | POST | 停止所有守护进程 |
故障排除
检查守护进程状态
curl http://localhost:3199/status查看守护进程日志
# Windows
type %USERPROFILE%\.mcp-session-manager\memory.log
type %USERPROFILE%\.mcp-session-manager\code-index.log
# macOS/Linux
cat ~/.mcp-session-manager/memory.log
cat ~/.mcp-session-manager/code-index.log守护进程无法启动
- 检查端口是否已在使用中:
# Windows
netstat -ano | findstr :3100
# macOS/Linux
lsof -i :3100- 删除过时的锁文件:
# Windows
del %USERPROFILE%\.mcp-session-manager\*.lock
# macOS/Linux
rm ~/.mcp-session-manager/*.lock会话仍然断开连接
- 验证是否在中配置了代理
~/.claude/mcp.json - 检查Claude Code的MCP输出中的代理日志
- 确保守护进程正在运行:
curl http://localhost:3100/health
重新启动卡住的守护进程
curl -X POST http://localhost:3199/stop -d '{"name":"memory"}'
curl -X POST http://localhost:3199/start -d '{"name":"memory"}'手动清理(Windows)
# Remove lock files
Remove-Item $env:USERPROFILE\.mcp-session-manager\*.lock
# Kill orphaned processes
Get-Process node | Where-Object {$_.CommandLine -like "*mcp*"} | Stop-Process -Force手动清理(macOS/Linux)
# Remove lock files
rm ~/.mcp-session-manager/*.lock
# Kill orphaned processes
pkill -f "mcp-session-manager"建筑
看 建筑.md 详细的设计文档。
需求
- Node.js 20+
- Windows、macOS或Linux
- 支持HTTP/SSE传输的现有MCP服务器
支持的MCP
| MCP | 运输 | 注意事项 |
|---|---|---|
| 内存mcp sqlite | 可流式传输http | 需要 --transport http 旗帜 |
| 代码索引mcp | 可流式http | SSE响应,需要FastMCP |
| ast grep mcp | sse | 弃用的mcp 2024-11-05格式 |
贡献
- 克隆该仓库
- 创建功能分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add some amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
许可证
MIT许可证-请参阅 许可证 了解详情。
作者
工藤大一
- Cognisant有限责任公司 -CEO
- M16 LLC -CTO
