Skip to main content
Glama

SemanticScholar_MCP

Semantic Scholar の 3 つの API ファミリーに対する決定論的な Model Context Protocol インターフェース:

  • S2AG — 学術グラフ検索、メタデータ、著者、引用、参考文献。

  • Recommendations — Semantic Scholar の論文レコメンデーションサービス。

  • Datasets — リリースの検出、データセットマニフェスト、増分データセット更新。

このプロジェクトは、エージェント型の文献調査システムではなく、意図的に薄い API ラッパーを提供します。

設計

中心となるルールは次のとおりです:

1 回の MCP ツール呼び出しは、1 つの文書化された Semantic Scholar 操作を表します。

サーバーは、検証、認証、レート制限、リトライ、レスポンス正規化などのトランスポートレベルの作業を実行します。

どの文献が科学的に重要かを判断することはありません。

例えば:

Agent
  │
  ├── "Search for paired-pulse TMS papers"
  │         │
  │         ▼
  │       S2AG MCP
  │         │
  │         ▼
  │    Semantic Scholar
  │
  ├── "Recommend papers from these three seed papers"
  │         │
  │         ▼
  │  Recommendations MCP
  │         │
  │         ▼
  │    Semantic Scholar
  │
  └── "Describe the latest S2ORC dataset release"
            │
            ▼
       Datasets MCP
            │
            ▼
       Semantic Scholar

検索拡張、科学的解釈、要約、引用グラフ探索戦略、研究総合は、利用側エージェントの責務のままです。

Related MCP server: Semantic Scholar MCP Server

リポジトリ構成

SemanticScholar_MCP/
├── src/
│   └── semantic_scholar_mcp/
│       ├── common/
│       │   ├── client.py
│       │   ├── errors.py
│       │   ├── models.py
│       │   ├── rate_limit.py
│       │   └── __init__.py
│       ├── datasets/
│       │   ├── server.py
│       │   └── __init__.py
│       ├── recommendations/
│       │   ├── server.py
│       │   └── __init__.py
│       ├── s2ag/
│       │   ├── server.py
│       │   └── __init__.py
│       └── __init__.py
├── tests/
├── AGENTS.md
├── CLAUDE.md
├── pyproject.toml
└── README.md

要件

  • Python 3.11 以降

  • Semantic Scholar へのインターネットアクセス

  • 任意の Semantic Scholar API キー

実装は、公式の Python MCP SDK の現在の v2 系を使用しています。

インストール

仮想環境を作成します:

py -3.14 -m venv .venv
.\.venv\Scripts\Activate.ps1

開発用依存関係を含めて、パッケージを編集可能モードでインストールします:

python -m pip install --upgrade pip
python -m pip install -e ".[dev]"

あるいは、uv を使用する場合:

uv venv --python 3.14
uv pip install -e ".[dev]"

Python 3.14 は必須ではありません。このプロジェクトは Python 3.11 以降をサポートしています。

Python パッケージ環境を構成した後、必要に応じてテストを実行します:

pytest
ruff check .
ruff format --check .

SEMANTIC_SCHOLAR_API_KEY をシステム環境変数としてすでに設定している場合(次のセクション 認証 を参照)、ライブ統合もテストできます:

pytest --run-integration

注: システム環境変数を API キーに設定したのが いずれかの VSCode ウィンドウを起動した後である場合、VSCode Extensions 経由で実行されるツールがシステム環境を取得できるようにするには、すべての VSCode ウィンドウを閉じて VSCode を完全に再起動する必要があります。

認証

Semantic Scholar は、多くの API 操作への未認証アクセスをサポートしています。

API キーが利用可能な場合は、次の方法で MCP プロセスに公開します:

$env:SEMANTIC_SCHOLAR_API_KEY = "..."

キーを次の場所に置かないでください:

  • .mcp.json;

  • .codex/config.toml;

  • ソースコード;

  • コミットされた .env ファイル;

  • テストフィクスチャ。

MCP サーバーは、キーが存在する場合に自動的にそれを使用します。

認証が必要な操作は、キーが設定されていない場合に明示的なエラーを返す必要があります。

再度の注: システム環境変数を API キーに設定したのが いずれかの VSCode ウィンドウを起動した後である場合、VSCode Extensions 経由で実行されるツールがシステム環境を取得できるようにするには、すべての VSCode ウィンドウを閉じて VSCode を完全に再起動する必要があります。

