维基数据 MCP 服务器是一个基于模型上下文协议(MCP)实现的维基数据 API 服务器。它提供了一系列与维基数据交互的工具,如搜索标识符(实体和属性)、提取元数据(标签和描述)以及执行 SPARQL 查询,为用户与维基数据的交互提供了便利。
本项目提供了便捷的安装和运行方式,让你可以快速使用维基数据 MCP 服务器。
要自动通过 Smithery 安装 Wikidata MCP Server for Claude Desktop,可使用以下命令:
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
# 如果你想一起运行客户端示例
$ uv sync --extra example
使用以下命令运行服务器:
$ uv run src/server.py
如果你想通过简单的客户端代码进行测试(与 langchain-mcp-adapters 一起使用),请在另一个终端窗口中运行客户端:
# 在另一个终端窗口中
$ uv run src/client.py
LLM 会提取有效的实体和属性标识符,执行 SPARQL 查询,并最终推荐一部由奉俊昊执导的电影。
{
"messages": [
HumanMessage(
content="你能推荐我一部奉俊昊导演的电影吗?",
),
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": "Memories of Murder"}}]',
name="execute_sparql",
),
AIMessage(
content="Memories of Murder",
),
]
}
| 属性 | 详情 |
|---|---|
search_entity |
根据查询字符串搜索实体标识符 |
get_properties |
获取指定实体的属性列表 |
search_property |
根据查询字符串搜索属性标识符 |
execute_sparql |
执行 SPARQL 查询并返回结果 |
该项目的许可信息如下:
欢迎使用 Wikidata MCP Server!如果有任何问题或建议,请随时联系维护团队。