MCP Chat Logger是一个简单而强大的聊天记录保存工具,可以将聊天历史保存为Markdown格式文件,并支持通过RabbitMQ进行实时消息发布。支持开发环境和生产环境双重配置。
# 克隆仓库
git clone https://github.com/yourusername/MCP_Chat_Logger.git
cd MCP_Chat_Logger
# 安装依赖
uv add "mcp[cli]>=1.6.0"
uv add "pika>=1.3.0"
uv add "python-dotenv>=1.0.0"本项目支持开发环境和生产环境两种配置:
用于开发和测试的本地Docker RabbitMQ环境。
# 创建环境变量文件
cp dev-tools/.env.example .env
# 使用Docker启动RabbitMQ服务器
cd dev-tools
docker-compose up -d
# 连接测试
uv run test_rabbitmq.py
# 运行MCP服务器
cd ..
uv run chat_logger.py对于实际服务部署,推荐使用CloudAMQP等托管RabbitMQ服务。
# 直接创建.env文件
cat > .env << EOF
RABBITMQ_HOST=your-cloudamqp-url.com
RABBITMQ_PORT=5672
RABBITMQ_USERNAME=your-username
RABBITMQ_PASSWORD=your-password
RABBITMQ_VIRTUAL_HOST=your-vhost
RABBITMQ_EXCHANGE=llmLogger
RABBITMQ_ROUTING_KEY=llm_logger
RABBITMQ_QUEUE_NAME=llm_logger
EOF
# 运行MCP服务器
uv run chat_logger.py如果只想使用文件保存功能而不使用RabbitMQ,不设置环境变量即可自动启用仅文件模式:
# 无环境变量运行(自动进入仅文件模式)
uv run chat_logger.pyMCP Chat Logger根据环境变量设置情况自动决定运行模式:
- RabbitMQ模式:当
RABBITMQ_HOST、RABBITMQ_PORT、RABBITMQ_USERNAME、RABBITMQ_PASSWORD全部设置时 - 仅文件模式:当上述环境变量中任一未设置时
# 运行(根据环境变量自动决定模式)
uv run chat_logger.py复制dev-tools/.env.example创建.env文件:
# RabbitMQ Configuration (Development)
RABBITMQ_HOST=localhost
RABBITMQ_PORT=5672
RABBITMQ_USERNAME=guest
RABBITMQ_PASSWORD=guest
RABBITMQ_VIRTUAL_HOST=/
# Message Queue Routing (Design Specification)
RABBITMQ_EXCHANGE=pkms
RABBITMQ_ROUTING_KEY=llm_logger
RABBITMQ_QUEUE_NAME=llm_logger
# Source Configuration (Required)
MCP_SOURCE=claude# 启动RabbitMQ服务器
cd dev-tools
docker-compose up -d
# 停止RabbitMQ服务器
docker-compose down
# 查看日志
docker-compose logs rabbitmq
# 访问Web管理界面:http://localhost:15672 (guest/guest)# RabbitMQ连接测试
cd dev-tools
uv run test_rabbitmq.py
# 或从项目根目录
uv run dev-tools/test_rabbitmq.py- 创建CloudAMQP账户
- 创建RabbitMQ实例
- 在
.env文件中设置连接信息
# CloudAMQP连接示例
RABBITMQ_HOST=your-instance.cloudamqp.com
RABBITMQ_PORT=5672
RABBITMQ_USERNAME=your-username
RABBITMQ_PASSWORD=your-password
RABBITMQ_VIRTUAL_HOST=your-vhost
# Message Queue Routing (Design Specification)
RABBITMQ_EXCHANGE=pkms
RABBITMQ_ROUTING_KEY=llm_logger
RABBITMQ_QUEUE_NAME=llm_logger
# Source Configuration (Required)
MCP_SOURCE=claude
# 可选连接设置
RABBITMQ_CONNECTION_TIMEOUT=30
RABBITMQ_HEARTBEAT=600
RABBITMQ_BLOCKED_CONNECTION_TIMEOUT=300- 🐰 RabbitMQ集成:实时消息发布和订阅支持
- 📝 Markdown存储:将聊天记录保存为整洁的Markdown格式
- ⏰ 时间戳:自动为每条消息添加时间戳
- 📁 自定义目录:支持用户自定义保存目录
- 🔍 会话管理:支持会话ID标识不同的对话
- 🛠️ 环境变量:通过
.env文件进行配置管理 - ☁️ 多环境支持:支持开发环境(Docker)和生产环境(CloudAMQP)
- Exchange名称:
pkms - Exchange类型:
direct - 路由键:
llm_logger - 队列名称:
llm_logger - 绑定:队列
llm_logger通过路由键llm_logger绑定到Exchangepkms
{
"source": "claude",
"type": "chat" | "analysis",
"conversation_id": "str",
"sending_at": "YYYYmmdd HHMMSS",
"contents": [],
"metadata": {}
}# Chat History
Conversation ID: 20250618_000500_001
Date: 2025-06-18 00:06:02
Source: claude
### User - 2025-06-18 00:06:02
...
### Assistant - 2025-06-18 00:06:02
...save_chat_history:将聊天记录保存为Markdown文件并发布到RabbitMQ(环境变量设置时)
{
"chat_logger": {
"name": "chat_logger",
"isActive": true,
"command": "uv",
"args": [
"--directory",
"/path/to/MCP_Chat_Logger",
"run",
"chat_logger.py"
],
"env": {
"MCP_SOURCE": "claude",
"RABBITMQ_HOST": "your-rabbitmq-host",
"RABBITMQ_PORT": "5672",
"RABBITMQ_USERNAME": "your-username",
"RABBITMQ_PASSWORD": "your-password"
}
}
}{
"chat_logger_file_only": {
"name": "chat_logger_file_only",
"isActive": true,
"command": "uv",
"args": [
"--directory",
"/path/to/MCP_Chat_Logger",
"run",
"chat_logger.py"
],
"env": {
"MCP_SOURCE": "claude"
}
}
}MCP_Chat_Logger/
├── chat_logger.py # 主MCP服务器
├── utils/ # 工具模块
│ └── rabbitmq_publisher.py # RabbitMQ消息发布模块
├── dev-tools/ # 开发环境工具
│ ├── docker-compose.yml # RabbitMQ Docker配置
│ ├── .env.example # 开发用环境变量示例
│ └── test_rabbitmq.py # RabbitMQ连接测试脚本
├── chat_logs/ # 默认保存目录
├── pyproject.toml # 项目设置和依赖
├── .env # 环境变量配置(用户创建)
├── README.md # 项目说明(中文)
├── README_ko.md # 韩语说明
├── README_en.md # 英文说明
└── .gitignore # Git忽略文件
通过Smithery为Claude Desktop自动安装MCP Chat Logger:
npx -y @smithery/cli install @AlexiFeng/MCP_Chat_Logger --client claude- 添加Overview功能
- 消息格式自定义选项
- 额外的消息代理支持
- 高可用性配置指南
欢迎提交问题和拉取请求!如果您想贡献代码,请遵循以下步骤:
- Fork这个仓库
- 创建您的特性分支 (
git checkout -b feature/amazing-feature) - 提交您的更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 开启一个Pull Request
该项目采用MIT许可证 - 详情请查看 LICENSE 文件。