Skip to main content
Glama
DaisyLandForu

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 要求、报表格式和验收边界。

Maintenance

ActivitySlowing
ResponsivenessNo issues