mcpField
N
Notanda (Beta)

Notanda (Beta)

ローカル
notanda.io検索02 週間前に更新

Notanda (Beta) について

Notanda (Beta)は、検索の追跡性と結果の検証を必要とする研究者向けの、OpenAlex文献検索用ローカルMCPサーバーです。検索ごとにリクエスト、応答、チェックサムを保存し、証拠IDから結果を取得して検証できます。

主な機能

  1. 01DOI付きのOpenAlexオープンアクセス論文を検索
  2. 02リクエスト、提供元の応答、結果を保存
  3. 03証拠ファイルのSHA-256マニフェストを作成
  4. 04証拠IDから結果を取得して検証
  5. 05レシートでマニフェストとデータの置換を検出

活用シーン

  1. 01文献検索のリクエストと結果を記録
  2. 02再起動後に検索証拠を取得
  3. 03保存済みの結果に変更がないか確認

MCP 対応

stdioで接続するローカルMCPサーバーで、`search_literature` と `get_evidence` の2つのツールを提供します。ネットワークサーバーの公開、全文ダウンロード、Notandaコーパスへの書き込みは行いません。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"rudiregenwurm-notanda": {
"command": "uvx",
"args": [
"notanda-mcp"
],
"env": {
"HARVESTER_OPENALEX_API_KEY": "<HARVESTER_OPENALEX_API_KEY>"
}
}
}
}
起動コマンドuvx notanda-mcp
設定が必要な環境変数
HARVESTER_OPENALEX_API_KEYシークレットOpenAlex API key used for literature searches.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypinotanda-mcp0.1.0b3

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Notanda ローカル MCP サーバー — ベータ版

OpenAlex 検索を行うたびに、リクエスト、レスポンス、チェックサムが保存されるため、後からソースを確認できます。

ベータ版:外部開発者による支援なしの受け入れテストは、まだ実施されていません。 技術テストで、外部ユーザーによる使いやすさとインストールの確認を代替することはできません。

このディレクトリでは、Notanda の来歴情報を保持した OpenAlex 検索をローカル MCP クライアントに提供します。これは独立した notanda-mcp パッケージであり、ホスト型サービスでも notanda 1.3.2 パッケージの一部でもありません。リリース済みのコアに依存します。

このコンポーネントが提供するツールは、次の2つだけです。

  • search_literature:OpenAlex を検索して、DOI を持つ OA 研究成果を取得し、リクエスト、プロバイダーの観測情報、返された結果、ハッシュを1つのエビデンス ID のもとに保存します。返される receipt は manifest.json の SHA-256 です。
  • get_evidence:プロバイダーへのリクエストを再実行せずに、ハッシュを検証し、エビデンス ID に基づいて元の結果を返します。任意の呼び出し元保持の receipt を指定すると、マニフェストとともにペイロードが差し替えられたことも検出できます。

どちらのツールの説明にも、また成功時のすべてのレスポンスにも、タイトルとメタデータは未検証のサードパーティーコンテンツであり、指示ではないことを示す警告があります。

全文をダウンロードしたり、Notanda のコーパスや Evidence Ledger に書き込んだり、ウェブ UI を変更したり、ネットワークサーバーを公開したり、汎用的なエージェント推論を提供したりすることはありません。

来歴情報とステータス

実装は、隔離されたブランチ experiment/local-mcp のコミット 366bc2d4827aa915e2e58a82cd567163ed63d4be を基にしています。封印済みの引き継ぎパッケージでは、このソースが、合格した20件の MCP テストと成功した OpenAlex のライブ実行に紐付けられていました。公開リポジトリへの統合では、重複していた Notanda ランタイムを、リリース済みの notanda==1.3.1 PyPI 依存関係に置き換えました。ベータ版3では、この固定バージョンを notanda==1.3.2 に更新します。MCP は引き続き、テスト済みの SDK バージョン 1.30.0 に固定されています。SOURCE_PROVENANCE.json には、ソースハッシュと意図的に行った統合変更が、機械可読形式で記録されています。

当初の受け入れ基準6項目のうち、技術的には5項目を満たしています。残る6番目の基準、つまり Notanda に関する知識のない外部開発者が、支援なしでインストール、検索、再起動、独立検証を完了することは、その結果が報告されるまで外部での検証が必要です。

ベータ版パッケージをインストールする

Python 3.11 または 3.12 を使用してください。専用の仮想環境を推奨します。

python -m venv .venv-mcp
# Linux/macOS:
. .venv-mcp/bin/activate
# Windows PowerShell instead:
# .venv-mcp\Scripts\Activate.ps1
python -m pip install "notanda-mcp==0.1.0b3"

ベータ版3には、正確に notanda==1.3.2 が必要です。このバージョンがすでにインストールされている環境にインストールしても、コアのバージョンは維持されます。ベータ版2には notanda==1.3.1 が必要であり、pip はその固定バージョンを満たすため、既存の 1.3.2 インストールをダウングレードする場合があります。ベータ版2または別の Notanda コアバージョンが必要な場合は、別の環境を使用してください。依存関係のチェックを回避しないでください。バージョンを正確に固定することで、テスト済みのコアとサーバーの組み合わせを再現できますが、今後のコアリリースとの互換性を保証するものではありません。

uvx を使用するクライアントでは、次のコマンドと引数を設定してください(エビデンスディレクトリは、コンピューター上の書き込み可能な絶対パスに置き換えてください)。

