Ookcite Mcp について
Ookcite Mcp は学術ワークフロー向けの MCP サーバーで、DOI の検証、引用情報の解決と整形、文献コレクションの管理を行います。PDF や全文ではなく、引用メタデータを返します。
主な機能
- 01DOI と ISBN の検証
- 02不完全な引用テキストの解決
- 03参考文献の一括検証と整形
- 04CSL 引用スタイルへの対応
- 05文献コレクションのインポート・出力・管理
活用シーン
- 01論文投稿前の参考文献確認
- 02貼り付けた引用一覧の BibTeX 変換
- 03指定した CSL スタイルでの文献一覧作成
MCP 対応
MCP クライアントに、引用の検索・検証・整形とコレクション管理のツールを提供します。標準入出力またはリモートの Streamable HTTP で接続できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @turtletech/ookcite-mcpOOKCITE_API_KEYシークレットOptional. Raises the anonymous rate limit and enables the collection tools. Sign up at https://my.turtletech.us/signup?service=ookcite&source=ookcite_mcpローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
OokCite MCP サーバー
MCP 対応ツールで、DOI の検証、引用の書式設定、文献コレクションの管理、捏造された参考文献の検出ができるようになります。返されるのは引用メタデータのみで、PDF や論文の全文ではありません。デスクトップクライアントは標準入力と標準出力経由で実行できます。リモートクライアントは
https://ookcite-api.turtletech.us/mcpを使用します。
クイックスタート
インストールと設定を1つのコマンドで行えます。
npx @turtletech/ookcite-mcp setup
このコマンドは、対応するMCPクライアントを自動検出し、設定を書き込みます。シェル引数やMCP設定にAPIキーを含めずに、OokCiteアカウントを接続して、より高いレート制限とコレクションツールを利用できます。
npx @turtletech/ookcite-mcp setup --connect
このコマンドはTurtleTechダッシュボードを開き、Freeプランを作成または有効化して、発行されたキーをプラットフォームの認証情報ストアに保存し、検出されたクライアントには認証情報の参照のみを書き込みます。ヘッドレスマシンではsetup --connect --deviceを使用してください。
既存のAPIキーも引き続き使用できます。
npx @turtletech/ookcite-mcp setup --key YOUR_API_KEY
基本的な使用(1日20回の検索)にはAPIキーは不要です。format_citationと、小規模なプレーンテキストのimport_bibliography(collectionを省略し、最大8件まで)を利用できます。詳細はサインアップしてください。
リストを貼り付けてBibTeXに変換
import_bibliographyは、.bib / .risだけでなく、番号付きまたは空行区切りの引用リストも受け付けます。少量のリストを貼り付ける場合はcollectionを省略してください。このツールが項目を解決し、.bibテキストを返します。キーがある場合は、collectionを指定して解決済みのエントリを保存できます。その後、export_collectionで.bib(format=bib)またはCSL形式の参考文献テキスト(format=csl、またはieeeなどのスタイルID)を出力できます。
npx @turtletech/ookcite-mcp setupは引き続きインストーラーとして使用できます。このサーバーがPDFを取得することはありません。
MCP設定を変更した後は、クライアントを再起動するか、MCPサーバーを再読み込みしてください。多くのクライアントでは、実行中のstdioサーバーの環境変数の変更はホットリロードされません。
インストール(その他の方法)
npm(推奨):
npm install -g @turtletech/ookcite-mcp
cargo-binstall(最速、Node.js不要):
cargo binstall ookcite-mcp
cargo install(ソースから):
cargo install ookcite-mcp
ビルド済みバイナリ:Linux(x86_64、aarch64)、macOS(x86_64、aarch64)、Windows向けのバイナリを GitHub Releasesからダウンロードできます。
設定
setupを使用した場合は、これで完了です。それ以外の場合は、MCPクライアントの設定に追加してください。
{
"mcpServers": {
"ookcite": {
"command": "npx",
"args": ["-y", "@turtletech/ookcite-mcp"]
}
}
}
APIキーを使用する場合:
{
"mcpServers": {
"ookcite": {
"command": "npx",
"args": ["-y", "@turtletech/ookcite-mcp"],
"env": {
"OOKCITE_API_KEY": "your_key_here"
}
}
}
}
グローバルにインストールした場合(npm install -gまたはcargo install)、npxの代わりに"command": "ookcite-mcp"を直接使用できます。
設定ファイルにキーを保存しない
setup --connect はデフォルトでプラットフォームの認証情報ストアを使用します。--replace-credential または --replace-config を明示的に指定しない限り、既存のプラットフォーム認証情報や名前付きの OokCite MCP 設定を置き換えません。
汎用の認証情報マネージャーも使用できます。保存コマンドは標準入力から新しいキーを受け取ります。コマンドライン引数でキーを受け取ることは想定していません。取得コマンドは、MCP サーバーの起動時に標準出力へキーを出力します。
npx @turtletech/ookcite-mcp setup --connect \
--store-command "credential-cli store ookcite" \
--retrieve-command "credential-cli read ookcite"
認証情報マネージャーの代わりに、所有者のみがアクセスできるファイルを明示的に指定する場合:
npx @turtletech/ookcite-mcp setup --connect \
--credential-file "$HOME/.config/ookcite/api-key"
ファイルは所有者のみがアクセスできる権限で作成され、上書きされることはありません。プラットフォーム、ヘルパーコマンド、ファイルの各形式では、クライアント設定に次のような参照を記述します。
{
"mcpServers": {
"ookcite": {
"command": "npx",
"args": ["-y", "@turtletech/ookcite-mcp"],
"env": {
"OOKCITE_API_KEY_COMMAND": "credential-cli read ookcite"
}
}
}
}
起動時の参照元の優先順位は、引き続き OOKCITE_API_KEY、OOKCITE_API_KEY_COMMAND、OOKCITE_API_KEY_FILE、プラットフォーム認証情報の順です。いずれも指定されていない場合、サーバーは匿名で起動します。setup --key は、クライアント設定にキーを意図的に保存する既存のデプロイメント向けに引き続き使用できます。
認証情報の取得には、次の2つの制約があります。
- 取得処理では標準入力が閉じられるため、MCP JSON-RPC を消費できません。
- 取得処理には
OOKCITE_API_KEY_TIMEOUTで制限時間が設けられています。デフォルトは10秒で、出力が診断情報にコピーされることはありません。
設定ファイルの場所については、お使いのクライアントの MCP ドキュメントを参照してください。自動セットアップが利用できない場合は、上記の mcpServers.ookcite JSON を使用し、その後クライアントを再起動するか、MCP サーバーを再読み込みしてください。
オプションの環境変数(stdio MCP、全クライアント向け):
| 変数 | 用途 |
|---|---|
OOKCITE_API_KEY | レート制限の緩和とコレクションツール(基本的な検索/書式設定には任意) |
OOKCITE_API | API のベース URL を上書き(デフォルトは https://ookcite-api.turtletech.us) |
OOKCITE_MCP_READ_ONLY | 1 でコレクションの変更を強制的に無効化(レビュー/CI 自動化向け) |
OOKCITE_MCP_ALLOW_MUTATE | 0 で変更を拒否。未設定または 1 なら許可(サーバー側では引き続き API キーが必要) |
OOKCITE_STARTUP_PROBES | 1 で MCP 接続を受け付ける前に、認証と npm の更新確認を標準エラー出力で実行(接続を高速化するため、デフォルトでは無効) |
OOKCITE_API_KEY_COMMAND | 標準出力にキーを出力するコマンド。標準入力は閉じられます |
OOKCITE_API_KEY_FILE | 最初の行にキーが記載された、所有者のみがアクセスできるファイル |
OOKCITE_API_KEY_TIMEOUT | 認証情報の取得に許可する秒数(デフォルトは10) |
OOKCITE_CREDENTIAL_STORE | プラットフォームの認証情報参照を読み込むには platform を指定 |
OOKCITE_CREDENTIAL_SERVICE | プラットフォーム認証情報のサービス名(デフォルトは ookcite-mcp) |
OOKCITE_CREDENTIAL_ACCOUNT | プラットフォーム認証情報のアカウント名(デフォルトは default) |
Marketplace プラグイン
OokCite のインストール方法は 2 つあります。
このリポジトリから、marketplace TurtleTech-ehf/ookcite-mcp を追加し、
ookcite@ookcite をインストールしてください。これにより ookcite
marketplace が登録され、plugins/ookcite のプラグインが有効になります。このプラグインは
https://ookcite-api.turtletech.us/mcp に接続し、3 つのスキルを追加します。貼り付けた参考文献の書式を整える
(/ookcite:format-bibliography)、提出前に参考文献を検証する
(/ookcite:verify-references)、コレクションを作成してエクスポートする
(/ookcite:build-collection)機能です。求められたらサインインしてください。
引用を 1 件書式設定する場合や、短い DOI リストを確認する場合は、サインイン前でも匿名利用の 1 日あたりの上限内で使用できます。コレクションの保存にはサインイン済みアカウントが必要です。
Web、デスクトップ、cowork アプリでは、同じアドレスをディレクトリコネクターとして使用します。
サインインを選択してください。その URL でコネクターを送信し、
plugins/ookcite フォルダーをプラグインバンドルとして送信してください。marketplace からインストールしても、どちらのリスティングも送信されません。
リモートコネクターは、動的クライアント登録をサポートする必要はありません。
プラグインは事前登録済みのパブリッククライアント ID ookcite-remote を送信するため、
コードクライアントは登録エンドポイントを呼び出しません。このクライアントのディスカバリーでは、S256 PKCE が公開され、
registration_endpoint はありません。保護対象リソースでは、このクライアントの issuer が先頭に記載され、
その resource フィールドは
https://ookcite-api.turtletech.us/mcp です。クライアントはディレクトリの
コールバックをそのまま受け入れ、ポート番号を問わず localhost および 127.0.0.1 への
ループバックリダイレクトを受け入れます。アクセストークンの exp - iat が 3600 以下でない場合、
リソースサーバーはトークンを拒否します。
リモート MCP
何もインストールせずに、チャット製品から OokCite を使用できます。このアドレスを追加し、サインインを選択して、求められたらログインを承認してください。
https://ookcite-api.turtletech.us/mcp
チャットはその後、有効期間の短いアクセストークンを送信します。
Authorization: Bearer <access token>
検索はサインイン済みアカウントに計上されます。貼り付けた API キーは拒否されます。トランスポートはステートレスな Streamable HTTP で、POST は 1 回、JSON の入力と出力を行います。Streamable HTTP とサインイン(OAuth)を選択してください。レガシー SSE トランスポート、API キー、「No authentication」は選択しないでください。
ookcite-api.turtletech.us がホワイトリストに登録された後の eduGenAI Chat:
| フィールド | 値 |
|---|---|
| 名前 | OokCite |
| 説明 | DOI と ISBN を検証し、形式の乱れた引用を解決して、CSL スタイルで参考文献項目の書式を整えます。引用メタデータのみを返し、PDF や全文は返しません。 |
| URL | https://ookcite-api.turtletech.us/mcp |
| トランスポート | Streamable HTTP |
| 認証 | OAuth |
ookcite-mcp serve を実行すると、独自のコピーが起動します。サブプロセスを起動するデスクトップクライアントも、標準入力と標準出力を使用します。
| 変数 | 用途 |
|---|---|
OOKCITE_API | OokCite API のベース URL(デフォルトは https://ookcite-api.turtletech.us) |
OOKCITE_MCP_HTTP_AUTH | サインインには oauth、自分で実行するコピーには bearer、または none |
OOKCITE_MCP_OIDC_ISSUER | サインインの issuer。認証が oauth の場合に必須 |
OOKCITE_MCP_OIDC_AUDIENCE | トークンの audience。認証が oauth の場合に必須 |
OOKCITE_MCP_OIDC_SCOPE | 必須のスコープ(デフォルトは openid) |
OOKCITE_MCP_PATH | MCP パス(デフォルトは /mcp) |
OOKCITE_MCP_ALLOWED_HOSTS | 追加の Host 名をカンマ区切りで指定します。ループバックは常に許可されます |
OOKCITE_MCP_ALLOWED_ORIGINS | エンドポイントへの呼び出しを許可するブラウザーの Origin 値。Origin がない場合も許可されます |
MCP の使用に関するヒント
- 多数の単一引用呼び出しより、バッチツール(
verify_references、batch_format、batch_add_to_collection、import_bibliography)を優先してください。 - コレクションの変更には、サインイン済みアカウント、または自分で実行するコピー上の
OOKCITE_API_KEYが必要です。破壊的なツール (delete_collection、remove_from_collection、unshare_collection)には、 MCP ツールヒントに対応するクライアント向けの注釈が付いています。 - サーバーが診断情報を書き込むのは、MCP パス上の stderr のみです。stdout は JSON-RPC 専用です。
ツール
検索と検証
| ツール | 目的 |
|---|---|
validate_doi | DOI が存在するか確認します(ハルシネーション防止) |
lookup_isbn | ISBN で書籍を検索します |
reverse_lookup | 不完全な引用テキストから論文を検索します。元のクエリ、信頼度、タイトルを返します |
batch_resolve | 1 回のリクエストで複数の引用文字列を解決します(最大 50 件) |
enhanced_search | 著者、カテゴリ、引用のファセットを使ってコーパスを検索します |
health_check | API の可用性と健全性を確認します |
書式設定
| ツール | 目的 |
|---|---|
format_citation | DOI を 2900 種類以上の CSL スタイルで書式設定します(単一の引用なら API キーは不要です) |
verify_references | DOI と、それらに付随する書誌情報の主張を一括確認します |
batch_format | 複数の引用を一度に書式設定します |
search_styles | 名前から CSL スタイル ID を検索します |
list_styles | CSL スタイルの全リストをページごとに表示します |
group_cite | 本文中の引用マーカーをグループ化して生成します(例:[1-3]) |
アカウント
| ツール | 目的 |
|---|---|
usage | 適用中のプランと、残りの 1 日あたり(および 1 か月あたり)の検索回数を表示します |
ORCID
| ツール | 目的 |
|---|---|
orcid_search | 名前、所属、または ORCID ID から ORCID プロフィールを検索します |
orcid_profile | ID で 1 件の ORCID プロフィールを取得します |
ingest_orcid | ORCID プロフィールの出版物をインデックス化し、検索できるようにします |
コレクション(サインインが必要)
コレクションはサインインして利用する機能です。ホスト型サーバーでは、サインインに使用したアカウントが使われます。ご自身で実行するコピーでは OOKCITE_API_KEY を使用します。例外として、collection を指定しない少量のプレーンテキストの import_bibliography は、匿名利用の上限内で .bib を返します。
| ツール | 目的 |
|---|---|
list_collections | 保存済みの引用コレクションを一覧表示する |
add_to_collection | 引用を追加する(DOI またはフリーテキスト) |
batch_add_to_collection | 複数の引用を一度に追加する |
import_bibliography | BibTeX、RIS、または貼り付けたプレーンテキストのリストをインポートする |
export_collection | コレクションを BibTeX または CSL テキストとしてエクスポートする |
search_collection | コレクション内を検索する。一致ごとに entry_id を返す |
check_duplicates | 重複を確認する。一致項目の entry_id を返す |
delete_collection | コレクションを削除する |
update_collection | 名前、説明、またはスタイルを更新する |
remove_from_collection | entry_id、DOI 単体、または doi:10.x/y で項目を削除する |
update_entry_metadata | 保存済み項目のタイトル、著者、年、DOI などを修正する |
merge_entries | 1 つのコレクション内の 2 つの項目を 1 つに統合する |
update_tags | コレクションのタグを設定する |
reorder_collection | 項目の順序を変更する |
一般的なワークフロー:
- 番号付きの引用リストを
import_bibliographyに貼り付けます(少量のリストではcollectionを省略します)。返された.bibは保管してください - または、
references.bib/library.bibをバージョン管理下に置き、そのファイルをコレクションにインポートします - 改訂中に
search_collection、check_duplicates、export_collection(bibまたはcsl)を使用します - コレクションは監査・エクスポート用の補助として扱い、参考文献の唯一のコピーにしないでください
ローカルでの上書き: API は update_entry_metadata が送信するすべてのフィールドをまだ保存できないため、ご自身のマシンで実行するコピー(stdio、または auth=none を指定した serve)では、各編集を $XDG_DATA_HOME/ookcite/overrides/<collection>.json にも保存し、export_collection で適用します。サインイン済みの HTTP サーバーはローカルの上書きを保存しません。eid_as=pages を指定すると、elsarticle-num が出力する箇所に記事番号を配置します。docs/local-overrides.md を参照してください。
単一の項目を削除する: search_collection(または check_duplicates)を呼び出すと、各検索結果が entry_id: … として表示されます(保存済み ID が不透明な場合は、任意で aliases: doi:… も表示されます)。その entry_id を remove_from_collection に渡すか、論文の DOI 単体または doi:10.x/y を渡してください。API 呼び出しの前にサーバーがローカルでエイリアスを解決します。
共有とコレクション操作
| ツール | 目的 |
|---|---|
share_collection | 共有可能なリンクを作成する |
unshare_collection | 共有を取り消す |
view_shared | トークンを使用して共有コレクションを表示する |
merge_collections | 複数のコレクションを統合する |
batch_move_entries | コレクション間で項目を移動する |
共有機能は、コレクションを利用できるサインイン済みアカウントで使用できます。 無料アカウントでは、1 日の上限内でインポートと一括追加を行えます。 統合と一括移動には Academic または Business プランが必要です。
ユーティリティ
| ツール | 目的 |
|---|---|
generate_citation_keys | DOI のリストに対して、より適切な Better BibTeX 形式のキーを生成する |
expand_journal | 雑誌の略称を正式名称に展開する |
normalize_bibliography | BibTeX または RIS を標準形式の BibTeX として再レンダリングする |
この 3 つの機能には Academic または Business プランが必要です。
プランと料金
| プラン | 料金 | 1 日あたりの照会数 | 月間 API 呼び出し数 | コレクション | コレクションあたりのエントリ数 |
|---|---|---|---|---|---|
| 匿名 | 無料 | 20 | -- | 0 | -- |
| 無料 | 無料 | 60 | -- | 4 | 200 |
| アカデミック | EUR 4/mo | 20,000 | 10,000 | 10 | 1,000 |
| ビジネス | EUR 10/mo | 20,000 | 40,000 | 20 | 4,000 |
コレクションのメタデータがすでに API で利用可能な場合、再照会はクォータを消費せずに処理できます。論文を再解決する必要がある検索は、現在のプランのクォータに算入される場合があります。有料のアカデミックプランの購入は、認定機関に所属する学生、研究者、教育者を対象としています。認証済みの ORCID があれば、サインイン済みのアカウントでアカデミックプランの上限を利用することもできます。
ハルシネーションの防止
システムプロンプトに次の内容を追加してください。
論文を引用する前に、validate_doi を使用して文献が実在することを確認してください。 検証に失敗した場合は、その引用を含めないでください。
改訂ワークフローでは、次の内容を追加してください。
プロジェクトの参考文献一覧は、バージョン管理下のローカル
.bibファイルで管理してください。 検証、重複排除、エクスポートには OokCite のコレクションを使用してください。
仕組み
MCP サーバーは、公開されている OokCite API に接続し、引用を検索して書式設定します。ローカルデータベースや重い依存関係のない、OokCite REST API を薄くラップした MCP サーバーです。
無料アカウントに登録すると(1 日あたり 60 回の照会が可能)、アカデミック(EUR 4/mo)またはビジネス(EUR 10/mo)にアップグレードして、月間 API 上限の引き上げ、大容量のコレクション、有料ユーティリティ、統合、バッチ移動をご利用いただけます。
ソースの構成
このクレートは、公開されている OokCite REST API を利用する薄い MCP(stdio)ラッパーです。
ローカルに引用文献データベースはなく、docs/local-overrides.md で説明されているコレクションごとのメタデータ上書きを除き、すべての状態は API 上にあります。
| パス | 役割 |
|---|---|
src/main.rs | バイナリーのエントリーポイント:--version、setup、MCP サーバーの起動 |
src/cli.rs | 起動時のプローブ(/api/v1/me 経由で OOKCITE_API_KEY を検証、更新を確認) |
src/setup.rs | ookcite-mcp setup / npx add-mcp クライアント設定インストーラー |
src/server.rs | Server と #[tool_router] MCP ツールハンドラー(末尾に単体テストも含む) |
src/tool_args.rs | ツール引数の構造体(serde + schemars) |
src/constants.rs | API ベース URL、パッケージのバージョン、逆引きの信頼度しきい値 |
src/http_error.rs | クライアント向け文字列の error_detail と HTTP ステータス分類 |
src/collection_entries.rs | コレクションのエントリー ID、DOI のみの形式 / doi: エイリアスの解決、検索結果の行 |
src/plaintext.rs | 貼り付けられたリストの分割とローカル .bib の生成 |
src/bib_export.rs | プロバイダーのレコード、保存済みフィールド、テキストのクリーンアップを使ったコレクションの BibTeX |
src/overrides.rs | エクスポート時に適用される、コレクションごとのローカルメタデータ上書き |
src/resolve_helpers.rs | 逆引きとフリーテキスト解決のペイロードヘルパー |
src/endpoints.rs | エンドポイントレジストリ(lib クレートの公開 API);コントラクトテスト済み |
src/lib.rs | ライブラリーのルート(endpoints のみをエクスポート) |
tests/api_contract.rs | contract/openapi.json.age を復号し、すべてのエンドポイントが存在することを検証 |
contract/ | Age で暗号化された OpenAPI スナップショット + regen.sh |
npm/ | @turtletech/ookcite-mcp インストーラー/ラッパー(リリースバイナリーをダウンロード) |
demo/ | Asciinema 録画スクリプト |
| marketplace catalog | ./plugins/ookcite の ookcite を一覧表示 |
plugins/ookcite/ | プラグインマニフェスト、ホストされた MCP URL、3 つのスキル |
scripts/set-version.sh | Cocogitto のバージョン更新前フック:パッケージ、レジストリ、プラグインのバージョン |
コレクション/エントリー ID: search_collection と check_duplicates は
entry_id: … の行を出力します。remove_from_collection はその ID、DOI のみの形式、または
doi:10.x/y を受け付けます(DELETE 呼び出しの前に collection_entries でローカルに解決します)。
リリース: v* タグで .github/workflows/release.yml が実行されます(複数アーキテクチャ対応の GitHub
Release アセット、crates.io、npm)。バージョン更新には cocogitto
(cog.toml + scripts/set-version.sh)を使用します。
server.rs が大きい理由: rmcp の #[tool_router] / #[tool] マクロでは、
ハンドラーを 1 つの impl Server にまとめる必要があります。マクロへの回避策なしにさらにファイルを分割しても、
ユーザーにとってのメリットはほとんどありません。マクロと格闘する前に、テストを切り出すか、小さなヘルパー(resolve_many、共有の
Me 型)を追加してください。
コントリビューション/ローカルチェック
cargo test --bin ookcite-mcp # unit tests (no contract key needed)
cargo build --release
./target/release/ookcite-mcp --version
# Contract tests (optional locally; required in CI with secret):
export OOKCITE_CONTRACT_KEY="value-from-your-credential-manager"
cargo test --test api_contract
ライブ MCP スモークテスト(任意。OOKCITE_API_KEY が必要):使い捨てのコレクションで DOI のみの形式を使って追加/検索/削除し、その後 delete_collection を実行します。
ドキュメント
ライセンス
MIT。詳しくは LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。