使用说明

项目简介

本项目 'wikidata-mcp' 是一个 MCP (Model Context Protocol) 服务器的实现,专注于为大型语言模型 (LLM) 提供对 Wikidata 知识库的访问能力。它通过 MCP 协议,以标准化的方式向 LLM 客户端提供工具,使得 LLM 可以调用这些工具来查询 Wikidata 的数据,从而增强 LLM 在知识密集型任务中的表现。

主要功能点

  • SPARQL 查询工具 (run_sparql): 允许 LLM 执行 SPARQL 查询语句,直接从 Wikidata 获取结构化数据。这使得 LLM 能够处理需要复杂知识检索的任务,例如查询特定类型的实体、实体属性等。
  • 实体查找工具 (lookup_item): 允许 LLM 通过实体名称在 Wikidata 中查找对应的实体 ID 和相关信息。这为 LLM 提供了实体识别和链接的能力,可以用于知识图谱导航、信息检索等场景。
  • 基于 FastMCP 框架: 使用 'fastmcp' 库构建,简化了 MCP 服务器的开发,提供了高效的 JSON-RPC 通信和工具管理能力。
  • Stdio 传输协议: 默认使用 Stdio (标准输入输出) 作为 MCP 服务器与客户端之间的通信协议,易于部署和集成。

安装步骤

  1. 克隆仓库: 首先,你需要克隆 'wikidata-mcp' 仓库到本地。
    git clone https://github.com/yanlinf/wikidata-mcp.git
    cd wikidata-mcp
  2. 安装依赖: 虽然仓库中没有明确的 'requirements.txt' 文件,但根据代码内容,你需要安装以下 Python 库:
    pip install fastmcp aiohttp python-dotenv openai anthropic
    请确保你的 Python 环境中已安装这些必要的库。

服务器配置

MCP 客户端需要配置服务器的启动命令和参数才能连接到 'wikidata-mcp' 服务器。以下是基于 'wikidata_server.py' 文件生成的服务器配置信息(JSON 格式):

{
  "server_name": "wikidata",  // 服务器名称,在 wikidata_server.py 中被 FastMCP("wikidata") 初始化
  "command": "python",      // 启动服务器的命令,这里使用 python 解释器
  "args": ["wikidata_server.py"] // 启动命令的参数,指定服务器脚本为 wikidata_server.py
}

配置说明:

  • 'server_name': 服务器的名称,客户端和服务端需要名称匹配才能正确通信。
  • 'command': 运行服务器端代码的命令,通常是 Python 解释器 'python' 或 'python3'。
  • 'args': 传递给 'command' 的参数列表,这里指定了服务器脚本 'wikidata_server.py' 的路径。

客户端配置示例 (Python 代码片段,仅供参考,MCP 客户端实现方式多样):

from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
import asyncio
from contextlib import AsyncExitStack

async def connect_and_use_server(server_script_path):
    exit_stack = AsyncExitStack()
    server_params = StdioServerParameters(
        command="python",  # 与服务器配置中的 command 一致
        args=[server_script_path], # 服务器脚本路径,例如 "wikidata_server.py"
        env=None
    )
    stdio_transport = await exit_stack.enter_async_context(stdio_client(server_params))
    stdio, write = stdio_transport
    session = await exit_stack.enter_async_context(ClientSession(stdio, write))
    await session.initialize()

    # ... 后续使用 session 调用工具 ...

    await exit_stack.aclose()

# 示例调用
asyncio.run(connect_and_use_server("wikidata_server.py")) # 假设 wikidata_server.py 在同一目录下

基本使用方法

  1. 启动 MCP 服务器: 在仓库根目录下,打开终端并运行服务器脚本 'wikidata_server.py'。

    python wikidata_server.py

    服务器将通过 Stdio 启动并等待客户端连接。

  2. 运行 MCP 客户端: 运行 'client.py' 客户端脚本,并将服务器脚本的路径作为命令行参数传递给客户端。例如,如果 'wikidata_server.py' 与 'client.py' 在同一目录下,则运行:

    python client.py wikidata_server.py

    客户端会连接到服务器,并进入交互式聊天模式。

  3. 在客户端进行查询: 在客户端的 'Query:' 提示符后,输入自然语言查询或指令。客户端将根据你的查询,决定是否调用服务器提供的工具 ( 'run_sparql' 或 'lookup_item'),并将结果返回给你。

    示例查询:

    • 'Who is Albert Einstein?' (客户端可能会调用 'lookup_item' 工具查找爱因斯坦的信息)
    • 'List 10 famous scientists.' (客户端可能会调用 'run_sparql' 工具执行 SPARQL 查询)
  4. 退出客户端: 在 'Query:' 提示符后输入 'quit' 可以安全退出客户端。

注意: 'client.py' 客户端代码示例中集成了对 OpenAI GPT 和 Anthropic Claude 的调用,你需要配置相应的 API 密钥 (通过 '.env' 文件) 才能完整体验客户端的功能。如果你只想测试 MCP 服务器和客户端的连接及工具调用,可以暂时忽略 GPT 和 Claude 的部分,专注于使用客户端与服务器进行交互。

信息

分类

数据库与文件