ビルド更新

.\rebuild.ps1 と .\version.ps1 は、再ビルド時のバージョン更新を容易にするためのユーティリティとして提供されています:

rebuild.ps1

patch 番号を自動インクリメントせずに再ビルドするには、スイッチを明示的に指定します:

.\rebuild.ps1 -SkipVersionIncrement

それ以外の場合、.\rebuild.ps1 は pyproject.toml 内の patch 番号を直接自動インクリメントします。

version.ps1

再ビルドせずに <major> | <minor> | <patch> をインクリメントする場合:

.\version.ps1 patch -NoRebuild

minor バージョンをインクリメントし、patch を 0 にリセットして再ビルドする場合:

.\version.ps1 minor

major バージョンをインクリメントし、minor と patch の両方を 0 にリセットして再ビルドする場合:

.\version.ps1 major

MCP クライアント構成

3 つの Semantic Scholar MCP サーバーは、次のいずれかの方法で構成できます:

  • プロジェクトローカル: 特定のリポジトリ内でのみ利用可能にします。または

  • ユーザーグローバル: リポジトリをまたいで利用可能にします。

サーバーは次のとおりです:

  • s2ag — Semantic Scholar Academic Graph

  • s2_recommendations — Semantic Scholar Recommendations API

  • s2_datasets — Semantic Scholar Datasets API

以下の例では、このリポジトリが次の場所にインストールされていることを前提としています:

C:\MyRepos\Python\SemanticScholar_MCP

必要に応じてパスを調整してください。

以下の例では、生成された semantic-scholar-*.exe コンソールランチャーを直接呼び出さずに、仮想環境の Python インタープリターを python -m ... で意図的に呼び出しています。これは Windows でのローカル開発中に推奨されます。コンソールランチャーを実行すると、編集可能な再インストール中に pip がそれらを置き換えられなくなる可能性があるためです。

Codex

Codex は、ユーザーグローバルとプロジェクトローカルの両方の config.toml ファイルをサポートしています。

プロジェクトローカルの Codex 構成

作成または編集:

<project>/.codex/config.toml

例:

[mcp_servers.s2ag]
command = 'C:\MyRepos\Python\SemanticScholar_MCP\.venv\Scripts\python.exe'
args = ["-m", "semantic_scholar_mcp.s2ag.server"]
startup_timeout_sec = 15
tool_timeout_sec = 120
enabled = true

[mcp_servers.s2_recommendations]
command = 'C:\MyRepos\Python\SemanticScholar_MCP\.venv\Scripts\python.exe'
args = ["-m", "semantic_scholar_mcp.recommendations.server"]
startup_timeout_sec = 15
tool_timeout_sec = 120
enabled = true

[mcp_servers.s2_datasets]
command = 'C:\MyRepos\Python\SemanticScholar_MCP\.venv\Scripts\python.exe'
args = ["-m", "semantic_scholar_mcp.datasets.server"]
startup_timeout_sec = 15
tool_timeout_sec = 120
enabled = true

プロジェクトスコープの Codex 構成は、Codex が信頼できると見なすプロジェクトに対してのみ読み込まれます。

ユーザーグローバルの Codex 構成

サーバーをプロジェクト横断で Codex から利用できるようにするには、同じ構成を次の場所に配置します:

~/.codex/config.toml

Windows では通常、次の場所です:

%USERPROFILE%\.codex\config.toml

例:

C:\Users\<username>\.codex\config.toml

MCP サーバーブロック自体は、上記のプロジェクトローカルの例と同じです。

Codex 構成の検証

ターミナルから:

codex mcp list

個々の登録は次のコマンドでも確認できます:

codex mcp get s2ag
codex mcp get s2_recommendations
codex mcp get s2_datasets

Claude Code

Claude Code は、プロジェクト共有とユーザースコープの MCP サーバーを区別します。

プロジェクトローカル / プロジェクト共有の Claude 構成

作成:

<project>/.mcp.json

内容:

