Files
book-mcp/config.yaml
Quentin 9b0910ccb1 Initial commit: book-mcp 教辅处理 MCP server + Arco Vue 管理端
后端 (book_mcp_server.py, 335 行, 15 个 MCP 工具):
- create_book / add_document / mark_html_ready / mark_json_ready / mark_failed
- update_book_status / soft_delete_book / retry_failed
- get_book / list_books / get_document / list_documents / get_document_url
- upload_to_rustfs / health
- 走 JSON-RPC + stateless_http + json_response(前端可直接调)
- launchd 守护 / 6 秒拉起(macOS)
- systemd 守护脚本(Linux/codelab)

存储:
- MongoDB (mongo:8.0 容器) - book/book_document/document_file 三表
- RustFS 对象存储(fs.code-lab.cn/scan/)- book/<id>/docs/<doc_id>/{docx,html,json}
- 幂等设计: zip_sha256 唯一 + (book_id+original_path) 唯一

前端 (Vue 3 + TS + Arco Design):
- 列表页 /book/list - 搜索 + 状态过滤 + 进度
- 详情页 /book/:id - 文档折叠 + 文件下载
- MCP 客户端 src/api/mcp.ts (JSON-RPC over fetch)

部署:
- deploy/install.sh (codelab 一键装 backend + systemd)
- deploy/install-frontend.sh (vite dev / 生产构建)
- docs/deploy.md (运维手册)

测试:
- tests/test_basic.py (sanity 7 项)
- tests/test_e2e.py (完整 e2e: docx→HTML→入库→上传→校验)
2026-10-11 18:03:57 +08:00

44 lines
985 B
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# book-mcp 服务配置
server:
name: book-mcp
port: 8100
host: 127.0.0.1
database:
# MongoDB
url: mongodb://book_admin:book_mongo_2026@127.0.0.1:27018/book_mcp?authSource=admin
db_name: book_mcp
echo: false
rustfs:
endpoint: https://fs.code-lab.cn
access_key: rustfsadmin
secret_key: rustfsadmin_sTwHez
default_bucket: scan
public_base: https://fs.code-lab.cn
verify_ssl: false
wordparse:
url: http://127.0.0.1:8089/api/v3/server_office_file/file/parse
health_url: http://127.0.0.1:8089/api/v3/server_office_file/file/health
timeout: 600
# 自动清洗脏 docx(去单位/NaN/浮点取整)
auto_clean: true
storage:
# 对象存储路径模板
book_prefix: book
docs_subdir: docs
# file_type → 子文件名
file_naming:
docx: source.docx
html: output.html
json: structure.json
preview_png: preview.png
error_log: error.log
logging:
level: INFO
format: '%(asctime)s [%(levelname)s] %(name)s: %(message)s'