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. 03DOIによる文献詳細の取得
  4. 04構造化JSONレスポンス

活用シーン

  1. 01タイトルのキーワードから文献を探す
  2. 02著者に関連する文献を見つける
  3. 03既知のDOIからメタデータを取得する

MCP 対応

タイトル検索、著者検索、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 と連携するための Model Context Protocol(MCP)サーバーです。

機能

  • タイトルで文献を検索
  • 著者で文献を検索
  • DOI で文献の詳細を取得

インストール

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

使用方法

このサーバーは、主に次の 3 つのツールを提供します。

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 を 1 件検索した場合:
{
  "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
  });
});

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。