UNPKG

answer-book-mcp

Version:

智能问答和决策辅助的 MCP (Model Context Protocol) 服务器

228 lines (181 loc) 6.08 kB
# 答案之书 (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 --- **答案之书** - 让智慧触手可及 ✨