research-project-mcp-demo
README.md
# 科研管理大模型原型系统 - 课题管理 MCP Server Demo
本项目是“科研管理大模型原型系统”中“课题管理智能体模块”的本地 MCP Server Demo。它面向本地展示和后续平台接入,优先跑通文档导入、结构化抽取、课题档案管理、人员/进度/资金管理、报表生成和 MCP 工具调用闭环。
## 功能范围
已覆盖:
- 2.2.1 文档信息自动提取与管理。
- 2.2.2 课题过程自动化管理。
- 2.2.4 报表与总结自动生成。
暂不完整实现:
- 复杂课题风险预警系统。
- 生产级权限系统。
- 复杂前端。
- 完整知识图谱。
- 科研布局和成果管理模块。
- 强制 LLM 抽取。
## 已实现功能
- DOCX/PDF/TXT/MD/XLSX/XLS/CSV 解析入口,其中当前样例重点验证 DOCX。
- 文档分类:立项签报、采购签报、绩效发放签报、阶段报告、课题统计报表、未知。
- 规则抽取:课题名称、负责人、部门、起止时间、预算、绩效、成员、进度、阶段内容等。
- 抽取 evidence 保留。
- SQLite 本地档案库。
- 文档版本、hash、导入时间记录。
- 人员、里程碑、资金、采购、绩效、阶段成果、操作日志表。
- Markdown 报表和阶段总结。
- Excel 多 Sheet 报表导出。
- FastAPI 本地接口。
- FastMCP 工具集。
- 本地路径和 HTTP/HTTPS 文件 URL 导入入口。
- 知识库输入文本落地目录。
- Dockerfile。
- 基础测试用例。
## 项目结构
```text
app/
main.py
mcp_server.py
config.py
database.py
models.py
schemas.py
document_parser.py
document_classifier.py
extractor.py
services/
tools/
utils/
data/
demo.db
uploads/
reports/
knowledge_base_inputs/
docs/
scripts/
tests/
requirements.txt
Dockerfile
```
## 安装依赖
```bash
python -m pip install -r requirements.txt
```
## 初始化数据库
```bash
python scripts/init_db.py
```
## 导入样例文件
```bash
python scripts/ingest_samples.py
```
## 本地运行 Demo
```bash
python scripts/run_demo.py
```
## 运行 FastAPI
```bash
python -m uvicorn app.main:app --reload --port 8000
```
接口:
- `/health`
- `/demo`
- `/projects`
- `/projects/{project_id}`
- `/reports`
- `/docs`
## 运行 MCP Server
```bash
python app/mcp_server.py
```
默认 SSE 地址:
```text
http://127.0.0.1:8001/sse
```
平台接入时,远程 URL、鉴权、上传文件参数形态仍需按 `docs/UNKNOWN_ITEMS.md` 确认。
PostgreSQL 可通过环境变量切换:
```bash
set RPM_DATABASE_URL=postgresql+psycopg://user:password@host:5432/dbname
```
## Docker
```bash
docker build -t research-project-mcp-demo .
docker run --rm -p 8001:8001 -v %cd%/data:/app/data research-project-mcp-demo
```
## MCP 工具清单
- `ingest_project_documents`
- `ingest_project_documents_text`
- `get_extraction_result`
- `confirm_project_data`
- `query_project`
- `list_projects`
- `update_project_progress`
- `get_project_fund_summary`
- `generate_project_report`
- `save_researcher_profile_page`
- `save_duplicate_check_report_page`
- `search_project_documents`
- `get_operation_logs`
`save_researcher_profile_page` 用于保存科研人员画像 HTML,并返回可在浏览器打开的 `/profile-pages/{filename}` 页面链接。`save_duplicate_check_report_page` 用于保存查重智能体生成的论文查重分析报告 HTML。两类页面链接都复用 `RPM_DOWNLOAD_BASE_URL` 对应的 FastAPI 外部访问地址。
## 数据库表
- `project_info`
- `project_document`
- `project_member`
- `project_milestone`
- `project_fund`
- `project_purchase`
- `project_performance`
- `project_stage_result`
- `operation_log`
## 平台接入说明
本地 Demo 当前优先采用 FastMCP SSE。平台手册和截图显示灵犀支持远程 MCP、容器化 MCP、API 转 MCP 三种方式。建议优先确认远程 MCP 的协议和 URL 要求,再接入:
```text
http://<可被平台访问的主机>:8001/sse
```
如平台只能接 OpenAPI,可临时使用 FastAPI 的 `/docs` 或 `/openapi.json` 做 API 转 MCP 备选。
## 待确认问题
详见:
- `docs/UNKNOWN_ITEMS.md`
重点包括平台协议、文件上传参数形态、容器持久化、模型 API、PostgreSQL 要求、报表格式和验收边界。
This server cannot be deployed
Maintenance
ActivitySlowing
ResponsivenessNo issues