返回市场
MCP-维基数据服务器

MCP-维基数据服务器

作者:joelgombin2 星标更新:2025-07-29

项目介绍

MCP Wikidata Server

一个提供大型语言模型访问Wikidata数据的模型上下文协议(MCP)服务器。

🔧 功能

  • 5个MCP工具 用于与Wikidata交互:

    • search_entities:实体的文本搜索
    • get_entity:通过ID详细恢复实体
    • sparql_query:运行自定义SPARQL查询
    • get_relations:探索实体的关系
    • find_by_property:按属性值搜索
  • 支持的API

    • Wikibase API(实体搜索和检索)
    • SPARQL 查询服务(复杂查询)
    • 多语言支持和智能缓存

📋 先决条件

  • Python 3.10+
  • uv(现代Python包管理器)

📦 安装

1. 克隆项目

git clone https://github.com/joelgombin/mcp-wikidata.git
cd mcp-wikidata

2. 安装依赖

uv sync

3. 测试安装

uv run python test_connection.py

⚙️ 使用Claude Desktop配置

推荐配置(便携式)

在你的Claude Desktop文件中添加此配置(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"
      }
    }
  }
}

🧪 测试和验证

使用MCP Inspector测试

npx @modelcontextprotocol/inspector uv run mcp-wikidata

手动测试API

uv run python test_manual.py

完整的MCP客户端测试

uv run python test_mcp_client.py

🔧 工具使用

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请求的User-Agent
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 Desktop中出现“服务器断开”错误

  1. 检查UV安装

    which uv
    # 应返回类似路径:/Users/username/.local/bin/uv
    
  2. 测试包装脚本

    ./run_mcp_wikidata.sh --help
    
  3. 检查权限

    chmod +x run_mcp_wikidata.sh
    
  4. 重启Claude Desktop,修改配置后

“spawned uv ENOENT” 错误

此错误表示Claude Desktop无法找到命令uv。包装脚本run_mcp_wikidata.sh会自动解决这个问题,通过在多个常见位置查找uv

诊断日志

详细的日志可以在以下地方找到:

  • MCP Inspector控制台
  • Claude Desktop日志文件(取决于你的操作系统)
  • MCP服务器stderr输出

📁 项目结构

mcp-wikidata/
  ├ mcp_wikidata/           # 主要包
     ├ __init__.py
     ├ server.py           # 主要MCP服务器
     ├ config.py           # 配置
     ├ tools.py            # MCP工具定义
     └ wikidata_client.py  # Wikidata API客户端
  ├ tests/                  # 测试
  ├ run_mcp_wikidata.sh    # 包装脚本(推荐)
  ├ test_*.py              # 测试脚本
  ├ pyproject.toml         # 项目配置
  ├ .env.example           # 环境变量
  └ README.md

🤝 贡献

欢迎贡献!请不要犹豫:

  • 报告bug
  • 提出改进意见
  • 添加新的MCP工具
  • 改进文档

📄 许可证

MIT许可证 - 查看LICENSE文件获取更多详情。

📚 有用资源


生成于 Claude Code 🚀