b

botanicastudios

@botanicastudios/crossref-mcp
Hosted
0 Stars 699 次浏览 botanicastudios 更新于 2026-08-23

MCP 服务配置

复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用

{
  "mcpServers": {
    "crossref": {
      "args": [
        "-y",
        "@botanicastudios/crossref-mcp"
      ],
      "command": "npx"
    }
  }
}

可用工具 (3 个)

该服务在 MCP 协议中暴露的工具,AI 可按需调用

searchByTitle

Search for scientific papers by title in Crossref

该工具无需必填参数,直接调用即可

searchByAuthor

Search for scientific papers by author in Crossref

该工具无需必填参数,直接调用即可

getWorkByDOI

Retrieve a specific scientific paper by its DOI

该工具无需必填参数,直接调用即可

服务介绍

Crossref MCP 服务器

一个用于与 Crossref API 交互的 Model Context Protocol (MCP) 服务器。

功能

  • 按标题搜索作品
  • 按作者搜索作品
  • 通过 DOI 获取作品详情

安装

{
"mcpServers": {
"crossref": {
"command": "npx",
"args": [
"-y",
"@botanicastudios/crossref-mcp"
]
}
}
}

使用方法

该服务器提供了三个主要工具:

1. 按标题搜索

按标题在 Crossref 中搜索作品:

javascript
// 示例:搜索标题中包含 "quantum computing" 的作品
{
"title": "quantum computing",
"rows": 5 // 可选,默认为 5
}

2. 按作者搜索

按作者在 Crossref 中搜索作品:

javascript
// 示例:搜索作者为 "Einstein" 的作品
{
"author": "Einstein",
"rows": 5 // 可选,默认为 5
}

3. 通过 DOI 获取作品

使用 DOI 检索特定作品:

javascript
// 示例:获取 DOI 为 "10.1088/1742-6596/1398/1/012023" 的作品
{
"doi": "10.1088/1742-6596/1398/1/012023"
}

响应格式

所有响应都以结构化的 JSON 对象形式返回,格式如下:

成功搜索时:

json
{
"status": "success",
"query": {
/* 原始查询参数 */
},
"count": 5,
"results": [
{
"title": "作品标题",
"authors": [
{
"given": "名字",
"family": "姓氏",
"name": "全名"
}
],
"published": {
"dateParts": [2023, 1, 15],
"dateString": "2023-1-15"
},
"type": "期刊文章",
"doi": "10.xxxx/xxxxx",
"url": "https://doi.org/10.xxxx/xxxxx",
"container": "期刊名称",
"publisher": "出版商名称",
"issue": "1",
"volume": "42",
"abstract": "这是作品的摘要(如果可用)。"
}
// 更多结果...
]
}

单个 DOI 查找时:

json
{
"status": "success",
"query": { "doi": "10.xxxx/xxxxx" },
"result": {
// 如上所示的作品详情
}
}

出现错误或无结果时:

json
{
"status": "error" | "no_results" | "not_found",
"message": "错误信息" | null,
"query": { /* 原始查询参数 */ }
}

测试

该服务器附带了一个使用 Vitest 的全面测试套件。测试涵盖了所有可用工具,并包括各种场景,包括成功响应、空结果集和错误处理。

运行测试

npm test

测试结构

这些测试使用了 Vitest 的模拟功能来模拟 Crossref API 响应,而无需实际发起网络请求。测试结构包括:

  1. 模拟数据:标题搜索、作者搜索和 DOI 查找的示例响应
  2. 模拟处理器mcp-server-test-handlers.js 文件中的测试版本处理器函数
  3. 测试用例:涵盖所有工具的测试用例,包括:
    • 成功的 API 响应
    • 空的结果集
    • 错误处理和网络故障

扩展测试

要添加更多测试用例:

  1. 如果需要,向测试文件中添加新的模拟数据
  2. 在相关的 describe 块中创建额外的测试用例
  3. 使用 mockFetchResponse() 辅助函数来模拟 API 响应

示例:

javascript
it("应该处理一个新的边界情况", async () => {
// 模拟响应
mockFetchResponse({
// 你的示例响应数据
});

// 调用处理器
const result = await handlers.searchByTitle({ title: "example" });

// 断言预期结果
expect(result).toMatchObject({
// 预期的响应结构
});
});

相关 MCP 服务