mcpField
C
Crossref MCP Server

Crossref MCP Server

本地服务
github.com/botanicastudios搜索与检索483 周前更新

关于 Crossref MCP Server

Crossref MCP Server 为需要学术作品元数据的客户端提供 Crossref API 接口。它支持按标题或作者搜索,以及通过 DOI 查询作品,并以结构化 JSON 返回结果。

主要功能

  1. 01按标题搜索作品
  2. 02按作者搜索作品
  3. 03通过 DOI 获取作品详情
  4. 04返回结构化 JSON 结果

适用场景

  1. 01按标题关键词查找出版物
  2. 02查找与某位作者相关的作品
  3. 03获取已知 DOI 对应的元数据

MCP 相关

将 Crossref 的标题搜索、作者搜索和 DOI 查询作为工具提供给 MCP 客户端。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"crossref": {
"command": "npx",
"args": [
"-y",
"@botanicastudios/crossref-mcp"
]
}
}
}
启动命令npx -y @botanicastudios/crossref-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@botanicastudios/crossref-mcp

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Crossref MCP 服务

用于与 Crossref API 交互的模型上下文协议(MCP)服务。

功能

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

安装

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

用法

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

1. 按标题搜索

按标题在 Crossref 中搜索作品:

// Example: Search for works containing "quantum computing" in the title
{
  "title": "quantum computing",
  "rows": 5  // Optional, defaults to 5
}
2. 按作者搜索

按作者在 Crossref 中搜索作品:

// Example: Search for works by "Einstein"
{
  "author": "Einstein",
  "rows": 5  // Optional, defaults to 5
}
3. 按 DOI 获取作品

使用 DOI 检索特定作品:

// Example: Get work with DOI "10.1088/1742-6596/1398/1/012023"
{
  "doi": "10.1088/1742-6596/1398/1/012023"
}

响应格式

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

搜索成功时:
{
  "status": "success",
  "query": {
    /* the original query parameters */
  },
  "count": 5,
  "results": [
    {
      "title": "Work title",
      "authors": [
        {
          "given": "First name",
          "family": "Last name",
          "name": "First name Last name"
        }
      ],
      "published": {
        "dateParts": [2023, 1, 15],
        "dateString": "2023-1-15"
      },
      "type": "journal-article",
      "doi": "10.xxxx/xxxxx",
      "url": "https://doi.org/10.xxxx/xxxxx",
      "container": "Journal Name",
      "publisher": "Publisher Name",
      "issue": "1",
      "volume": "42",
      "abstract": "This is the abstract of the work, if available."
    }
    // additional results...
  ]
}
查询单个 DOI 时:
{
  "status": "success",
  "query": { "doi": "10.xxxx/xxxxx" },
  "result": {
    // work details as shown above
  }
}
出错或无结果时:
{
  "status": "error" | "no_results" | "not_found",
  "message": "Error message" | null,
  "query": { /* the original query parameters */ }
}

测试

该服务附带一套全面的测试套件,使用 Vitest 编写。测试涵盖所有可用工具,并包含多种场景,例如成功响应、空结果和错误处理。

运行测试
npm test
测试结构

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

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

要添加更多测试用例:

  1. 根据需要在测试文件中添加新的模拟数据
  2. 在相关的 describe 块中创建更多测试用例
  3. 使用 mockFetchResponse() 辅助函数模拟 API 响应

示例:

it("should handle a new edge case", async () => {
  // Mock the response
  mockFetchResponse({
    // Your sample response data
  });

  // Call the handler
  const result = await handlers.searchByTitle({ title: "example" });

  // Assert the expected results
  expect(result).toMatchObject({
    // Expected response structure
  });
});

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。