mcpField
M
Mcp Wikidata

Mcp Wikidata

ローカル
github.com/zzaebok検索4931 週間前に更新

Mcp Wikidata について

Wikidata API を Model Context Protocol 経由で利用できるようにする MCP サーバーです。エンティティとプロパティの ID 検索、メタデータの取得、SPARQL クエリの実行ツールを提供します。Wikidata の構造化データを必要とする LLM アプリケーションの開発者に向いています。

主な機能

  1. 01Wikidata エンティティ ID の検索
  2. 02Wikidata プロパティ ID の検索
  3. 03エンティティに紐づくプロパティの取得
  4. 04英語のラベルと説明の取得
  5. 05Wikidata に対する SPARQL クエリの実行

活用シーン

  1. 01LLM による Wikidata 識別子の検索
  2. 02SPARQL クエリによる構造化データへの質問応答
  3. 03Wikidata の情報に基づく映画の推薦

MCP 対応

本プロジェクトは MCP サーバーとして、search_entity、search_property、get_properties、execute_sparql、get_metadata のツールを MCP クライアントに提供します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"wikidata": {
"command": "npx",
"args": [
"-y",
"@smithery/cli"
]
}
}
}
起動コマンドnpx -y @smithery/cli

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

パッケージ
npm@smithery/cli

ツール

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

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

詳細

Wikidata MCP サーバー

smithery badge

Model Context Protocol(MCP)を使用した、Wikidata API のサーバー実装です。 このプロジェクトでは、識別子の検索(エンティティとプロパティ)、メタデータの抽出(ラベルと説明)、SPARQL クエリの実行など、Wikidata とやり取りするためのツールを提供します。


インストール
Smithery 経由でのインストール

Smithery 経由で、Claude Desktop 用の Wikidata MCP サーバーを自動的にインストールするには:

npx -y @smithery/cli install @zzaebok/mcp-wikidata --client claude
手動でのインストール

まだインストールされていない場合は、uv をインストールしてください。

$ curl -LsSf https://astral.sh/uv/install.sh | sh

次に、依存関係をインストールします。

$ git clone https://github.com/zzaebok/mcp-wikidata.git
$ cd mcp-wikidata
$ uv sync
# if you want to run client example together
$ uv sync --extra example

実行

次のコマンドでサーバーを実行します:

$ uv run src/server.py

シンプルなクライアントコード(langchain-mcp-adapters を使用)でテストする場合は、次のコマンドでクライアントを実行します:

# in another shell
$ uv run src/client.py

LLM が有効なエンティティ識別子とプロパティ識別子を抽出し、SPARQL クエリを実行して、最後にポン・ジュノ監督の映画をおすすめします。

実行結果を表示
{
  "messages": [
      HumanMessage(
          content="Can you recommend me a movie directed by Bong Joonho?",
      ),
      AIMessage(
          tool_calls=[
              {
                  "name": "search_entity",
                  "args": {"query": "Bong Joon-ho"},
              }
          ],
      ),
      ToolMessage(
          content="Q495980",
          name="search_entity",
      ),
      AIMessage(
          tool_calls=[
              {
                  "name": "get_properties",
                  "args": {"entity_id": "Q495980"},
              }
          ],
      ),
      ToolMessage(
          content='["P345", "P244", "P214", "P227", ...]',
          name="get_properties",
      ),
      AIMessage(
          tool_calls=[
              {
                  "name": "search_property",
                  "args": {"query": "director"},
              }
          ],
      ),
      ToolMessage(
          content="P57",
          name="search_property",
      ),
      AIMessage(
          tool_calls=[
              {
                  "name": "execute_sparql",
                  "args": {
                      "sparql_query": 'SELECT ?film ?filmLabel WHERE {\n  ?film wdt:P57 wd:Q495980.\n  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }\n} LIMIT 1'
                  },
              }
          ],
      ),
      ToolMessage(
          content='[{"film": {"type": "uri", "value": "http://www.wikidata.org/entity/Q483761"}, "filmLabel": {"xml:lang": "en", "type": "literal", "value": "Mother"}}]',
          name="execute_sparql",
      ),
      AIMessage(
          content='I recommend the movie "Mother," which was directed by Bong Joon-ho.',
      ),
  ]
}

Wikidata MCP ツール

サーバーには次のツールが実装されています:

ツール説明
search_entity(query: str)クエリから Wikidata のエンティティ ID を検索します。
search_property(query: str)クエリから Wikidata のプロパティ ID を検索します。
get_properties(entity_id: str)指定した Wikidata エンティティ ID に関連付けられたプロパティを取得します。
execute_sparql(sparql_query: str)Wikidata で SPARQL クエリを実行します。
get_metadata(entity_id: str, language: str = "en")指定した Wikidata エンティティ ID の英語のラベルと説明を取得します。

ライセンス

MIT ライセンス

コメント

MCP は初めてですか?

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

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