datacite-mcp-server について
DataCite の研究成果を検索し、DOI メタデータ、関係グラフ、リポジトリ情報、引用を取得する MCP サーバーです。データセットやソフトウェアなどを対象とし、API キーは不要です。
主な機能
- 01テキストや構造化条件で成果を検索
- 02DOI の完全なメタデータを取得
- 03DOI の関係や引用リンクを追跡
- 04リポジトリアカウントや分野を検索
- 05引用スタイルや機械可読形式で出力
- 06対応する語彙とカバレッジを参照
活用シーン
- 01作成者・分野・リポジトリからデータセットやソフトウェアを検索
- 02DOI の関連バージョン、補足資料、引用を確認
- 03論文や文献管理ソフト向けに DOI の引用を整形
- 04成果を検索する前にリポジトリの詳細を確認
MCP 対応
MCP クライアントに、DataCite の検索、メタデータ、関係、リポジトリ、引用、参照情報の 6 種類のツールを公開します。STDIO と Streamable HTTP に対応します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://datacite.caseyjhand.com/mcpclaude mcp add --transport http cyanheads-datacite https://datacite.caseyjhand.com/mcp{"mcpServers":{"cyanheads-datacite":{"type":"http","url":"https://datacite.caseyjhand.com/mcp"}}}Cursor で開く{"servers":{"cyanheads-datacite":{"type":"http","url":"https://datacite.caseyjhand.com/mcp"}}}VS Code で開く{"mcpServers":{"cyanheads-datacite":{"type":"http","url":"https://datacite.caseyjhand.com/mcp"}}}{"mcpServers":{"cyanheads-datacite":{"serverUrl":"https://datacite.caseyjhand.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
6| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| page | integer | いいえ | ランキング順のページ番号。省略時は 1 です。page × limit は 10,000 を超えてはなりません。cursor とは併用できません。 |
| sort | enum | いいえ | relevance、newest、oldest、recently_updated、most_cited、most_viewed、most_downloaded のいずれか。省略時は、text または query が設定されていれば relevance、それ以外は newest です。cursor とは併用できません。relevance | newest | oldest | recently_updated | most_cited | most_viewed | most_downloaded |
| text | string | いいえ | 通常の語句やフレーズを文字どおりに検索します。クエリー構文の文字はすべてエスケープされるため、"Climate change: impacts" のように指定でき、text が構文エラーの原因になることはありません。語句は AND で結合されます。 |
| limit | integer | いいえ | 1 ページあたりの行数。1~100。 |
| place | string | いいえ | 地理的な場所を表すフレーズ。登録された場所名と照合されます。 |
| query | string | いいえ | OpenSearch のクエリー文字列構文。フィールドパス(titles.title:"…"、creators.name:…、relatedIdentifiers.relationType:…)、AND/OR/NOT、範囲、ワイルドカードを使用できます。フィールドパス:datacite_list_reference topic query_syntax。text およびフィルターとは AND で結合されます。 |
| cursor | string | いいえ | 登録順に結果セット全体をカーソルで走査します。"*" で開始し、その後は前のページの nextCursor を変更せずに渡し、query とフィルターも同じにします。page または sort とは併用できません。 |
| funder | string | いいえ | 資金提供者の ROR ID、Crossref Funder ID(10.13039/100000001、その doi.org URL、または数字のみ)、または資金提供者名。 |
| creator | string | いいえ | 作成者の ORCID iD(0000-0002-1825-0097、16 桁の数字、または orcid.org URL。チェックサムを検証)または名前。名前の各トークンは、同じ作成者フィールド内にすべて含まれている必要があります。 |
| subject | string | いいえ | 主題のフレーズ。大文字小文字を区別せず、主題語と照合されます。 |
| language | string | いいえ | 作品の ISO 639-1 言語コード。大文字小文字は問いません(en、de)。 |
| licenses | array | いいえ | 作品自体のライセンス ID(いずれかに一致)。SPDX 形式:cc-by-4.0、cc0-1.0、mit。小文字に変換した後、完全一致で照合します。一般的な ID:datacite_list_reference topic licenses。 |
| affiliation | string | いいえ | ROR ID(021nxhr62 または ror.org URL)—作成者および貢献者の所属機関に一致—または所属機関名の語句。 |
| provider_ids | array | いいえ | プロバイダー ID(いずれかに一致)、例:dryad — datacite_search_repositories が返す providerId。大文字と小文字は区別しません。 |
| published_to | integer | いいえ | 出版年の上限(その年を含む)。単独で指定した場合、範囲に下限はありません。 |
| min_citations | integer | いいえ | DataCite がこの数以上の引用を記録している作品のみを返します。 |
| include_facets | boolean | いいえ | 上位のファセット件数(リソースタイプ、年、リポジトリ、プロバイダー、所属機関、科学分野、ライセンス)を追加します。2~8 秒かかります。 |
| published_from | integer | いいえ | 出版年の下限(その年を含む)。単独で指定した場合、範囲に上限はありません。 |
| repository_ids | array | いいえ | リポジトリ ID(いずれかに一致)。形式は provider.repository — 例:dryad.dryad または cern.zenodo — datacite_search_repositories が repositoryId で返す値です。大文字と小文字は区別しません。 |
| resource_types | array | いいえ | resourceTypeGeneral の値(いずれかに一致):dataset、software、computational-notebook、workflow、model、physical-object、……PascalCase も使用できます。全リスト:datacite_list_reference topic resource_types。 |
| fields_of_science | array | いいえ | OECD Fields of Science の ID またはラベル(いずれかに一致)、例:computer_and_information_sciences または "Earth and related environmental sciences"。リスト:datacite_list_reference topic fields_of_science。 |
| affiliation_country | string | いいえ | 作成者または貢献者の所属機関の国・地域を示す ISO 3166-1 alpha-2 コード。大文字と小文字は区別しません(DE、us)。alpha-3 コードと名称は受け付けません。 |
| include_child_funders | boolean | いいえ | ROR 資金提供者の下位組織も照合します。ROR 資金提供者を指定した場合のみ使用できます。 |
詳細
@cyanheads/datacite-mcp-server
MCP を通じて DataCite のデータセットやソフトウェアを検索し、DOI メタデータを取得して関連をたどり、引用を整形できます。STDIO または Streamable HTTP に対応しています。
公開ホスト型サーバー: https://datacite.caseyjhand.com/mcp
概要
世界中のリポジトリが登録した、データセット、ソフトウェア、サンプル、ワークフロー、その他の研究成果の DataCite DOI メタデータを扱います。検索、レコードの詳細表示、DOI の関連(バージョン、構成要素、補足資料、引用)の追跡、分野ごとに公開しているリポジトリの検索、引用の整形ができます。API キーは不要です。
ツール
| ツール | 説明 |
|---|---|
datacite_search_works | プレーンテキストまたはクエリ構文と構造化フィルターで研究成果を検索します。関連度順のページ表示またはカーソルによる全件取得に対応し、ファセット件数も任意で取得できます |
datacite_get_work | 1 つの DOI の登録メタデータ全体を取得するか、DataCite が扱っていない DOI をどの登録機関が管理しているかを確認します |
datacite_trace_relations | 任意の DOI を中心とする関連グラフ(バージョン、構成要素、補足資料、派生物、引用)を、各エッジの情報源とともに示します |
datacite_search_repositories | テキスト、科学分野、種類、認証、ソフトウェア、プロバイダーでリポジトリアカウントを検索し、研究成果の検索フィルターで使う repositoryId を取得します |
datacite_get_citation | DOI を CSL スタイルとロケールに応じた書式の引用、または BibTeX、RIS、CSL JSON などの機械可読形式に変換します |
datacite_list_reference | 他のツールが受け付ける語彙、識別子の形式、網羅範囲のルールをオフラインで確認します |
機能リファレンス
datacite_search_works ツール
text(山括弧を除いたリテラル語。空白以外のテキストに検索可能な句が残らない場合はinvalid_textエラー)またはquery(OpenSearch クエリ構文)を、次のフィルターと AND 条件で適用します:resource_types、creator(ORCID iD または名前)、affiliation(ROR ID または名前)、affiliation_country、funder(ROR ID、Crossref Funder ID、または名前。ROR の資金提供者を指定する場合はinclude_child_fundersも指定可能)、subject、fields_of_science、repository_ids、provider_ids、licenses、language、place、published_from/published_to、min_citations。リスト型フィルターでは最大 10 個の値を指定でき、いずれかが一致すれば対象になりますlimitは 1~10,000(デフォルトは 20)です。最大 100 件まで適用され、その場合は通知が返されます。sort(relevance、newest、oldest、recently_updated、most_cited、most_viewed、most_downloaded)に従って順位付けされたpages では、最初の 10,000 件まで取得できます(textまたはqueryがある場合のデフォルトはrelevance、それ以外はnewest)。一方、cursor: "*"はnextCursorを使って登録順に結果セット全体をたどり、pageもsortも使用しません。順位付け検索の上限に達した場合は、最終ページとは区別して通知されます- Crossref Funder ID は検索前に、完全一致する単一の ROR FundRef マッピングを通じて
funded-byに解決されます。マッピングを利用できない、不完全、または曖昧な場合は、識別子とのリテラル一致を維持し、検索範囲が縮小することを明示します。キャッシュされ、間隔を空けて実行される照会は最大 5 秒で、再試行は行われません。カーソルでの検索では、サーバーの再起動をまたぐ場合も含め、初回に解決または指定されたリテラルのフィルターをすべての継続検索で維持し、ROR への再照会は行いません。include_child_fundersを使うには、ROR を明示的に指定する必要があります - ライセンス ID は前後の空白を除去して小文字に変換しますが、内部の空白は保持します(
cc0 1.0とcc0-1.0は異なります)。ライセンスのファセット ID をそのまま再利用してください。queryは寄託のタイムスタンプにも対応します。例:created:[2026-10-16 TO *]、updated、registered include_facetsを指定すると、リソースタイプ、年、リポジトリ、プロバイダー、所属機関、科学分野、ライセンスの上位件数が追加されます(処理時間が 2~8 秒長くなります)。すべてのレスポンスにはtotalCount、effectiveQuery、sortApplied、appliedFiltersが含まれます
datacite_get_work ツール
doiを 1 つ指定します。大文字・小文字は問いません。プレフィックスなし、doi:またはinfo:doi/付き、doi.org URL、あるいは%2Fエンコード形式が使えます- タイトル、ORCID iD と ROR の所属機関を含む作成者と寄稿者、日付、主題、説明、資金提供、地理的位置情報、権利、関連識別子と関連アイテム、リポジトリとプロバイダー、および
counts(引用、参考文献、バージョン、パーツ、閲覧、ダウンロード)を返します。長いリストには上限があり、全件数はtruncatedListsとrelatedIdentifierCountsで報告されます - 0 始まりの
offset(デフォルトは 0)を指定して、上限付きリストの 1 ページ目を取得できます。creators、contributors、relatedIdentifiers、subjects、fundingReferencesは最大 100 件、relatedItemsは 25 件、geoLocationsは 50 件を返します。オフセットは、寄託順に並んだ有効なマッピング済みエントリーを基準にします。エントリーが残っている場合、listPageはlist、offset、total、nextOffsetを報告します。それ以外のメタデータには通常の上限が適用されます。デフォルトの切り詰め通知には、続きの取得に必要な入力値が正確に記載されます。オフセットを指定するにはリストが必要です。末尾を超えたページは空になります - タイトルと検索スニペットはプレーンテキストです。認識された書式タグを除去し、エンティティを 1 回デコードしてから、スニペットを切り詰めます。構造化された説明は寄託されたテキストを保持し、レンダリングされた説明は段落と行の区切りを保持します
- 地理的位置情報では、点、矩形、順序を保ったポリゴン頂点、および任意のポリゴン内点を保持します。不完全なポリゴンは通知とともに省略されます。有効な同階層のジオメトリは保持されます
- DataCite に DOI の公開レコードがない場合は、
found: falseとともにmissReason(other_agency、does_not_exist、not_public、unclassified)、判明している場合はregistrationAgency、およびguidanceを返します
datacite_trace_relations ツール
- 任意の機関の
doi:DataCite のデータセットまたはソフトウェアの DOI、あるいはジャーナル論文の DOI を指定すると、引用している、引用されている、補足している、または派生元となっている DataCite のデータおよびソフトウェアを検索します depthは 1(デフォルト)または 2 です。2 ホップ目では、DataCite の隣接ノードを最大 10 件展開します。1 ホップ目でmax_nodesに空きがある場合にのみ実行されます。max_nodesは 1~10,000(デフォルト 50、ルートを含む)です。上限は最大 100 として適用され、通知が表示されます。ノードは、対象自身のメタデータ、次にルートを指すレコード、次に Event Data のエンドポイント、最後に 2 ホップ目の順で追加されます。relation_typesを指定すると、列挙した関係タイプのみが残り、追跡対象の DOI 側から読み取られます(省略時はすべて)。include_event_data(デフォルトはtrue)を指定すると、Event Data の引用リンクが追加されます- エッジには、主張されたとおりの
relationTypeが保持され、そのsources(metadata、reverse_metadata、event_data)が列挙されます。coverageには各ソースをどこまで読み取ったかが示されます(ホップごとに逆引きレコードを最大 100 件、大量にある場合は先頭 10 件のみ、1 回の呼び出しにつきイベントを最大 100 件)。rootCountsには比較用の DataCite 独自の件数が含まれます。エッジが存在しないことは、関係が存在しない証拠にはなりません - 逆引きでは、
relatedIdentifiersと特定済みのrelatedItemsの両方を調べ、各主張の対象とタイプを検証したうえで、同一のエッジを統合します event_offset(0~9,999、絶対値でゼロ始まり)を指定すると、0を指定した場合も含め、Event Data のみを追跡します。メタデータのエッジと深さ 2 の展開はスキップされます。coverage.eventData.nextEventOffsetと同じ DOI およびフィルターを使って続行してください。各呼び出しでは上流の 1 ページを読み取り、対象エンドポイントをmax_nodesに収められない場合は、その直前で停止します。ルートのみの呼び出しでは、上限を引き上げる方法が説明されます。カバレッジでは、読み取りの完了、分類情報の照会が妨げられた場合、読み取りが利用できない場合またはスキップされた場合、上流の 10,000 件という上限がそれぞれ区別されます。呼び出し間で上流の並び順が変わることがあります。続きの取得はスナップショットではありません
datacite_search_repositories ツール
- 名前と説明を対象とするテキスト
queryに加え、field_of_science、repository_types、certificates、software、client_type、provider_idを指定できます。または、repository_idsのみを指定し(入力は最大 1,000 件)、入力順で正規化された ID のうち最初の 25 件(重複を除く)を検索できます。検索されなかった ID は通知に表示されます。見つからない ID の通知対象は、検索された ID のみです limitは 1~10,000(デフォルト 20)で、pageと併用できます。上限は最大 100 として適用され、通知が表示されます。名前順の行には、datacite_search_worksのrepository_idsで指定するrepositoryIdに加え、providerId、タイプ、認証、ソフトウェア、分野、ホームページ、re3data リンクが含まれます- 検索レスポンスには、検索条件を組み合わせた
effectiveQueryがエコーされます(クエリ条件がない場合は*)。結果が空のページでも同様です。ID 検索では、クエリのエコーはなく、appliedFilters.repository_idsが返されます
datacite_get_citation ツール
format:text(デフォルト)、csl_json、bibtex、ris、datacite_json、datacite_xml、schema_org、codemeta、またはjatstextのみ:styleには CSL スタイル ID を指定します(デフォルトはapa。確認済みの ID はdatacite_list_referenceのcitation_stylesトピックを参照)。DataCite が APA として暗黙に出力するスタイルを指定すると、unsupported_styleエラーになります。localeには、DataCite が出力できる 61 種類の CSL ロケール(en-GB、de-DE、fr-FR、…)か、主要な方言に展開される言語コード単体(de→de-DE)を指定します。デフォルトはen-USです(一覧:citation_localesトピック)textでは、引用文がプレーンテキストとしてcitationに、上流のマークアップがcitationHtmlに返されます。UTF-16 コード単位で 100,000 を超えるテキストペイロードは、サロゲートペアを分割せずに切り詰められます。機械可読形式では、完全なペイロードがこの上限まではインラインで返されます。それを超える文書ではcitationは省略され、文書全体を取得するdownloadUrlとtotalCharactersが返されます。この場合、truncated: true、shown: 0、cap: 100000となります。DataCite に存在しない DOI は、datacite_get_workと同様にfound: falseを返します。DataCite がその DOI の形式を出力できない場合は、format_unavailableエラーになります
datacite_list_reference ツール
topic:resource_types、relation_types、identifier_types、date_types、contributor_types、fields_of_science、licenses、repository_types、certificates、software_platforms、client_types、sort_orders、query_syntax、citation_formats、citation_styles、citation_locales、identifier_formats、またはcoverageentries(value、label、group、inverse)と使用上のnotesを返します。上流へのリクエストは行いません
特長
@cyanheads/mcp-ts-coreを基盤としており、stdio および Streamable HTTP トランスポート、切り替え可能な認証(none/jwt/oauth)、交換可能なストレージ(in-memory、filesystem、Supabase、Cloudflare KV/R2/D1)、オプションの OpenTelemetry トレース機能を備えた構造化ログに対応しています。
公開されているdatacite-guideスキルでは、帰属表示、識別子の解決、関係性を示す根拠、網羅的な一覧について解説しています。パッケージとプラグインに同梱されており、MCP Skills 拡張機能から利用できます。
DataCite 固有の機能:
- API キー不要で読み取り専用です。DataCite REST API(
/dois、/repositories、/eventsのEvent Data、引用情報向けのDOI コンテンツネゴシエーション)に加え、DataCite が保有していない DOI を対象とする doi.org の登録機関検索を利用します - リクエスト予算を共有します。ペース制御された単一のリクエストキュー、プロセス内レスポンスキャッシュ、ツール呼び出しごとの 45 秒の期限を備えています。予算を使い切ると、待機時間(秒数)を示す
rate_limitedとして失敗します。DATACITE_CONTACT_EMAILを設定すると、DataCite の識別済みティアが適用され、IP あたり 5 分間の上限が 500 件から 1,000 件に増えます - 柔軟な識別子に対応します。DOI は大文字・小文字を問わず、プレフィックス付き、または doi.org の URL 形式で指定できます。ORCID iD はチェックサムを検証します。ROR ID と Crossref Funder ID は、単体または URL 形式で指定できます。語彙値は大文字・小文字を問わず、ハイフン、アンダースコア、スペースを使用できます
- DataCite DOI メタデータはCC0 1.0の下で権利放棄されています。この権利放棄の対象は登録されたメタデータのみで、それが説明するデータセット、ソフトウェア、論文は対象外です。
datacite_get_workは、metadataLicenseを対象のrightsとは別に報告します
エージェントに適した出力:
- すべての検索に来歴情報を付与します。
effectiveQuery、上流に送信したappliedFilters、適用した並べ替えまたは順序、totalCountを含みます。トレースの各エッジにはsourceが示され、coverageには各ソースをどこまで読み取ったかが示されます - エラーではなく、型付きの不一致を返します。DataCite が保有していない DOI は、
found: falseとmissReason、判明している場合は保有機関、次の手順を伴って返されます - 制限を明示します。上限のある一覧では全件数を報告し、該当なし、10,000 件のページング上限、展開されていない第 2 ホップ、返されたエッジでは網羅されていない引用情報について通知します
- テキスト出力では、登録者が提供したテキスト(タイトル、説明、名前)を引用ブロックに入れるかフラット化し、機械可読ペイロードをコードフェンスで囲むため、登録されたコンテンツが構造として誤認されることはありません。タイトルとスニペットは両方の出力形式で正規化されます。構造化された説明など、登録されたその他のフィールドは元のテキストを保持します
はじめに
インストール不要のホスト型インスタンスに接続します:
claude mcp add --transport http datacite-mcp-server https://datacite.caseyjhand.com/mcp
ホスト型インスタンスのすべての呼び出し元で、DataCite のリクエスト予算(5 分間に 800 件)を共有します。継続的に利用する場合は、独自のインスタンスを実行してください。
またはローカルで実行します:
claude mcp add datacite-mcp-server -- npx -y @cyanheads/datacite-mcp-server
その他のクライアントでは、これを MCP 設定ファイルに追加してください:
{
"mcpServers": {
"datacite-mcp-server": {
"command": "npx",
"args": ["-y", "@cyanheads/datacite-mcp-server"]
}
}
}
API キーは不要です。オプションのDATACITE_CONTACT_EMAILを設定すると、DataCite の IP あたりのリクエスト上限が 2 倍になります。Docker またはソースからのビルドについては、サーバーの実行を参照してください。
設定
| 変数 | 説明 | デフォルト |
|---|---|---|
DATACITE_CONTACT_EMAIL | User-Agent に mailto: として設定する連絡先メールアドレスです。URL には含めません。DataCite の識別済みティアが適用され、IP あたりのリクエスト数が 5 分間に 500 件から 1,000 件に増えます。起動時にメールアドレスとして検証されます。 | なし |
DATACITE_MAX_REQUESTS_PER_5MIN | 5 分間のリクエスト上限です。50~1000 の整数を指定します。同じ送信元 IP を共有するレプリカ間で分割してください。 | 連絡先メールアドレスがある場合は 800、ない場合は 400 |
MCP_TRANSPORT_TYPE | トランスポート:stdio または http。 | stdio |
MCP_HTTP_PORT | HTTP サーバーのポート。 | 3010 |
MCP_SESSION_MODE | HTTP セッションモード:stateless、stateful、または auto。 | stateless |
MCP_AUTH_MODE | 認証:none、jwt、または oauth。 | none |
MCP_LOG_LEVEL | ログレベル(debug、info、warning、error など)。 | info |
LOGS_DIR | ログファイルのディレクトリ(Node.js のみ)。 | <app-root>/logs |
STORAGE_PROVIDER_TYPE | ストレージバックエンド:in-memory、filesystem、supabase、cloudflare-kv/r2/d1。 | in-memory |
OTEL_ENABLED | OpenTelemetry を有効にします。 | false |
オプションの上書き設定の全リストは .env.example を参照してください。
サーバーの実行
Bun v1.4.0 以上、または Node.js v24+ が必要です。ソースからビルドするには:
git clone https://github.com/cyanheads/datacite-mcp-server.git
cd datacite-mcp-server
bun install
cp .env.example .env
DataCite の識別済みティアを利用するには、.env で DATACITE_CONTACT_EMAIL を設定してください。
ローカル開発
-
本番版をビルドして実行する:
# One-time build bun run rebuild # Run the built server bun run start:http # or bun run start:stdio -
チェックとテストを実行する:
bun run devcheck # Lints, formats, type-checks, and more bun run test # Runs the test suite
Docker
stdio 経由で実行する:
docker run -i --rm -e MCP_TRANSPORT_TYPE=stdio ghcr.io/cyanheads/datacite-mcp-server:latest
または、http://localhost:3010/mcp で Streamable HTTP を公開する:
docker run --rm -p 127.0.0.1:3010:3010 ghcr.io/cyanheads/datacite-mcp-server:latest
プロジェクト構成
| ディレクトリ | 目的 |
|---|---|
src/index.ts | createApp() のエントリーポイントです。6 つのツールを登録し、サーバーの指示を設定します。 |
skills/ | DataCite ツールを使用するエージェント向けに公開されているガイダンスです。 |
src/mcp-server/tools | ツール定義(*.tool.ts)と、共通で使用する入力スキーマ、誤りに関するガイダンス、テキスト描画のヘルパーです。 |
src/services/datacite | DataCite REST クライアント(/dois、/repositories、/events、コンテンツネゴシエーション)、クエリビルダー、識別子の正規化処理、レコードマッパー、関係グラフビルダー、引用スタイルチェックです。 |
src/services/doi-ra | DataCite が公開レコードを保持していない DOI を対象とする、doi.org の登録機関検索です。 |
src/services/ror | Crossref Funder ID から ROR への完全一致検索と、リテラル検索によるフォールバックです。 |
src/services/http | 共通の上流パイプラインです。レスポンスキャッシュ、リクエストペーサー、リトライ、呼び出しごとの期限、レート制限処理を提供します。 |
src/services/reference | datacite_list_reference の静的語彙と入力バリデーターです。 |
src/config | Zod による、サーバー固有の環境変数の解析と検証です。 |
tests/ | src/ に対応する Vitest テストと、記録済みの DataCite および doi.org のフィクスチャです。 |
開発ガイド
開発ガイドラインとアーキテクチャ上のルールについては、CLAUDE.md を参照してください。要点は次のとおりです。
- ハンドラーは例外をスローし、フレームワークが捕捉します。ツールのロジックに
try/catchを書かないでください。 - ログには
ctx.logを、ストレージにはctx.stateを使用してください。 - 新しいツールは
src/index.tsのcreateApp()配列に登録してください。 - 外部 API 呼び出しは、未加工データを検証し、ドメイン型に正規化してから、出力スキーマを返すようにしてください。不足しているフィールドを捏造しないでください。
コントリビューション
Issue を歓迎します。提出前にチェックとテストを実行してください。
bun run devcheck
bun run test
ライセンス
このプロジェクトは Apache 2.0 License の下でライセンスされています。詳細は LICENSE ファイルを参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。