Skip to main content
Glama
yang-kun-long

Library Access MCP

README.md
# Library Access MCP

> 让 AI 直接访问需要认证的学术数据库。

浏览器插件 + MCP 服务器,AI 助手通过已登录的浏览器 Session 搜索论文、抓取元数据,无需重新登录、无需暴露密码。

## 解决的问题

- **反复认证**:VPN 断了、Session 过期、跨库跳转——全部自动处理
- **手动搬运**:摘要、作者、DOI、影响因子、基金项目——一键抓取
- **AI 爬虫被拦**:直接复用浏览器已有的学术权限,绕过反爬

## 核心特性

- **复用浏览器 Session**:不传账号密码,AI 借用你已登录的权限
- **自动登录兜底**:Session 过期时自动重新认证,对 AI 透明
- **元数据深度抓取**:单位、基金、核心收录(核/源)、影响因子、标准引文格式
- **资产固化**:论文自动转为结构化 Markdown,实时同步研究索引
- **本地运行**:全程 localhost,不上传任何数据

## 工作原理

```
Claude Code ──HTTP──> MCP Server (localhost:8766)
                           │
                        WebSocket (localhost:8765)
                           │
                      浏览器插件 ──> 学术数据库(带认证)
```

## 安装

### 下载

从 [Releases](https://github.com/yang-kun-long/library-access-mcp/releases) 下载最新的 `library-access-mcp-vX.X.X.zip`,解压后包含:

```
library-access-mcp/
├── extension/          # Chrome 插件目录
└── mcp-server.exe      # Windows 服务端(托盘运行)
```

### 安装插件

1. 打开 `chrome://extensions/`
2. 开启右上角**开发者模式**
3. 点击**加载已解压的扩展程序**,选择解压后的 `extension/` 目录

### 启动服务端

**Windows(推荐)**:双击 `mcp-server.exe`,系统托盘出现图标即表示运行中。

**源码运行**:
```bash
cd mcp-server
pip install -r requirements.txt
python server.py
```

服务端启动后监听:
- `http://localhost:8766/mcp` — MCP 端点(供 Claude Code 连接)
- `ws://localhost:8765` — WebSocket 端点(供插件连接)

### 注册到 Claude Code

```bash
claude mcp add --transport http \
  -H "Authorization: Bearer library-access-for-LiuWen" \
  --scope user \
  -- library-access http://localhost:8766/mcp
```

或手动在 `~/.claude.json` 的 `mcpServers` 中添加:

```json
"library-access": {
  "type": "http",
  "url": "http://localhost:8766/mcp",
  "headers": {
    "Authorization": "Bearer library-access-for-LiuWen"
  }
}
```

### 注册到 OpenCode

在 OpenCode 配置文件 `~/.config/opencode/opencode.json` 的 `mcp` 字段中添加:

```json
{
  "mcp": {
    "library-access": {
      "type": "remote",
      "url": "http://localhost:8766/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer library-access-for-LiuWen"
      }
    }
  }
}
```

**注意**:OpenCode 使用 `"type": "remote"` 而不是 `"type": "http"`。

## 使用

连接成功后,在 Claude Code 中直接对话即可:

> "帮我搜索近三年关于大模型的综述论文"
> "获取第一篇的详情并保存"

AI 会自动处理登录、搜索、抓取、保存全流程。

## 可用工具

| 工具 | 说明 |
|------|------|
| `ping_test` | 测试插件连接状态 |
| `login_library` | 登录图书馆(支持多校,自动兜底同步发现系统 Session) |
| `search_papers` | 搜索论文(自动检测登录状态) |
| `get_paper_detail` | 抓取论文完整元数据 |
| `download_paper` | 下载论文 PDF |
| `persist_paper` | 将论文固化为本地 Markdown 笔记 |

## 支持的学校

| 学校 | 代码 | 认证方式 | 是否需要凭证 |
|------|------|---------|-------------|
| 北京理工大学 | `BIT` | CAS + Session 同步 | 否(复用浏览器 session) |
| 北京航空航天大学 | `BUAA` | CARSI/Shibboleth | 是(username + password) |
| 其他学校 | `MANUAL` | 手动登录 | — |

### 使用示例

```
# BIT(默认,无需凭证)
> "登录图书馆"

# BUAA(需要凭证)
> "用北航账号登录图书馆,用户名 xxx,密码 xxx"
```

### 添加新学校

新增学校只需:
1. 在 `extension/providers/` 下创建 `xxx-provider.js`,继承 `LoginProvider`
2. 在 `extension/background.js` 中注册 Provider

无需修改服务端代码。详见 [多校支持开发指南](./DEVELOPMENT.md)。

## 排错

**插件连接不上**:
```bash
curl http://localhost:8766/health
# {"status":"ok","plugins":1}   plugins=1 表示插件已连接
```

**校外访问失败**:调用 `login_library` 工具,会自动完成 CAS 认证和发现系统 Session 同步。

## 开发状态

当前版本:**v0.2.5**

- [x] WebSocket 通信与心跳保活
- [x] 智真发现系统深度元数据抓取
- [x] 校外自动登录兜底(SSO 重定向构造)
- [x] 搜索前自动检测登录状态
- [x] Windows 托盘二进制打包
- [x] 多校 Provider 架构(BIT + BUAA 验证通过)
- [ ] IEEE Xplore 支持
- [ ] 更多高校 Provider

## 文档

- [安装指南](./INSTALL.md)
- [多校支持开发指南](./DEVELOPMENT.md)

## 许可

MIT License

Maintenance

ActivityInactive
ResponsivenessNo issues