内容
## 维基数据MCP服务器
[](https://smithery.ai/server/@zzaebok/mcp-wikidata)
使用模型上下文协议(MCP)实现维基数据API的服务器。本项目提供了与维基数据交互的工具,例如**搜索标识符**(实体和属性),**提取元数据**(标签和描述)和**执行SPARQL查询**。
---
### 安装
#### 通过Smithery安装
通过[Smithery](https://smithery.ai/server/@zzaebok/mcp-wikidata)自动安装维基数据MCP服务器:
```bash
npx -y @smithery/cli install @zzaebok/mcp-wikidata --client claude
```
#### 手动安装
如果尚未安装`uv`,请先安装:
```bash
$ curl -LsSf https://astral.sh/uv/install.sh | sh
```
然后,安装依赖项:
```bash
$ git clone https://github.com/zzaebok/mcp-wikidata.git
$ cd mcp-wikidata
$ uv sync
# 如果要运行客户端示例
$ uv sync --extra example
```
---
### 运行
使用以下命令运行服务器:
```bash
$ uv run src/server.py
```
如果要使用简单的客户端代码(使用`langchain-mcp-adapters`)进行测试,请在另一个shell中运行客户端:
```bash
$ uv run src/client.py
```
大型语言模型提取有效的实体和属性标识符,执行SPARQL查询,并最终推荐由奉俊昊执导的电影。
<details>
<summary><i>查看执行输出</i></summary>
```python
{
"messages": [
HumanMessage(
content="Can you recommend me a movie directed by Bong Joonho?",
),
AIMessage(
tool_calls=[
{
"name": "search_entity",
"args": {"query": "奉俊昊"},
}
],
),
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": "导演"},
}
],
),
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": "母亲"}}]',
name="execute_sparql",
),
AIMessage(
content='我推荐电影《母亲》,它由奉俊昊执导。',
),
]
}
```
</details>
---
### 维基数据MCP工具
服务器实现了以下工具:
| 工具 | 描述 |
| ---------------------------------------------------- | -------------------------------------------------------------------------- |
| `search_entity(query: str)` | 通过查询搜索维基数据实体ID。 |
| `search_property(query: str)` | 通过查询搜索维基数据属性ID。 |
| `get_properties(entity_id: str)` | 获取与给定维基数据实体ID关联的属性。 |
| `execute_sparql(sparql_query: str)` | 在维基数据上执行SPARQL查询。 |
| `get_metadata(entity_id: str, language: str = "zh")` | 检索给定维基数据实体ID的中文标签和描述。 |
---
#### 许可证
MIT License
连接信息
猜你喜欢
Firecrawl
Firecrawl MCP Server 实现了网页抓取、爬虫和内容提取功能。
MarkItDown MCP
MarkItDown-MCP是一个轻量级服务器,用于将URI转换为Markdown。
MarkItDown
将文件和办公文档转换为Markdown的Python工具。
文件系统操作
Node.js MCP服务器,用于文件系统操作,支持动态访问控制。
OmniRoute
永不停息的编码。免费 AI 网关 — 一个端点,160+ 提供商,零停机时间。智能 4 级自动降级(订阅 → API → 廉价 →...
TrendRadar
TrendRadar:30秒内为您提供真实新闻的热点助手。