{
  "mcpServers": {
    "s2ag": {
      "command": "C:\\MyRepos\\Python\\SemanticScholar_MCP\\.venv\\Scripts\\python.exe",
      "args": [
        "-m",
        "semantic_scholar_mcp.s2ag.server"
      ]
    },
    "s2_recommendations": {
      "command": "C:\\MyRepos\\Python\\SemanticScholar_MCP\\.venv\\Scripts\\python.exe",
      "args": [
        "-m",
        "semantic_scholar_mcp.recommendations.server"
      ]
    },
    "s2_datasets": {
      "command": "C:\\MyRepos\\Python\\SemanticScholar_MCP\\.venv\\Scripts\\python.exe",
      "args": [
        "-m",
        "semantic_scholar_mcp.datasets.server"
      ]
    }
  }
}

MCP 構成をそのリポジトリの他のユーザーと共有する場合は、このファイルを利用側リポジトリにコミットできます。

ユーザーグローバルの Claude 構成

グローバルな Claude Code 構成では、ユーザースコープの MCP 登録を Claude Code に管理させる方法が推奨されます。

実行:

claude mcp add --scope user s2ag -- "C:\MyRepos\Python\SemanticScholar_MCP\.venv\Scripts\python.exe" -m semantic_scholar_mcp.s2ag.server

claude mcp add --scope user s2_recommendations -- "C:\MyRepos\Python\SemanticScholar_MCP\.venv\Scripts\python.exe" -m semantic_scholar_mcp.recommendations.server

claude mcp add --scope user s2_datasets -- "C:\MyRepos\Python\SemanticScholar_MCP\.venv\Scripts\python.exe" -m semantic_scholar_mcp.datasets.server

Claude Code は現在、ユーザースコープの MCP 構成を次の場所に保存します:

~/.claude.json

Windows の場合:

%USERPROFILE%\.claude.json

claude mcp add --scope user を使用する方法は、このファイルを手動で編集するよりも推奨されます。Claude Code が .claude.json 内に追加の状態を保持しているためです。

登録を確認するには:

claude mcp list

特定の Claude Code バージョンでユーザースコープの MCP サーバーの読み込みに問題がある場合は、プロジェクトの .mcp.json 構成が最も簡単な代替手段です。

Semantic Scholar API キー

多くの Semantic Scholar 操作は認証なしで動作できます。API キーを必要とする操作では次を使用します:

SEMANTIC_SCHOLAR_API_KEY

キーを MCP 構成ファイルにコミットしないでください。

Windows では、ユーザー環境変数として永続化できます:

[Environment]::SetEnvironmentVariable(
    "SEMANTIC_SCHOLAR_API_KEY",
    "YOUR_API_KEY",
    "User"
)

変数を設定した後、VS Code、Codex、Claude Code、その他の MCP ホストを再起動して、新しく起動される MCP プロセスがそれを継承するようにしてください。

MCP サーバーは、キーが存在する場合は自動的にそれを使用し、存在しない場合は、Semantic Scholar が匿名アクセスを許可している箇所では未認証のまま動作します。

プロジェクトローカルとユーザーグローバルの比較

有用な基準は次のとおりです:

スコープ

Codex

Claude Code

推奨されるケース

プロジェクト

.codex/config.toml

.mcp.json

リポジトリがこれらの調査ツールに明示的に依存している場合

ユーザー

~/.codex/config.toml

claude mcp add --scope user

無関係な多くのリポジトリで Semantic Scholar を利用可能にしたい場合

調査エージェントが明示的に文献発見を実行することが期待される研究リポジトリでは、利用可能な調査ツールがリポジトリとともに移動するため、通常はプロジェクトローカル構成の方が適しています。

任意のプロジェクトから Semantic Scholar への一般的な個人アクセスには、ユーザーグローバル構成の方が便利です。

共有レート制限

Semantic Scholar の入門用認証済みレート制限は、各 MCP サーバーに独立して適用されるのではなく、API エンドポイント全体に適用されます。

そのため、このリポジトリは共有のプロセス間リミッターを使用します:

S2AG MCP ────────────────┐
                         │
Recommendations MCP ─────┼── shared limiter ──> Semantic Scholar
                         │
Datasets MCP ────────────┘

デフォルトの実装では、3 つのローカルサーバー全体で、1 秒あたりおよそ 1 回以下のアップストリームリクエストを許可する必要があります。

これは、複数のホストが同時に実行されている場合に重要です。例えば:

VS Code / Codex
Claude Code
MCP Inspector
tests

