README
🚀 MCP Wikidata服务器
这是一个 模型上下文协议(MCP) 服务器,它为大语言模型提供对维基数据(Wikidata)的访问。
✨ 主要特性
-
5个MCP工具 用于与维基数据进行交互:
search_entities:实体的文本搜索get_entity:通过ID详细检索实体sparql_query:执行自定义的SPARQL查询get_relations:探索实体的关系find_by_property:通过属性 - 值进行搜索
-
支持的API:
- 维基基础API(实体的搜索和检索)
- SPARQL查询服务(复杂查询)
- 多语言支持和智能缓存
📦 安装指南
1. 克隆项目
git clone https://github.com/joelgombin/mcp-wikidata.git
cd mcp-wikidata
2. 安装依赖
uv sync
3. 测试安装
uv run python test_connection.py
🚀 快速开始
与Claude桌面版的配置
推荐配置(可移植)
将以下配置添加到您的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/ 替换为您安装目录的绝对路径。
直接使用uv的替代方法
如果您更喜欢不使用脚本包装器的配置:
{
"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"
}
}
}
}
💻 使用示例
基础用法
search_entities
通过文本搜索实体:
{
"query": "Einstein",
"language": "en",
"limit": 5,
"type": "item"
}
get_entity
通过ID检索实体:
{
"entity_id": "Q937",
"language": "en",
"simplified": true
}
sparql_query
自定义SPARQL查询:
{
"query": "SELECT ?item ?itemLabel WHERE { ?item wdt:P31 wd:Q5 . SERVICE wikibase:label { bd:serviceParam wikibase:language \"en\" . } } LIMIT 10",
"format": "json"
}
get_relations
实体的关系:
{
"entity_id": "Q937",
"relation_type": "outgoing",
"limit": 20
}
find_by_property
通过属性搜索:
{
"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
故障排除
Claude桌面版中出现 "server disconnected" 错误
- 检查uv的安装:
which uv
# 应返回类似 /Users/username/.local/bin/uv 的路径
- 测试脚本包装器:
./run_mcp_wikidata.sh --help
- 检查权限:
chmod +x run_mcp_wikidata.sh
- 修改配置后重新启动Claude桌面版
出现 "spawned uv ENOENT" 错误
此错误表明Claude桌面版找不到 uv 命令。脚本包装器 run_mcp_wikidata.sh 会自动解决此问题,它会在多个常见位置查找 uv。
诊断日志
详细日志可在以下位置找到:
- MCP检查器控制台
- Claude桌面版日志文件(取决于您的操作系统)
- MCP服务器的标准错误输出
📚 详细文档
项目结构
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
🤝 贡献
欢迎大家贡献代码!您可以:
- 报告错误
- 提出改进建议
- 添加新的MCP工具
- 完善文档
📄 许可证
本项目采用MIT许可证,更多详细信息请参阅 LICENSE 文件。
📚 有用的资源
由Claude Code生成 🚀
Scan to join WeChat group