gbif-mcp-server について
GBIFの分類、出現記録、データセット、公開機関を調べるMCPサーバーです。種名の照合やDarwin Coreフィルターによる記録検索に加え、データセットと公開機関のメタデータを扱えます。
主な機能
- 01種分類の照合と閲覧
- 02出現記録の検索・件数取得・集計
- 03Darwin Core形式の全記録取得
- 04データセットと公開機関の検索
- 05種とデータセットのリソース読み取り
活用シーン
- 01学名をGBIFの分類群に照合
- 02場所や日付で生物多様性記録を絞り込み
- 03国やデータセット別に記録を集計
- 04記録のデータセットメタデータを追跡
MCP 対応
13個のツールと2個のリソースで、GBIFの分類、出現記録、データセット、公開機関の操作を提供します。STDIOとStreamable HTTPに対応します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://gbif.caseyjhand.com/mcpclaude mcp add --transport http cyanheads-gbif https://gbif.caseyjhand.com/mcp{"mcpServers":{"cyanheads-gbif":{"type":"http","url":"https://gbif.caseyjhand.com/mcp"}}}Cursor で開く{"servers":{"cyanheads-gbif":{"type":"http","url":"https://gbif.caseyjhand.com/mcp"}}}VS Code で開く{"mcpServers":{"cyanheads-gbif":{"type":"http","url":"https://gbif.caseyjhand.com/mcp"}}}{"mcpServers":{"cyanheads-gbif":{"serverUrl":"https://gbif.caseyjhand.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
@cyanheads/gbif-biodiversity-mcp-server
MCP を通じて GBIF の種の分類、出現記録、データセット、発行者を検索します。STDIO または Streamable HTTP に対応しています。
公開ホスト型サーバー: https://gbif-biodiversity.caseyjhand.com/mcp
概要
Global Biodiversity Information Facility(GBIF)の種の分類、出現記録、データセット、発行者を扱います。名前をバックボーン分類体系に照合し、Darwin Core フィルターを使って 39 億件を超える出現記録を検索・集計し、記録を元のデータセットや発行者までたどることができます。
ツール
| ツール | 説明 |
|---|---|
gbif_match_species | 学名を GBIF バックボーンと照合し、分類群キー、信頼度、分類を返します |
gbif_bulk_match_species | 1 回の呼び出しで最大 50 件の学名を照合し、入力順に名前ごとの結果を返します |
gbif_get_species | キーでバックボーンの分類群を取得します。分類、命名者情報、異名関係、一般名、件数を返します |
gbif_search_species | 名前の一部、階級、または界・科・属の名前でバックボーンを検索または閲覧します |
gbif_get_species_classification | 分類群の親系統を、界から直近の親まで根から順に返します |
gbif_get_species_children | 科に属する属や属に属する種など、分類群の直接の子を一覧表示します |
gbif_search_occurrences | 分類群、場所、日付、記録の基盤、在・不在、IUCN カテゴリで 39 億件を超える出現記録を検索します |
gbif_count_occurrences | 記録を取得せずに、フィルターに一致する出現記録の件数を数えます |
gbif_get_occurrence | キーで Darwin Core の完全な出現記録を 1 件取得します |
gbif_occurrence_facets | 国、年、データセット、分類群、ステータスなどの項目別に出現記録の件数を集計します |
gbif_search_datasets | キーワード、種類、公開国、公開機関またはホスティング機関でデータセットを検索します |
gbif_get_dataset | UUID でデータセットの完全なメタデータを取得します。引用情報、連絡先、ライセンス、DOI、対象範囲を返します |
gbif_search_publishers | 名前または国で GBIF に登録された公開機関を検索します |
リソース
| リソース | 説明 |
|---|---|
gbif://species/{taxonKey} | GBIF バックボーンの分類群レコード:分類、命名者情報、異名のステータス、一般名 |
gbif://dataset/{datasetKey} | データセットのメタデータ:タイトル、説明、引用情報、ライセンス、連絡先、対象範囲 |
どちらのリソースも gbif_get_species と gbif_get_dataset からも利用できます。多くの MCP クライアントはツールのみを扱い、リソースを表示しません。
機能リファレンス
gbif_match_species tool
- 学名の
nameを 1 件指定します(一般名の場合はgbif_search_speciesを使用します)。任意でstrict、区別のためのkingdom、想定されるrankを指定できます - 出現記録ツールに渡す、受け入れられた分類群の
taxonKeyを返します。また、同義語が解決された場合はmatchedTaxonKey、matchType(EXACT、FUZZY、HIGHERRANK)、confidence0~100(80 未満の場合は要確認)、各階級のキーを含む分類も返します matchTypeがNONEの場合はno_match、kingdomが空の場合はinvalid_filterとして失敗します
gbif_bulk_match_species tool
strictを指定し、学名のnamesを渡します。先頭の 50 件が入力順に処理されます。読み取り数の上限調整が有効な場合(デフォルト)、超過した名前は順序と重複を保ったままunprocessedNamesに返され、次回の呼び出しで処理できます- 各結果には
nameとmatchTypeが含まれ、一致した場合はtaxonKey、matchedTaxonKey(同義語の場合)、confidenceも含まれます。一致しない名前はNONE、検索に失敗した名前はerrorと、分類されている場合はreasonを伴うERRORとなります。どちらの場合もバッチ全体は失敗しません
gbif_get_species tool
- バックボーンの
taxonKeyを 1 件指定します。バックボーンに存在しないキーはnot_found、GBIF が解析できないキー(小数、または 32 ビット範囲を超える値)はinvalid_filterとして失敗します - 階級ごとのキーを含む分類、
authorship、vernacularName、numDescendants、numOccurrences、publishedIn、parentKeyを返します。taxonomicStatusがSYNONYMの場合は、acceptedKeyとacceptedも返します
gbif_search_species ツール
q名前の一部(学名または一般名)、rank、isExtinct、およびチェックリストのdatasetKey(バックボーンを使う場合は省略)。offsetを指定して、1ページあたり最大1,000件を取得します- 分類群には、チェックリスト上の使用法を示す
key、任意のソースdatasetKeyおよびマッピングされたバックボーンのnubKey、rank、taxonomicStatus、分類名、numOccurrences、numDescendantsが含まれます。拡張情報にはtotalCount、endOfRecords、適用されたtaxonScopeが含まれます。出現記録のクエリでは、指定されている場合はnubKeyを使用し、指定されていない場合はgbif_match_speciesで名前を解決します。datasetKeyを省略すると、GBIF Backbone Taxonomyd7dddbf4-2cf0-4f39-9b2a-bb099caae36cが選択されます kingdom、family、genusには名前を指定します。名前は GBIF の大文字・小文字の表記と完全に一致する必要があります。最も範囲の狭い名前がスコープになり、それより広い名前を併せて指定すると分類群を明確にできます。不明な名前はunresolved_taxon_scope、指定された科に属さない属はconflicting_taxon_scopeで失敗します。バックボーン以外のdatasetKeyとスコープを併用すると、一致するものはありません。空のフィルターまたは不正な形式のdatasetKeyはinvalid_filterで失敗します
gbif_get_species_classification ツール
taxonKeyを1つ指定します。classificationは界から直近の親までの階層をルートから順に返し、各項目にはkey、rank、name、scientificNameが含まれます- クエリ対象の分類群は含まれません(
gbif_get_speciesを使用してください)。ルート分類群の場合は、通知とともに空の階層が返されます。不明なキーはnot_found、GBIF が解析できないキーはinvalid_filterで失敗します
gbif_get_species_children ツール
taxonKeyを1つ指定します。フィルターはありません。offsetを指定して、1ページあたり最大1,000件の子分類群を取得できます。不明なキーはnot_found、GBIF が解析できないキーはinvalid_filterで失敗します- 各子分類群には
key、canonicalName、rank、taxonomicStatus、vernacularName、numOccurrences、numDescendantsが含まれます。GBIF は合計件数を返さないため、続きがある場合のtruncatedとともに、endOfRecordsが続きがあるかどうかを示します - 後続ページが空の場合は、オフセットのリセット方法が案内されます。既存の分類群について最初のページが空の場合に限り、直接の子分類群がないことを意味します
gbif_search_occurrences ツール
- フィルター:
taxonKey(推奨。scientificNameはシノニムに一致しません)、country、publishingCountry、stateProvince、decimalLatitude/decimalLongitudeの範囲または WKTgeometry、year、month、basisOfRecord、hasCoordinate、isInCluster、coordinateUncertaintyInMeters、datasetKey、occurrenceStatus、iucnRedListCategory。1ページあたり最大300件を取得します - 指定された空間フィルターはすべて交差します。
geometryと緯度または経度の範囲を組み合わせると、重複する範囲に結果が絞り込まれます - レコードには
key、taxonKey、taxonomicStatus、座標、eventDateとeventTime、basisOfRecord、occurrenceStatus、iucnRedListCategory、datasetKey、issuesが含まれます。拡張情報にはtotalCount、endOfRecords、適用されたoccurrenceStatusが含まれます - 検索、件数取得、ファセット取得では、同じ
scopeが返されます。これは、指定された有効な生物学的フィルターを示し、常にoccurrenceStatusを含み、ページネーション制御は除外されます。ANYは返されますが、上流には渡されません。taxonKeyとscientificNameは OR 条件で組み合わされます。FOSSIL_SPECIMEN、OBSERVATION、UNKNOWNを含む、GBIF の11種類すべての基盤レコード値を指定できます - 緯度、経度、座標の不確実性はそれぞれ独立した任意の値です。テキストには、ゼロを含め、指定された各値が小数度またはメートルで表示されます
offset + limitの上限は100,001で、GBIFにはカーソルがありません。これより深いリクエストはpagination_cap_exceededで失敗します。より多くの一致結果を取得するには、gbif_occurrence_facetsのDATASET_KEYファセットで分割します。拒否されたフィルター値はinvalid_filterで失敗します
gbif_count_occurrences tool
gbif_search_occurrencesに記載されているすべての生物学的フィルターを、同じ制約と空間的な交差条件で受け付けます。isGeoreferencedは引き続きhasCoordinateの別名です。どちらか一方、または両方に同じ値を指定できますが、値が矛盾する場合はinvalid_filterエラーになりますoccurrenceStatusを適用したcountを返します。件数が 100,001 を超える場合は、パーティション分割の経路を示す通知が付与されます。拒否されたフィルター値はinvalid_filterエラーになります
gbif_get_occurrence tool
- 検索結果の
occurrenceKeyを 1 つ指定します。不明なキーはnot_foundエラーになり、GBIF が解析できない値はinvalid_filterエラーになります - 完全なダーウィンコアレコードを返します。
occurrenceStatus(ABSENTは何も見つからなかった調査を意味し、目撃情報ではありません)、座標、gadm内の GADM レベル 0〜3、eventTimeを含む日付、taxonomicStatus、iucnRedListCategory、機関、コレクション、カタログコード、recordedBy、identifiedBy、media、identifiers、issues
gbif_occurrence_facets tool
facetにはCOUNTRY、STATE_PROVINCE、YEAR、MONTH、BASIS_OF_RECORD、DATASET_KEY、PUBLISHING_COUNTRY、KINGDOM_KEY、PHYLUM_KEY、CLASS_KEY、ORDER_KEY、FAMILY_KEY、GENUS_KEY、SPECIES_KEY、OCCURRENCE_STATUS、IUCN_RED_LIST_CATEGORYのいずれかを指定します。1 ページあたり最大 100 件の値を取得でき(facetLimit、デフォルトは 10)、facetOffsetでページを指定しますgbif_search_occurrencesに記載されているすべての生物学的フィルターを、同じ制約と空間的な交差条件で受け付けます。対象データを維持するには、ファセットの呼び出しと各パーティション検索の両方で同じフィルターを繰り返し指定してください。件数順のcountsとtotalOccurrencesを返します。拒否されたスコープ値はinvalid_filterエラーになります- 続きがあることを確認するため、各ファセットリクエストではバケットを 1 つ余分に取得します。余分なバケットがある場合に限り、
truncated、shown、capが表示されます。facetOffsetは、公開されたページサイズ分だけ進めてください。最終ページがちょうど満杯の場合、切り捨てフラグは付きません。後続ページが空の場合はオフセットのリセット方法が案内され、最初のページが空の場合は、一致する出現記録が 0 件なのか、そのディメンションにデータがないのかが区別されます DATASET_KEYバケットの合計はスコープ全体の合計と一致するため、ページ分割して取得できないほど大きな検索をパーティション分割する場合のファセットとして使用できます。YEAR、MONTH、STATE_PROVINCE、SPECIES_KEYでは、該当フィールドを持たないレコードが除外されます。存在と不在を分けるには、occurrenceStatus: ANYとともにfacet: OCCURRENCE_STATUSを渡してください
gbif_search_datasets tool
- フィルター:
q、type(OCCURRENCE、CHECKLIST、METADATA、SAMPLING_EVENT)、publishingCountry、publishingOrg、hostingOrg。1 ページあたり最大 1,000 件です key、title、type、license、doi、recordCount、および 300 文字のdescriptionプレビューを返します。切り詰められた場合はdescriptionTruncatedフラグで示されます(全文はgbif_get_datasetで取得できます)publishingOrgはデータの所有元組織に一致し、通常はgbif_search_publishersから取得したキーを引き継いで使用します。hostingOrgは、そのインストール環境でデータを提供する組織に一致します。両方を指定した場合は、両条件の共通部分が対象になります。どちらも小文字の UUID 形式で指定してください。それ以外の値や、拒否されたフィルター値はinvalid_filterエラーになります
gbif_get_dataset tool
datasetKeyに UUID を 1 つ指定し、contactLimitを指定します(デフォルトは 10、最大 100。0を指定すると連絡先の詳細は省略されますが、contactsTotalは保持されます)。不正な形式のキーはinvalid_filterエラーになり、不明なキーはnot_foundエラーになりますdescription、citationText、license、doi、recordCount、numConstituents、contactsTotalとcontactsReturnedを含むcontacts、temporalCoverages、geographicCoveragesを返します
gbif_search_publishers tool
qに名前の一部を指定し、countryに国コード(alpha-2 または alpha-3、大文字小文字は問いません)を指定します。1 ページあたり最大 1,000 件です- 組織の
key、title、country、cityを返します。このキーはgbif_search_datasetsのpublishingOrgに引き継いで使用できます qが空、countryが空、または GBIF が解析できない国コードを指定した場合はinvalid_filterエラーになります
gbif://species/{taxonKey} リソース
application/json形式の分類群レコード:分類名、authorship、vernacularName、acceptedKeyとacceptedを含むtaxonomicStatus、numDescendantstaxonKeyは、符号付き 32 ビットの範囲内にある符号付き 10 進整数です。セグメントは URI デコードを 1 回行い、前後の空白を取り除きます。先頭の+、ゼロ埋め、およびそれらをパーセントエンコードした形式は受け付けます。未知のキーはnot_foundとして失敗します。不正なエスケープ、接尾辞、分数、指数表記、16 進数形式、内部の空白、範囲外の値は、リクエストを送信する前にinvalid_filterとして失敗します。gbif_match_speciesのバックボーンキー、または検索結果のnubKeyを使用し、その対応付けがない場合は名前を解決してください
gbif://dataset/{datasetKey} リソース
- 連絡先を 10 件に固定した、
application/json形式のgbif_get_datasetレコード datasetKeyはgbif_search_datasetsまたは出現記録から取得します。未知のキーはnot_found、形式が不正なキーはinvalid_filterとして失敗します
機能
@cyanheads/mcp-ts-core を基盤とし、stdio および Streamable HTTP トランスポート、切り替え可能な認証(none/jwt/oauth)、交換可能なストレージ(in-memory、filesystem、Supabase、Cloudflare KV/R2/D1)、オプションの OpenTelemetry トレーシングを備えた構造化ログに対応しています。
GBIF 固有の機能:
- GBIF API v1 の種、出現、データセット、組織の各エンドポイントに、キーなしでアクセスします。すべてのリクエストに識別用の
User-Agentを設定します - 同義語に対応したキー:
gbif_match_speciesは同義語を有効な分類群に解決し、出現ツールはそのtaxonKeyでフィルタリングします - デフォルトで観測記録を対象:検索、件数、ファセットの各ツールでは、デフォルトで
occurrenceStatusをPRESENTに設定し、不在記録を除外します。データセットのrecordCountはすべてのステータスを対象とするため、同じキーに対するgbif_count_occurrencesの合計より大きくなります - 厳格な国コード:出現ツールと
gbif_search_datasetsでは、country(記録の観測国)とpublishingCountry(発行者の国)は、大文字の ISO 3166-1 alpha-2 のみを受け付けます。ほかの形式では該当なしとして扱われるためです。stateProvinceは大文字と小文字を区別して完全一致するため、STATE_PROVINCEファセットの値を使用してください - 空のフィルターを拒否:GBIF は空のパラメーターをフィルターなしとして扱うため、空または空白のみの値をオプションのフィルターとして送信すると、クエリの範囲を広げる代わりに
invalid_filterとして失敗します。フィルターを適用しない場合は、そのフィールドを省略してください
エージェントに適した出力:
- スコープの通知:補足情報には
totalCount、endOfRecords、適用されたoccurrenceStatus、解決済みのtaxonScopeが含まれます。また、結果が空の場合、上限を超える合計の場合、stateProvinceが一致しなかった場合には通知します - 部分的な失敗を許容:
gbif_bulk_match_speciesはバッチ全体を失敗させず、名前ごとにNONEまたはERRORの行を返します - 型付きエラー:
invalid_filter、not_found、no_match、unresolved_taxon_scope、conflicting_taxon_scope、pagination_cap_exceededを、それぞれ復旧のヒントとともに返します - 疎なフィールドは
nullで埋めずに省略:extinctは、GBIF が明示的にフラグを設定した分類群にのみ表示されます - データセットのメタデータでは、期間、単一の日付、
1975-currentのようなそのままの期間表記を保持し、未対応の対象範囲情報を明示します。補足の記録数を取得できない場合は、メタデータを保持したままrecordCountNoticeを付与します - 発行者の説明では段落の区切りを保持し、数値文字参照を 1 回デコードします。Markdown 出力では発行者のテキストをそのまま表示します
はじめに
公開ホストインスタンス
公開インスタンスは https://gbif-biodiversity.caseyjhand.com/mcp で利用できます。インストールは不要です。Streamable HTTP を介して、任意の MCP クライアントを接続してください。
{
"mcpServers": {
"gbif-biodiversity-mcp-server": {
"type": "streamable-http",
"url": "https://gbif-biodiversity.caseyjhand.com/mcp"
}
}
}
セルフホスト/ローカル
MCP クライアントの設定ファイルに以下を追加してください。
{
"mcpServers": {
"gbif-biodiversity-mcp-server": {
"type": "stdio",
"command": "bunx",
"args": ["@cyanheads/gbif-biodiversity-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info"
}
}
}
}
または、npx を使用します(Bun は不要です)。
{
"mcpServers": {
"gbif-biodiversity-mcp-server": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@cyanheads/gbif-biodiversity-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info"
}
}
}
}
または、Docker を使用します。
{
"mcpServers": {
"gbif-biodiversity-mcp-server": {
"type": "stdio",
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "MCP_TRANSPORT_TYPE=stdio", "ghcr.io/cyanheads/gbif-biodiversity-mcp-server:latest"]
}
}
}
Streamable HTTP の場合は、トランスポートを設定してサーバーを起動してください。
MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
# Server listens at http://localhost:3010/mcp
前提条件
- Bun v1.4.0 以上(または Node.js v24 以上)。
- 認証情報は不要です。このサーバーが呼び出す GBIF エンドポイントは公開されています。
インストール
- リポジトリをクローンします:
git clone https://github.com/cyanheads/gbif-biodiversity-mcp-server.git
- ディレクトリに移動します:
cd gbif-biodiversity-mcp-server
- 依存関係をインストールします:
bun install
- 環境を設定します:
cp .env.example .env
# optionally set GBIF_USER_AGENT to a contact URL or email
設定
| 変数 | 説明 | デフォルト |
|---|---|---|
GBIF_BASE_URL | GBIF API のベース URL。 | https://api.gbif.org/v1 |
GBIF_CLAMP_READ_LIMITS | 大きすぎる読み取り上限を文書化された上限に制限し、要求値と適用値を明示します。一括照合では最初の 50 件の名前を処理し、残りは unprocessedNames に返します。代わりに上限超過を拒否することを通知して適用するには、false に設定します。厳密なブール値の解析により、不正な値は拒否されます。 | true |
GBIF_REQUEST_TIMEOUT_MS | リクエストごとの HTTP タイムアウト(ミリ秒)。 | 10000 |
GBIF_USER_AGENT | すべての GBIF リクエストで送信される User-Agent。GBIF は、連携するシステムに連絡先 URL またはメールアドレスを含めるよう求めています。 | サーバー名、バージョン、リポジトリ URL |
MCP_TRANSPORT_TYPE | トランスポート:stdio または http。 | stdio |
MCP_HTTP_PORT | HTTP サーバーのポート。 | 3010 |
MCP_SESSION_MODE | HTTP セッションモード:stateless、stateful、または auto。src/index.ts では stateless が宣言されています。この値を設定すると上書きされます。 | stateless |
MCP_AUTH_MODE | 認証:none、jwt、または oauth。 | none |
MCP_LOG_LEVEL | ログレベル(debug、info、warning、error など)。 | info |
LOG_TOOL_FAILURE_PAYLOADS | 失敗したツール呼び出しごとに、引数と結果をログに記録します。キー名による秘匿化を行い、LOG_TOOL_FAILURE_PAYLOAD_MAX_BYTES(デフォルトは 16384)を上限とします。自由形式の値に含まれるシークレットは秘匿化されません。 | false |
LOGS_DIR | ログファイルのディレクトリ(Node.js のみ)。 | <project-root>/logs |
STORAGE_PROVIDER_TYPE | ストレージバックエンド:in-memory、filesystem、supabase、cloudflare-kv/r2/d1。 | in-memory |
OTEL_ENABLED | OpenTelemetry を有効にします。 | false |
省略可能な上書き設定の全一覧は .env.example を参照してください。
サーバーの実行
ローカル開発
-
本番バージョンをビルドして実行します:
# 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
docker build -t gbif-biodiversity-mcp-server .
docker run --rm -p 3010:3010 gbif-biodiversity-mcp-server
Dockerfile のデフォルトでは、HTTP トランスポート、ステートレスセッションモードを使用し、/var/log/gbif-biodiversity-mcp-server にログを出力します。OpenTelemetry のピア依存関係はデフォルトでインストールされます。これらを省略するには、--build-arg OTEL_ENABLED=false を指定してビルドしてください。
プロジェクト構成
| ディレクトリ | 用途 |
|---|---|
src/mcp-server/tools | ツール定義(*.tool.ts)と共有ツールユーティリティ。種の分類、出現記録、データセット、公開者に関する 13 個のツールがあります。 |
src/mcp-server/resources | リソース定義。種とデータセットのリソースがあります。 |
src/services/gbif | GBIF API サービス層:リトライ、タイムアウト、エラーマッピングを備えた HTTP クライアントと、未加工レスポンスの型。 |
src/config | Zod を使用した、サーバー固有の環境変数の解析と検証。 |
tests/ | src/ の構成に対応した単体テストと統合テスト。 |
開発ガイド
開発ガイドラインとアーキテクチャ上のルールについては、CLAUDE.md を参照してください。要点は以下のとおりです:
- ハンドラーは例外をスローし、フレームワークが捕捉します。ツールのロジック内で
try/catchは使用しません - ログには
ctx.log、ストレージにはctx.stateを使用します src/index.tsのcreateApp()配列に新しいツールとリソースを登録します- 外部 API の呼び出しは、未加工データの検証 → ドメイン型への正規化 → 出力スキーマの返却という手順でラップします。不足しているフィールドを決して捏造しないでください
貢献
課題の報告を歓迎します。提出前にチェックとテストを実行してください:
bun run devcheck
bun run test
ライセンス
このプロジェクトは Apache 2.0 ライセンスの下でライセンスされています。詳細については、LICENSE ファイルを参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。