リミッターは、各プロセスで独立したクロックを維持するのではなく、これらのプロセスを調整する必要があります。

リトライ動作

一時的なアップストリーム障害は、上限付きの指数バックオフを使用してリトライできます。

例:

  • HTTP 429;

  • 一時的な 5xx レスポンス;

  • 一時的なネットワーク障害。

Retry-After が指定されている場合は、それが尊重されます。

無効なリクエスト、拒否された認証、リソースの欠落などの通常のクライアントエラーは、繰り返しリトライされません。

リトライには上限があります。MCP が無期限にリトライすることはありません。

S2AG MCP

実行:

semantic-scholar-s2ag

または:

python -m semantic_scholar_mcp.s2ag.server

初期の API サーフェスには次のものが含まれる予定です:

ツール

目的

get_paper

既知の論文を 1 件取得する

get_papers

既知の論文を一括取得する

search_papers

構造化 / 一括の論文検索

search_papers_relevance

関連性順にランク付けされた論文検索

get_citations

ある論文を引用している論文の 1 ページ分を取得する

get_references

ある論文の参考文献の 1 ページ分を取得する

get_author

著者を 1 人取得する

get_authors

既知の著者を一括取得する

search_authors

著者を検索する

get_author_papers

著者の論文の 1 ページ分を取得する

ページネーションは明示的なままです。

引用リクエストは引用グラフを再帰的に辿りません。

検索は自動的にフォローアップ検索を発行しません。

Recommendations MCP

実行:

semantic-scholar-recommendations

または:

python -m semantic_scholar_mcp.recommendations.server

初期のサーフェスは意図的に小さくなっています:

ツール

目的

recommend_for_paper

1 つのシード論文を使用してレコメンデーションをリクエストする

recommend_from_examples

提供されたポジティブおよびネガティブな論文 ID を使用してレコメンデーションをリクエストする

サーバーは、呼び出し側が選択したシードを Semantic Scholar に渡します。

サーバー自身がシードを選択したり、結果に 2 回目の LLM 生成ランキングを適用したりすることはありません。

概念的なワークフローの例:

positive:
  paper A
  paper B
  paper C

negative:
  paper D

        │
        ▼

recommend_from_examples

        │
        ▼

Semantic Scholar recommendation ranking

Datasets MCP

実行:

semantic-scholar-datasets

または:

python -m semantic_scholar_mcp.datasets.server

初期ツールは次のとおりです:

ツール

目的

list_releases

利用可能なデータセットリリースを一覧表示する

get_release

特定のリリースを調査する

get_dataset

データセットのメタデータ / マニフェスト情報を取得する

get_diffs

リリース間の更新 / 削除マニフェストを取得する

Datasets MCP は、Semantic Scholar のデータセット全体を自動的にダウンロードすることは意図的にありません。

一部の Semantic Scholar データセットは非常に大きくなっています。マニフェストの取得は適切な MCP 操作ですが、数ギガバイトのコーパスのダウンロードを開始するには、ユーザーが明示的に制御できるツールが必要です。

将来の専用 CLI は、次のようなコマンドを提供するかもしれません:

s2-dataset download ...
s2-dataset update ...
s2-dataset verify ...

それらの操作を暗黙の MCP 動作にすることなく。

決定性

このプロジェクトにおいて、決定性とはツールのセマンティクスが明示的かつ検査可能であることを意味します。

ツールは次のことを行う場合があります:

validate input
    ↓
wait for rate limiter
    ↓
make one documented API request
    ↓
retry transient transport failures if necessary
    ↓
normalize response
    ↓
return structured data

ツールが暗黙のうちに次のようになってはなりません:

search
   ↓
search again with different terms
   ↓
fetch every page
   ↓
walk citations
   ↓
request recommendations
   ↓
rank with an LLM
   ↓
summarize papers

より高レベルのオーケストレーションは、このリポジトリの外部に属します。

ページネーション

ページネーションは呼び出し側が制御します。

Semantic Scholar が継続トークン、オフセット、または同等のカーソルを返す場合、MCP はその値を返します。

呼び出し側は明示的に次のページをリクエストできます。

MCP は利用可能なすべてのページを自動的に取得しません。

これにより、決定性と API 使用量の両方が保護されます。

フィールド

