m

mcp-Wikidata工具

@zzaebok/mcp-wikidata
0 Stars 49 次浏览 zzaebok 更新于 2026-08-23

一种用于通过Model Context Protocol与Wikidata API交互的服务器实现,提供搜索标识符、提取元数据和执行SPARQL查询的工具。

该服务暂未提供标准配置,请参考 README 手动接入

服务介绍

Wikidata MCP 服务器

使用 Model Context Protocol (MCP) 实现的 Wikidata API 服务器。此项目提供了与 Wikidata 交互的工具,如搜索标识符(实体和属性)、提取元数据(标签和描述)以及执行 SPARQL 查询


安装

如果尚未安装 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 许可证