MCP MongoDB Server
一个模型上下文协议(MCP)服务器,提供 LLM 和 MongoDB 数据库之间的接口,针对小型上下文窗口(3k tokens)进行了优化。 专门用于小说。 (Alternative, slightly more literal translation:) 一个模型上下文协议 (MCP) 服务器,它提供 LLM 和 MongoDB 数据库之间的接口,并针对小型上下文窗口(3k tokens)进行了优化。 特别是针对小说。
SFBB
README
MCP MongoDB 服务器
一个模型上下文协议 (MCP) 服务器,提供 LLM 和 MongoDB 数据库之间的接口,针对小上下文窗口(3k tokens)进行了优化。
概述
此服务器充当 LLM 的助手,以更好地了解存储在 MongoDB 中的特定领域知识。数据结构和模式经过优化,可以与小上下文窗口进行高效交互。
示例用例:
- 查询小说章节信息
- 获取角色详细信息
- 访问作者问答
- 检索特定领域的知识
特性
- MCP 协议实现: 遵循模型上下文协议规范
- 自然语言查询解析: 将自然语言查询转换为结构化数据库操作
- MongoDB 集成: 使用优化的结果查询现有的 MongoDB 集合
- 上下文优化响应: 格式化的响应专为小上下文窗口(3k tokens)设计
- 领域特定格式: 针对不同实体类型(小说、章节、角色、问答)的自定义格式
- Python 爬虫: 集成的爬虫程序,用于从各种来源填充数据库
数据模型
服务器使用以下优化的数据模型:
- 小说: 关于小说的核心元数据
- 章节: 摘要和要点(完整内容可按需提供)
- 角色: 具有紧凑关系表示的角色详细信息
- 问答: 带有标签的知识库条目,用于高效查询
架构
- MCP 协议层: 按照 MCP 规范处理 JSON-RPC 请求/响应
- 查询解析器: 将自然语言转换为结构化查询
- 数据库服务: 执行优化的 MongoDB 操作
- 响应格式化器: 以 LLM 友好的方式格式化响应
- 爬虫集成: Python 爬虫程序,用于帮助填充数据库
快速开始
前提条件
- Rust (最新稳定版本)
- 包含您的领域数据的 MongoDB 实例
- Python 3.7+ (用于爬虫)
- Git (用于克隆和使用存储库)
存储库结构
项目组织如下:
mcp_database/
├── src/ # MCP 服务器的 Rust 源代码
│ ├── db/ # 数据库连接和操作
│ ├── handlers/ # HTTP 请求处理程序
│ ├── mcp/ # MCP 协议实现
│ ├── models/ # 数据模型和结构
│ ├── services/ # 业务逻辑实现
│ └── utils/ # 实用函数
├── docs/ # 文档
│ └── database_interface.md # 详细的 API 和模式文档
└── scraper_library/ # 用于数据收集的 Python 爬虫 (子模块)
└── src/ # 各种站点的爬虫源代码
Git 存储库
该项目托管在 GitHub 上。要贡献或使用:
-
克隆存储库:
# 克隆包含子模块 (推荐) git clone --recursive https://github.com/SFBB/mcp-mongodb-novel-server.git # 或者正常克隆,然后初始化子模块 git clone https://github.com/SFBB/mcp-mongodb-novel-server.git cd mcp-mongodb-novel-server git submodule update --init --recursive
-
保持更新:
# 拉取最新更改,包括子模块更新 git pull --recurse-submodules # 仅将子模块更新到其最新版本 git submodule update --remote
-
贡献:
# 为您的功能创建一个新分支 git checkout -b feature/your-feature-name # 进行更改,然后提交 git add . git commit -m "Add feature: description of your changes" # 推送您的分支 git push -u origin feature/your-feature-name # 然后在 GitHub 上创建一个 Pull Request
安装
-
如上所示,克隆包含子模块的存储库
-
创建一个包含以下变量的
.env
文件:MONGODB_URI=mongodb://localhost:27017 DATABASE_NAME=your_database_name PORT=3000
-
构建并运行 MCP 服务器:
cargo build --release cargo run --release
MongoDB 设置
您的 MongoDB 应该具有根据本项目中定义的模型构建的集合:
novels
: 小说元数据chapters
: 章节信息characters
: 角色详细信息qa
: 问答对
有关详细的模式信息和索引建议,请参阅 数据库接口文档。
用法
MCP 端点
将符合 MCP 的 JSON-RPC 请求发送到 /mcp
端点:
{
"jsonrpc": "2.0",
"id": 1,
"method": "query",
"params": {
"query": "告诉我关于小说中的主角"
}
}
CRUD API
服务器还提供 REST API 端点来管理数据库内容:
GET /api/novels
- 列出所有小说POST /api/novels
- 创建一本新小说GET /api/novels/:id
- 获取小说详细信息PATCH /api/novels/:id
- 更新小说DELETE /api/novels/:id
- 删除小说
章节、角色和问答条目也存在类似的端点。
Python 爬虫
该项目包括 Python 爬虫(作为 Git 子模块)用于填充数据库:
-
设置 Python 环境:
cd scraper_library pip install -r requirements.txt
-
使用爬虫填充您的数据库:
python -m src.scrape_<source> --help
可用的爬虫包括:
scrape_69shunet.py
- 69Shu.netscrape_baobao88.py
- BaoBao88scrape_quanben.py
- Quanbenscrape_syosetu.py
- Syosetuscrape_ximalaya.py
- Ximalaya
查看每个爬虫的文档以获取具体的使用说明。
示例查询
- "小说第 3 章发生了什么?"
- "告诉我关于主角的信息"
- "查找所有与魔法系统相关的问答"
- "总结小说的情节"
更新的 MCP 方法
MCP 服务器现在支持以下方法,供 LLM 直接调用:
1. 查询角色信息
- 方法:
query_character
- 描述: 检索有关角色的详细信息。
- 参数:
{ "character_id": "<character_id>" }
2. 查询小说信息
- 方法:
query_novel
- 描述: 检索关于小说的元数据。
- 参数:
{ "novel_id": "<novel_id>" }
3. 查询特定章节信息
- 方法:
query_chapter
- 描述: 按编号、标题或 ID 检索有关特定章节的信息。
- 参数:
{ "chapter_id": "<chapter_id>", "chapter_number": <chapter_number>, "chapter_title": "<chapter_title>" }
4. 使用正则表达式查询问答信息
- 方法:
query_qa_regex
- 描述: 检索与正则表达式模式匹配的问答条目列表。
- 参数:
{ "regex_pattern": "<regex_pattern>" }
5. 使用正则表达式查询章节列表
- 方法:
query_chapter_regex
- 描述: 检索与正则表达式模式匹配的章节列表。
- 参数:
{ "regex_pattern": "<regex_pattern>" }
6. 使用正则表达式查询角色列表
- 方法:
query_character_regex
- 描述: 检索与正则表达式模式匹配的角色列表。
- 参数:
{ "regex_pattern": "<regex_pattern>" }
7. 更新章节摘要
- 方法:
update_chapter_summary
- 描述: 允许授权的 LLM 更新特定章节的摘要。
- 参数:
{ "auth_token": "<authentication_token>", "chapter_id": "<chapter_id>", "summary": "<new_summary>" }
- 响应:
{ "content": "章节摘要更新成功", "metadata": null }
示例 JSON-RPC 请求
{
"jsonrpc": "2.0",
"id": 1,
"method": "query_character",
"params": {
"character_id": "12345"
}
}
示例 JSON-RPC 响应
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": "角色详细信息...",
"metadata": {
"token_count": 50,
"query_time_ms": 10
}
}
}
开发
更新爬虫库
爬虫库作为 Git 子模块包含在内。要将其更新到最新版本:
# 导航到子模块目录
cd scraper_library
# 获取最新更改
git fetch origin
git checkout main
git pull
# 返回主项目并提交子模块更新
cd ..
git add scraper_library
git commit -m "将爬虫库更新到最新版本"
运行测试
# 运行所有测试
cargo test
# 运行特定测试
cargo test db_service
代码风格
本项目遵循 Rust 的标准代码风格指南:
# 检查代码格式
cargo fmt -- --check
# 运行 linting
cargo clippy
版本控制
我们使用 SemVer 进行版本控制。 有关可用版本,请参阅 此存储库上的标签。
许可证
MIT
推荐服务器
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
MCP Package Docs Server
促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。
Claude Code MCP
一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。
@kazuph/mcp-taskmanager
用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。
mermaid-mcp-server
一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。
Jira-Context-MCP
MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

Linear MCP Server
一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

Sequential Thinking MCP Server
这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。
Curri MCP Server
通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。