MCP服务器参考文献
用于精确书目查找、验证和BibTeX生成的模型上下文协议(MCP)服务器。与多个学术数据库集成,以交叉验证引用并防止人工智能对引用的幻觉。
特性
- 多源搜索:同时查询语义学者、CrossRef、DBLP、OpenAlex和arXiv
- 引文验证:使用置信度评分根据真实数据库验证引用
- BibTeX生成:使用LaTeX转义生成格式正确的BibTeX条目
- 交叉验证:合并来自多个来源的数据以提高准确性
- 本地高速缓存:基于SQLite的缓存减少了API调用并启用了脱机查找
- 安全:输入消毒、验证和防止注射攻击
- 代码质量:ESLint已为TypeScript配置,并具有推荐的规则
安全特性
此服务器实施了多种安全措施:
- 输入消毒:所有用户输入都经过净化,以防止XSS攻击
- 字符串长度验证:防止通过超大输入进行DoS攻击
- BibTeX注射预防:对BibTeX字段进行消毒,以阻止LaTeX命令注入
- 依赖安全:定期更新以解决依赖关系中的CVE
- 类型安全:具有严格类型检查的完整TypeScript实现
- 错误处理:自定义错误类型,以实现更好的调试和安全性
安装
# Clone the repository
git clone https://github.com/your-org/bibliography-mcp.git
cd bibliography-mcp
# Install dependencies
npm install
# Build the project
npm run build使用Claude Desktop
添加到您的Claude Desktop配置(claude_desktop_config.json):
{
"mcpServers": {
"bibliography": {
"command": "node",
"args": ["/path/to/bibliography-mcp/dist/index.js"]
}
}
}环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
MCP_TRANSPORT | 运输方式: stdio, http,或 stdio,http | stdio |
PORT | HTTP服务器端口 | 3000 |
CACHE_DIR | SQLite缓存数据库目录 | ./data |
SEMANTIC_SCHOLAR_API_KEY | 语义学者的API密钥(可选,增加速率限制) | - |
HTTP流媒体(SSE)
服务器可以使用服务器发送事件(SSE)在流式HTTP上运行,这适用于远程部署。服务器是公共的,不需要身份验证。
端点
GET /health-健康检查(返回缓存统计信息和数据库状态)GET /sse-打开SSE流并返回sessionIdPOST /messages?sessionId=...-会话的JSON-RPC消息
示例
打开SSE流并捕获 sessionId 从 endpoint 事件:
curl -N https://your-app/sse使用发送请求 sessionId:
curl -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' \
"https://your-app/messages?sessionId=YOUR_SESSION_ID"可用工具
搜索路径
按标题、主题或关键字搜索论文。
{
"query": "attention is all you need",
"limit": 10,
"sources": ["semantic-scholar", "dblp"]
}搜索_作者
查找特定作者的论文。
{
"author": "Geoffrey Hinton",
"limit": 10
}get_paper_by_doi
查找DOI(最可靠的方法)的论文。
{
"doi": "10.1145/1234567.1234568"
}get_paper_by_arxiv
查阅arXiv ID的论文。
{
"arxiv_id": "2301.01234"
}验证初始化
对照数据库验证引文准确性。
{
"title": "Attention Is All You Need",
"authors": ["Vaswani", "Shazeer", "Parmar"],
"year": 2017,
"venue": "NeurIPS"
}退货:
- 验证状态和置信度得分
- 对任何差异的建议更正
- 关于潜在问题的警告
get_bibtex
为论文生成BibTeX条目。
{
"doi": "10.1145/1234567.1234568",
"custom_key": "vaswani2017attention"
}get_bibtex_batch
一次为多篇论文生成BibTeX条目(最多20个)。
{
"queries": [
{ "doi": "10.1145/1234567.1234568" },
{ "arxiv_id": "2301.01234" },
{ "title": "Attention Is All You Need", "custom_key": "vaswani2017" }
]
}返回格式化的 .bib 包含所有条目的文件。
Azure部署
部署到Azure容器应用程序以进行远程访问:
# PowerShell
./infra/deploy.ps1 -ResourceGroup "bibliography-mcp-rg" -Environment "prod"
# Bash
./infra/deploy.sh -g "bibliography-mcp-rg" -e "prod"容器应用程序通过端口公开流式HTTP 3000 默认情况下。
构建和推送容器
# Build
docker build -t bibliography-mcp:latest .
# Tag for Azure Container Registry
docker tag bibliography-mcp:latest your-registry.azurecr.io/bibliography-mcp:v1.0.0
# Push
docker push your-registry.azurecr.io/bibliography-mcp:v1.0.0数据源
| 来源 | 覆盖范围 | 最适合 |
|---|---|---|
| 语义学者 | 计算机科学、人工智能、医学 | 计算机科学论文、引用指标 |
| 交叉引用 | 通用 | DOI查找,元数据 |
| DBLP | 计算机科学 | 计算机科学会议/期刊 |
| OpenAlex | 广泛 | 开放获取论文 |
| arXiv | 预印本 | 最新研究,计算机科学/物理/数学 |
发展
# Watch mode for development
npm run dev
# Run linting
npm run lint
# Run tests
npm test
# Run tests with coverage
npm run test:coverage
# Run tests in watch mode
npm run test:watch
# Clean build
npm run clean && npm run build测试
该项目包括核心公用设施的综合单元测试:
- 验证实用程序:所有MCP工具的输入消毒和验证
- BibTeX生成:LaTeX转义和BibTeX格式化
- 归一化:作者姓名、头衔、地点、DOI
- 相似度匹配:字符串比较和纸张匹配算法
- 错误处理:自定义错误类型和层次结构
使用以下工具运行测试:
npm test # Run all tests
npm run test:coverage # Generate coverage report
npm run test:watch # Watch mode for development持续集成
Pull请求会自动通过以下方式进行验证:
- ESLint代码质量检查
- TypeScript编译
- 单元测试执行
- 测试覆盖率报告
CI管道在Node.js 18.x和20.x上运行,以确保兼容性。
建筑
src/
├── index.ts # MCP server entry point
├── types.ts # TypeScript interfaces
├── apis/ # API clients
│ ├── semantic-scholar.ts
│ ├── crossref.ts
│ ├── dblp.ts
│ ├── openalex.ts
│ └── arxiv.ts
├── tools/ # MCP tool implementations
│ ├── search.ts
│ ├── lookup.ts
│ ├── verify.ts
│ └── bibtex.ts
├── cache/
│ └── sqlite.ts # SQLite caching layer
└── utils/
├── bibtex.ts # BibTeX formatting
├── normalize.ts # Data normalization
└── similarity.ts # Fuzzy matching许可证
麻省理工学院
