这是一个 模型上下文协议(MCP) 服务器,它为大语言模型提供对维基数据(Wikidata)的访问。
5个MCP工具 用于与维基数据进行交互:
search_entities:实体的文本搜索get_entity:通过ID详细检索实体sparql_query:执行自定义的SPARQL查询get_relations:探索实体的关系find_by_property:通过属性 - 值进行搜索支持的API:
git clone https://github.com/joelgombin/mcp-wikidata.git
cd mcp-wikidata
uv sync
uv run python test_connection.py
将以下配置添加到您的Claude桌面版文件(在macOS上为 ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"mcp-wikidata": {
"command": "/path/to/your/mcp-wikidata/run_mcp_wikidata.sh",
"args": []
}
}
}
重要提示:请将 /path/to/your/mcp-wikidata/ 替换为您安装目录的绝对路径。
如果您更喜欢不使用脚本包装器的配置:
{
"mcpServers": {
"mcp-wikidata": {
"command": "uv",
"args": ["run", "mcp-wikidata"],
"cwd": "/path/to/your/mcp-wikidata",
"env": {
"PATH": "/usr/local/bin:/usr/bin:/bin:~/.local/bin"
}
}
}
}
通过文本搜索实体:
{
"query": "Einstein",
"language": "en",
"limit": 5,
"type": "item"
}
通过ID检索实体:
{
"entity_id": "Q937",
"language": "en",
"simplified": true
}
自定义SPARQL查询:
{
"query": "SELECT ?item ?itemLabel WHERE { ?item wdt:P31 wd:Q5 . SERVICE wikibase:label { bd:serviceParam wikibase:language \"en\" . } } LIMIT 10",
"format": "json"
}
实体的关系:
{
"entity_id": "Q937",
"relation_type": "outgoing",
"limit": 20
}
通过属性搜索:
{
"property": "P106",
"value": "physicist",
"limit": 10
}
基于 .env.example 创建一个 .env 文件:
# API请求的用户代理
WIKIDATA_USER_AGENT=MCP-Wikidata/0.1.0
# 请求速率限制(每分钟)
WIKIDATA_RATE_LIMIT=60
# 请求超时时间(秒)
WIKIDATA_TIMEOUT=30
# 缓存的TTL(秒)
WIKIDATA_CACHE_TTL=3600
# 每次请求的最大结果数
WIKIDATA_MAX_RESULTS=50
# 默认语言
WIKIDATA_DEFAULT_LANGUAGE=en
若要诊断问题:
uv run mcp-wikidata --log-level DEBUG
which uv
# 应返回类似 /Users/username/.local/bin/uv 的路径
./run_mcp_wikidata.sh --help
chmod +x run_mcp_wikidata.sh
此错误表明Claude桌面版找不到 uv 命令。脚本包装器 run_mcp_wikidata.sh 会自动解决此问题,它会在多个常见位置查找 uv。
详细日志可在以下位置找到:
mcp-wikidata/
├ mcp_wikidata/ # 主要包
├ __init__.py
├ server.py # 主要的MCP服务器
├ config.py # 配置
├ tools.py # MCP工具定义
└ wikidata_client.py # 维基数据API客户端
├ tests/ # 测试
├ run_mcp_wikidata.sh # 脚本包装器(推荐)
├ test_*.py # 测试脚本
├ pyproject.toml # 项目配置
├ .env.example # 环境变量
└ README.md
欢迎大家贡献代码!您可以:
本项目采用MIT许可证,更多详细信息请参阅 LICENSE 文件。
由Claude Code生成 🚀