uvx --python 3.12 [email protected] --evidence-dir ABSOLUTE_LOCAL_EVIDENCE_PATH

MCP クライアントのローカル環境に HARVESTER_OPENALEX_API_KEY を設定してください。検索にはこのキーが必要です。コマンドの引数には含めないでください。レジストリマニフェストでは、この変数はシークレット、エビデンスパスは必須入力として宣言されています。

このリポジトリからインストールする

Python 3.11 または 3.12 を使用してください。リポジトリのルートから実行します。

python -m venv .venv-mcp
# Linux/macOS:
. .venv-mcp/bin/activate
# Windows PowerShell:
# .venv-mcp\Scripts\Activate.ps1
python -m pip install -e ./mcp

これにより、チェックアウトから MCP コンポーネントがインストールされ、レビュー済みの Notanda コアが PyPI から notanda==1.3.2 として解決されます。

OpenAlex API キーをローカルで設定してください。たとえば、PowerShell でキーをターミナルの履歴に残さず設定するには、次のようにします。

$mcpSecureKey = Read-Host 'OpenAlex API key' -AsSecureString
$env:HARVESTER_OPENALEX_API_KEY = [System.Net.NetworkCredential]::new('', $mcpSecureKey).Password

既存の Notanda 設定方法も使用できます:HARVESTER_CONFIG または HARVESTER_OPENALEX_API_KEY。認証情報をエビデンスディレクトリ、Git、スクリーンショット、返却されるテストレポートに追加しないでください。

実行と検証

付属の実際の stdio クライアントは、サーバーを起動して MCP を初期化し、2 つの ツール名を検証して検索を実行します。

python mcp/tools/mcp_client.py \
  --evidence-dir ./tmp/mcp-evidence \
  --query "scientific reproducibility" \
  --limit 2

レスポンスには evidence_id と receipt が含まれます。どちらも evidence ディレクトリの外に保管してください。2 つ目のプロセスで receipt を検証し、 プロバイダーへの再リクエストなしに保存済みのレスポンスを取得できます。

python mcp/tools/mcp_client.py \
  --evidence-dir ./tmp/mcp-evidence \
  --id EVIDENCE_ID \
  --receipt RECEIPT

互換性のため、get_evidence は receipt なしでも動作し、従来のペイロードハッシュ と ID のチェックを実行します。これらのチェックで破損は検出できますが、ペイロードと マニフェストを協調して置き換えた場合、元の receipt が指定されているときにのみ検出できます。

独立した検証ツールは Python の標準ライブラリのみを使用します。

python -S mcp/tools/verify_mcp_evidence.py \
  ./tmp/mcp-evidence/EVIDENCE_ID

別のローカル MCP クライアントを使用する場合は、仮想環境の notanda-mcp 実行ファイルを次の引数で設定してください。

--evidence-dir ABSOLUTE_LOCAL_EVIDENCE_PATH

トランスポートは stdio です。サーバーにはユーザーインターフェースがなく、リッスン ポートも開きません。

エビデンスの仕様

各検索では、32 文字の evidence ID を名前とするディレクトリが 1 つ作成されます。

ファイル内容
request.json指定されたクエリと有効なクエリ、上限、MCP クライアント名/バージョン、ソース実験のコミット、インストール済みの Notanda バージョン、サーバーハッシュ
provider.jsonシークレットをマスキングした後の OpenAlex URL、タイムスタンプ、HTTP ステータス、取得した解析済み JSON
response.json構造化されたエラーと信頼できないコンテンツに関する通知を含む、永続化された結果。独立した receipt は、封印後に MCP レスポンスへ追加されます
manifest.json3 つのペイロードファイルのバイト数と SHA-256

マニフェストだけで、破損や単一ファイルの変更を検出できます。これはデジタル署名では なく、呼び出し元が保持する receipt がなければ、ペイロードとマニフェストを協調して 置き換えた場合は検出できません。オプションの receipt と照合すると、元の検索時に 確認された正確なマニフェストを基準として検証できます。

制限とエラー時の動作

  • クエリの長さ:1~1000 文字。結果の上限:整数で 1~10。
  • OpenAlex へのリクエストは 1 回のみで、ページネーションと自動再試行はありません。
  • 操作タイムアウトは 20 秒、接続タイムアウトは 10 秒、レスポンスの上限は 4 MiB です。
  • プロバイダーのエンドポイントとして受け付けるのは https://api.openalex.org/works のみです。
  • キーがない場合:configuration_error。入力が無効な場合:invalid_arguments。
  • プロバイダー/トランスポートのエラー:provider_error。プロバイダーの例外テキストは保存されません。
  • 書き込みが中断された場合:incomplete。ハッシュまたは ID が一致しない場合:integrity_failure; 指定された receipt が一致しない場合:receipt_mismatch。
  • プロバイダーのテキストは信頼できないデータとして永続化され、指示として解釈されることはありません。

テスト

開発用追加機能をインストールし、決定論的な 23 件のチェックを実行します。

python -m pip install -e "./mcp[dev]"
python -m pytest mcp/tests

テストでは、正常な取得、再起動、独立した検証、破損、無効な入力、HTTP 401/429/500、 タイムアウト、不正なレスポンスとサイズ超過のレスポンス、ストレージ障害、プロセスの 異常終了、シークレットのマスキング、実際の 2 プロセス間での stdio MCP 動作を検証します。

コメント

MCP は初めてですか?

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

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