Semantic Scholar が明示的なレスポンスフィールドをサポートしている場合、ツールは呼び出し側が必要とするフィールドのみをリクエストする必要があります。

使いやすさのために、小さなデフォルトのフィールドセットが提供される場合があります。

抄録や引用コンテキストなどの大きなフィールドは、文書化されたツールのデフォルトの一部でない限り、自動的にリクエストすべきではありません。

エラー

アップストリームの状態は、安定した理解しやすい MCP エラーに変換されるべきです。

例:

authentication_required
rate_limited
not_found
invalid_request
upstream_error
transport_error

有用な場合、構造化エラーは次のものを保持することがあります:

  • HTTPステータス;

  • 再試行可能性;

  • 試行回数;

  • Semantic Scholarのエラーメッセージ。

シークレットを絶対に含めてはなりません。

開発

単体テストを実行:

pytest

Lintを実行:

ruff check .

フォーマットを確認:

ruff format --check .

フォーマットを適用:

ruff format .

Semantic Scholarのライブテストは別途マークされています:

pytest --run-integration

通常の単体テストはHTTP通信をモックし、Semantic Scholar APIのクォータを消費してはなりません。

テスト方針

最も重要なテストはAPI忠実性を検証することです。

すべてのMCPツールについて、テストは以下を確認する必要があります:

input
  ↓
exact expected HTTP operation
  ↓
expected response normalization

テストはまた、隠れた動作がないことも検証する必要があります。

例えば、1回の引用リクエストは1回の引用API操作を生成すべきであり、後続のページや参考文献を自動的にリクエストしてはなりません。

研究ツールとの関係

このリポジトリはドメイン中立のままでなければなりません。

例えば、以下を公開できます:

paper A cites paper B

または:

Semantic Scholar recommends paper C from seeds A and B

しかし、以下のように結論づけてはなりません:

paper C is the strongest evidence for a particular neuroscience hypothesis

別の研究リポジトリ、Research MCP、または人間の研究者がその解釈を行うことができます。

この分離により、Semantic Scholarレイヤーは以下を維持できます:

  • 決定論的;

  • 再利用可能;

  • テストが容易;

  • 特定の科学分野に依存しない;

  • さまざまなMCPホストおよびエージェントで利用可能。

Semantic Scholarの利用

このプロジェクトは正当な研究目的での使用を意図しており、現在のSemantic Scholar APIライセンスおよびドキュメントに準拠する必要があります。

APIの利用は以下を行うべきです:

  • アクティブなレート制限を尊重する;

  • 適切な場合はバッチ/一括操作を使用する;

  • 必要なフィールドのみをリクエストする;

  • 上限付き指数バックオフを使用する;

  • API資格情報を保護する;

  • 無制限のAPIクローリングを避ける;

  • 本当にコーパス規模のアクセスが必要な場合は、Datasets APIを優先する。

Semantic Scholarの応答データを使用する公開製品または表示には、追加の帰属表示要件がある場合があります。公開向けのデータ表示を追加する前に、現在のSemantic Scholarライセンスを確認してください。

このリポジトリの規範的な開発およびAPI使用ルールについては、AGENTS.mdを参照してください。

Available Tools

10 tools
get_authorC

Get one Semantic Scholar author by author ID.

NameRequiredDescriptionDefault
fieldsNo
author_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Get one author' and does not mention what happens on missing IDs, what fields are returned, rate limits, or any side effects. The behavior is minimally implied but not detailed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, terse sentence with no wasted words. It is appropriately concise for the scope, though it sacrifices detail for brevity. The structure is clean and front-loaded with the key action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with two parameters, no annotations, and an output schema (not shown), the description is too sparse. It fails to explain the fields parameter, usage context, or any behavioral nuances, leaving an agent with incomplete information to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It clarifies that author_id is used to identify the author, but completely omits any explanation of the 'fields' parameter—its purpose, allowed values, or format. With two parameters, this is a significant gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get', the resource 'Semantic Scholar author', and the identifier 'author ID'. It distinguishes this from siblings like get_authors (plural) and search_authors (search-based), so an agent can easily tell it apart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to use this tool versus alternatives like search_authors or get_authors. There is no mention of conditions such as 'when you have a known author ID' or exclusions, leaving usage to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_author_papersC

Get one page of papers associated with a Semantic Scholar author.

