answer-book-mcp
Version:
智能问答和决策辅助的 MCP (Model Context Protocol) 服务器
228 lines (181 loc) • 6.08 kB
Markdown
# 答案之书 (Answer Book) MCP 服务器
一个基于 Model Context Protocol (MCP) 的智能问答系统,提供智慧答案、决策建议和个性化咨询服务。
## 🌟 功能特性
### 核心功能
- **智能问答** - 基于自然语言处理的智能问题匹配和回答
- **随机智慧** - 提供分类的智慧格言和人生感悟
- **决策建议** - 基于情况分析的个性化决策支持
- **历史记录** - 完整的问答历史管理和统计分析
- **用户反馈** - 支持评分和反馈的持续改进机制
### 技术特性
- **多语言支持** - 中文、英文、日文等多语言处理
- **情感分析** - 基于情感倾向的智能回答匹配
- **语义理解** - 使用 NLP 技术进行深度语义分析
- **数据持久化** - 完整的数据存储和备份机制
- **性能监控** - 实时性能指标和使用统计
## 🚀 快速开始
### 环境要求
- Node.js 18+
- npm 或 yarn
### 安装依赖
```bash
npm install
```
### 启动服务器
```bash
# 开发模式
npm run dev
# 生产模式
npm start
# MCP 服务器模式
node start.js
```
### 运行测试
```bash
npm test
```
### 代码检查
```bash
npm run lint
npm run format
```
## 🛠️ 可用工具
### 1. ask_question - 智能问答
根据用户问题提供最匹配的智慧答案。
**参数:**
- `question` (必需) - 用户问题
- `category` (可选) - 问题类别 (general, love, career, decision, life, motivation, wisdom)
- `language` (可选) - 语言偏好 (zh-CN, en-US, ja-JP)
- `mood` (可选) - 情感偏好 (encouraging, calming, inspiring, practical)
**示例:**
```json
{
"question": "我应该换工作吗?",
"category": "career",
"language": "zh-CN"
}
```
### 2. random_answer - 随机智慧
获取随机的智慧答案和人生感悟。
**参数:**
- `category` (可选) - 答案类别
- `mood` (可选) - 情感倾向
- `length` (可选) - 答案长度 (short, medium, long)
- `language` (可选) - 语言偏好
### 3. get_advice - 决策建议
基于具体情况提供个性化的决策建议。
**参数:**
- `situation` (必需) - 具体情况描述
- `options` (可选) - 可选方案列表
- `priority` (可选) - 优先考虑因素
- `timeline` (可选) - 决策时间框架
- `language` (可选) - 语言偏好
### 4. save_question - 保存反馈
保存用户问题、答案和反馈信息。
**参数:**
- `question` (必需) - 用户问题
- `answer` (必需) - 提供的答案
- `rating` (可选) - 评分 (1-5)
- `feedback` (可选) - 用户反馈
- `language` (可选) - 语言
### 5. get_history - 历史记录
查询和管理用户的问答历史。
**参数:**
- `limit` (可选) - 返回记录数量
- `offset` (可选) - 偏移量
- `category` (可选) - 类别筛选
- `date_from` / `date_to` (可选) - 日期范围
- `search` (可选) - 搜索关键词
- `sort_by` (可选) - 排序字段
- `include_feedback` (可选) - 是否包含反馈
## 📁 项目结构
```
答案之书/
├── src/ # 源代码目录
│ ├── index.js # 主入口文件
│ ├── server.js # 服务器核心逻辑
│ ├── tools/ # MCP 工具实现
│ │ ├── ask-question.js
│ │ ├── get-advice.js
│ │ ├── random-answer.js
│ │ ├── save-question.js
│ │ └── get-history.js
│ ├── services/ # 业务服务
│ │ └── matcher.js # 智能匹配服务
│ └── utils/ # 工具函数
│ ├── logger.js # 日志管理
│ ├── storage.js # 数据存储
│ └── validator.js # 数据验证
├── data/ # 数据文件
│ ├── answers.json # 答案数据库
│ └── history.json # 历史记录
├── config/ # 配置文件
│ └── config.json # 主配置
├── tests/ # 测试文件
├── logs/ # 日志文件
└── package.json # 项目配置
```
## ⚙️ 配置说明
主要配置文件位于 `config/config.json`,包含:
- **服务器设置** - 名称、版本、历史记录限制等
- **匹配参数** - 置信度阈值、权重配置等
- **NLP 配置** - 语言检测、情感分析等
- **安全设置** - 输入验证、内容过滤等
- **性能设置** - 缓存、批处理等
- **日志配置** - 日志级别、文件管理等
## 📊 数据管理
### 答案数据库
`data/answers.json` 包含预设的智慧答案,支持:
- 多类别分类 (通用、爱情、职业、决策、生活、动机、智慧)
- 多语言内容 (中文、英文、日文)
- 情感标签 (鼓励、平静、启发、实用)
- 使用统计和评分
### 历史记录
`data/history.json` 存储用户交互历史,包括:
- 问答记录
- 用户反馈
- 使用统计
- 性能指标
## 🔧 开发指南
### 添加新工具
1. 在 `src/tools/` 目录创建新工具文件
2. 继承 `BaseTool` 类
3. 实现必需的方法
4. 在 `server.js` 中注册工具
### 扩展答案数据
1. 编辑 `data/answers.json`
2. 遵循现有数据结构
3. 添加适当的标签和分类
4. 重启服务器加载新数据
### 自定义匹配算法
修改 `src/services/matcher.js` 中的匹配逻辑:
- 调整权重配置
- 添加新的匹配因子
- 优化语义分析
## 📈 监控和日志
### 日志文件
- `logs/combined.log` - 综合日志
- `logs/error.log` - 错误日志
- `logs/exceptions.log` - 异常日志
- `logs/rejections.log` - Promise 拒绝日志
### 性能监控
- 工具调用统计
- 响应时间监控
- 内存使用情况
- 缓存命中率
## 🤝 贡献指南
1. Fork 项目
2. 创建功能分支
3. 提交更改
4. 推送到分支
5. 创建 Pull Request
## 📄 许可证
MIT License
## 🆘 支持
如有问题或建议,请:
1. 查看日志文件排查问题
2. 检查配置文件设置
3. 运行测试验证功能
4. 提交 Issue 或 Pull Request
---
**答案之书** - 让智慧触手可及 ✨