NameRequiredDescriptionDefault
limitNo
fieldsNo
offsetNo
author_idYes
publication_date_or_yearNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral disclosure burden. It usefully reveals pagination behavior ('one page'), but it leaves the meaning of 'associated' ambiguous (authored, co-authored, or cited?) and says nothing about ordering, rate limits, authentication, or failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single 10-word sentence that front-loads the verb and resource. It is efficiently sized for a straightforward tool, though its brevity comes at the cost of the semantic gaps noted in other dimensions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 5 parameters at 0% schema coverage, overlapping siblings, and no annotations, the description is too thin to fully support correct invocation. An output schema exists, which spares it from documenting return values, but parameter semantics and tool-selection context remain unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% with 5 parameters, yet the description explains none of them. While names like author_id, limit, and offset are somewhat self-explanatory, the meaning and format of fields and publication_date_or_year are completely unexplained, and the description adds no value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Get one page of papers associated with a Semantic Scholar author') that clearly distinguishes it from author-lookup siblings like get_author and search_authors. However, it does not explicitly differentiate from paper-lookup siblings like get_papers or search_papers, which could also be selected for fetching papers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives such as get_papers, search_papers, or search_papers_relevance. With a sibling list full of overlapping paper-fetching tools, the absence of any selection criteria or exclusions leaves the agent to guess.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_authorsB

Batch-get up to 1000 Semantic Scholar author IDs.

NameRequiredDescriptionDefault
fieldsNo
author_idsYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It does disclose two useful traits: the operation is batched and capped at 1000 IDs. However, it says nothing about handling of missing or invalid IDs, result ordering, rate limits, or authentication, leaving significant behavior unspecified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the batch limit is placed prominently and every word contributes. It is concise without being empty.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Insufficient for a tool with no annotations and no per-parameter documentation. The output schema may cover return shape, but the agent still lacks when-to-use guidance, understanding of the fields parameter, and failure behavior expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does not: 'author IDs' only restates the author_ids property, and the optional fields parameter is completely unexplained even though it likely controls which author attributes are returned.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description supplies a specific verb ('Batch-get'), a resource (Semantic Scholar authors), and a batch-size limit (1000), so the core operation is clear. It does not explicitly differentiate from the sibling get_author or search_authors, and 'author IDs' is slightly ambiguous as to whether IDs are the input or the returned objects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool versus get_author (single author) or search_authors (find authors by query). 'Batch' hints at multiple IDs, but no explicit conditions, preconditions, or alternatives are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_citationsC

Get one page of papers that cite the requested paper.

NameRequiredDescriptionDefault
limitNo
fieldsNo
offsetNo
paper_idYes
publication_date_or_yearNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It mentions pagination ('one page') but does not disclose behavior such as default limit, offset semantics, field filtering, or whether results are sorted. For a read tool, this is a moderate gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that is front-loaded with the core action. It earns its place but could add a bit more context without becoming bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 5 parameters, 0% schema coverage, no annotations, and an output schema present, the description is too thin. It does not explain pagination parameters, field selection, or the output structure, making it incomplete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, but it only explains paper_id implicitly. The limit, offset, fields, and publication_date_or_year parameters are not described at all, leaving the agent to guess their semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and resource ('papers that cite the requested paper'), which clearly identifies the tool's function. It does not explicitly distinguish it from siblings like get_references, but the resource is specific enough that an agent can infer the difference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as get_references or search_papers. The description implies a use case (fetching citing papers) but does not state exclusions or conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_paperB

Get one paper by Semantic Scholar ID or supported external identifier.

NameRequiredDescriptionDefault
fieldsNo
paper_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden for behavioral disclosure. It only says 'get' and gives no information about read-only behavior, external identifier resolution, authentication/rate limits, or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single efficient sentence with no filler, and the key scoping information—one paper, by identifier—is front-loaded. Every word contributes to the agent's understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Since an output schema exists, the return shape does not need to be explained, and the description is adequate for a simple lookup. Still, the fields parameter is left unexplained and there is no guidance on which sibling tools to use for search or batch retrieval, leaving gaps in the full calling context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds useful meaning to paper_id by explaining that it accepts either a Semantic Scholar ID or a supported external identifier, which the schema alone does not convey. However, the optional fields parameter is not mentioned at all, and with 0% schema description coverage the description should compensate more fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a direct fetch of a single paper, keyed by Semantic Scholar ID or supported external identifier. The singular 'one paper' and identifier-based lookup distinguish it from search_papers, but it never explicitly names sibling tools such as get_papers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used when an identifier is already known, but it gives no explicit guidance about when not to use it or when to prefer search_papers/get_papers. This is usable guidance but left mostly to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_papersA

Batch-get up to 500 caller-supplied paper identifiers.

NameRequiredDescriptionDefault
fieldsNo
paper_idsYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral disclosure burden. It adds a useful constraint ('up to 500') and makes the retrieval semantics inferable from 'batch-get', but it does not mention handling of invalid IDs, over-limit requests, error behavior, or the effect of the optional fields parameter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence that conveys the verb, object, and key constraint with no filler. Every word earns its place and the structure makes the main behavior immediately clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema covers returned values, and paper_ids is clearly described enough for a straightforward batch fetch. However, the optional fields parameter is entirely unexplained and there is no explicit guidance distinguishing this tool from get_paper, so an agent may under-specify the request or choose the wrong sibling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It clarifies that paper_ids are caller-supplied paper identifiers and that the batch is capped at 500, but it says nothing about the fields parameter—its meaning, allowed values, or effect—leaving one of two parameters effectively undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('batch-get'), resource ('papers'), and defining constraints ('up to 500 caller-supplied paper identifiers'). This clearly distinguishes it from the search_* siblings, which do not take caller-supplied paper_ids, and from get_paper, which is the singular variant.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'caller-supplied paper identifiers' signals that this tool is for known IDs rather than search queries, and 'batch' positions it for fetching multiple papers at once. It does not explicitly name get_paper for single lookups or state when not to use this tool, so it stops short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_referencesC

Get one page of references cited by the requested paper.

NameRequiredDescriptionDefault
limitNo
fieldsNo
offsetNo
paper_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'one page' which hints at pagination, but does not explain default page size, how offset/limit interact, whether results are sorted, or what happens if the paper has no references. It also does not disclose any rate limits, authentication needs, or side effects (though this is likely a read operation).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. It front-loads the core action and resource. However, it is so brief that it misses important parameter and usage details, so it is concise but under-specified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 parameters, 0% schema coverage, no annotations, and an output schema exists, the description is incomplete. It does not explain pagination parameters, field selection, or how the output is structured. The output schema may help, but the description should at least clarify the meaning of limit, offset, and fields to allow correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the four parameters. It only clarifies that paper_id identifies the paper whose references are returned. It does not explain limit, offset, or fields. The term 'one page' implies limit/offset but does not define their semantics or defaults. The fields parameter is completely unexplained, leaving the agent to guess what field names are valid.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and resource ('references cited by the requested paper'), and the phrase 'one page' signals pagination. It is clear enough to distinguish from siblings like get_citations, which likely returns citing papers rather than cited references. However, it does not explicitly differentiate from get_paper or get_papers, which could also return reference lists.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives like get_citations or search_papers. It does not mention pagination behavior, how to request more pages, or any context about typical use cases. The only implied usage is that it returns references for a paper, but no exclusions or alternatives are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_authorsC

Search authors by name using one offset-paginated request.

NameRequiredDescriptionDefault
limitNo
queryYes
fieldsNo
offsetNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only reveals that this is 'one offset-paginated request' and says nothing about matching semantics, ordering, rate limits, or read-only safety. This is minimal added context beyond the name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler. Every word contributes to the core action, making it structurally clean and appropriately sized for such a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations, four parameters, and a sibling set that includes get_authors and get_author, this description is insufficiently complete. An agent still needs to understand pagination behavior, fields semantics, and how this tool differs from the retrieval siblings. The output schema covers return values, but the calling context remains vague.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description needed to explain query, limit, offset, and fields. It only hints that the query is a name and gives no details about field projections, pagination bounds, or how the parameters interact. The description fails to compensate for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'search', the resource 'authors', and the filter 'by name', and it mentions offset pagination. It is distinguishable from siblings such as get_authors, though it does not explicitly contrast them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use search_authors versus get_authors or get_author. There are no conditions, exclusions, or alternative recommendations, leaving the agent to infer the appropriate context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_papersC

Run one token-paginated /paper/search/bulk request.

This endpoint returns up to 1000 papers per upstream call and does not accept a limit argument. Pass the returned token explicitly for the next page.

NameRequiredDescriptionDefault
sortNo
yearNo
queryYes
tokenNo
venueNo
fieldsNo
fields_of_studyNo
open_access_pdfNo
publication_typesNo
min_citation_countNo
publication_date_or_yearNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry behavioral disclosure. It does disclose the key pagination behavior: returns up to 1000 papers per call, no limit argument, and requires the token for the next page. However, it does not mention other behaviors like filtering semantics, output format, or any potential side effects. The disclosure is useful but incomplete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no redundancy. It front-loads the core action and states the pagination constraint efficiently. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 11 parameters and zero schema descriptions, the description is severely under-specified. An agent cannot correctly construct a query without understanding parameters like fields_of_study, publication_types, min_citation_count, and publication_date_or_year. The output schema exists, but the input semantics are nearly absent, making this inadequate for a tool of this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains the token parameter via pagination, but the other 10 parameters (query, sort, year, venue, fields, etc.) are left entirely to schema titles, which provide no semantic meaning. The description adds value only for the token, failing to clarify the rest.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: running a bulk paper search request with pagination. It mentions the specific endpoint and the pagination behavior. However, it does not differentiate from the sibling search_papers_relevance, which likely orders by relevance, leaving ambiguity about when to choose one over the other.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives like search_papers_relevance or get_papers. It only implies bulk retrieval via the word 'bulk', but does not state conditions for selection or exclusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_papers_relevanceB

Run one relevance-ranked /paper/search request.

Relevance search is limited by Semantic Scholar to 100 results per call and 1000 relevance-ranked results total.

NameRequiredDescriptionDefault
yearNo
limitNo
queryYes
venueNo
fieldsNo
offsetNo
fields_of_studyNo
open_access_pdfNo
publication_typesNo
min_citation_countNo
publication_date_or_yearNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry behavioral disclosure. It does disclose important limits (100 per call, 1000 total), which is useful. However, it omits other behavioral traits such as authentication requirements, side effects, or that it's a read operation, leaving gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no fluff, purpose front-loaded, and the limit context stated efficiently. Excellent structure for the information provided.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 11 parameters with no schema descriptions and no output schema details in the description. The only contextual info is the result limits. Given the complexity, this is incomplete for correct usage; an agent would struggle with valid values for fields like publication_types or fields_of_study.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for parameter meaning. It provides no information about any of the 11 parameters, leaving agents to guess from names alone. This is a significant gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool runs a relevance-ranked /paper/search request, specifying the verb and resource. It distinguishes from siblings through the 'relevance-ranked' qualifier, though it does not explicitly name the alternative search tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives like search_papers. The description only mentions limits, not the selection criteria based on relevance needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv0.2.3
    • First observedget_author
    • First observedget_author_papers
    • First observedget_authors
    • First observedget_citations
    • First observedget_paper
    • First observedget_papers
    • First observedget_references
    • First observedsearch_authors
    • First observedsearch_papers
    • First observedsearch_papers_relevance

TDQS

B3.4/5.0

Scored across 10 tools

Disambiguation4/5

Tools are mostly distinct: get_authors/get_author differ by batch vs single ID, and search_papers vs search_papers_relevance are differentiated by bulk vs relevance-ranked semantics. The only slight confusion is the two search variants, but descriptions clarify their differing endpoints.

Naming Consistency4/5

Naming follows a consistent verb_noun pattern with get_ for retrieval and search_ for querying. search_papers_relevance is a minor deviation from the simple object naming, but it remains readable and predictable.

Tool Count5/5

10 tools is well-scoped for a scholarly search and retrieval API, covering authors, papers, citations, references, and author-paper relationships without unnecessary redundancy.

Completeness5/5

The surface covers the core academic search workflows: author lookup, single/batch paper retrieval, external ID support, bulk and relevance search, citations, references, and author-associated papers. For a read-only domain, no major gaps are apparent.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to query the Semantic Scholar Academic Graph for scholarly paper data, supporting tools for search, retrieval, and analysis.
    10 npm
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables access to academic paper data, author profiles, and citation networks through the Semantic Scholar API, supporting paper search, batch retrieval, citation/reference tracking, author lookup, and recommendations.
    -