使用说明
项目简介
本项目 '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 服务器与客户端之间的通信协议,易于部署和集成。
安装步骤
- 克隆仓库: 首先,你需要克隆 'wikidata-mcp' 仓库到本地。
git clone https://github.com/yanlinf/wikidata-mcp.git cd wikidata-mcp - 安装依赖: 虽然仓库中没有明确的 'requirements.txt' 文件,但根据代码内容,你需要安装以下 Python 库:
请确保你的 Python 环境中已安装这些必要的库。pip install fastmcp aiohttp python-dotenv openai anthropic
服务器配置
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 在同一目录下
基本使用方法
-
启动 MCP 服务器: 在仓库根目录下,打开终端并运行服务器脚本 'wikidata_server.py'。
python wikidata_server.py服务器将通过 Stdio 启动并等待客户端连接。
-
运行 MCP 客户端: 运行 'client.py' 客户端脚本,并将服务器脚本的路径作为命令行参数传递给客户端。例如,如果 'wikidata_server.py' 与 'client.py' 在同一目录下,则运行:
python client.py wikidata_server.py客户端会连接到服务器,并进入交互式聊天模式。
-
在客户端进行查询: 在客户端的 'Query:' 提示符后,输入自然语言查询或指令。客户端将根据你的查询,决定是否调用服务器提供的工具 ( 'run_sparql' 或 'lookup_item'),并将结果返回给你。
示例查询:
- 'Who is Albert Einstein?' (客户端可能会调用 'lookup_item' 工具查找爱因斯坦的信息)
- 'List 10 famous scientists.' (客户端可能会调用 'run_sparql' 工具执行 SPARQL 查询)
-
退出客户端: 在 'Query:' 提示符后输入 'quit' 可以安全退出客户端。
注意: 'client.py' 客户端代码示例中集成了对 OpenAI GPT 和 Anthropic Claude 的调用,你需要配置相应的 API 密钥 (通过 '.env' 文件) 才能完整体验客户端的功能。如果你只想测试 MCP 服务器和客户端的连接及工具调用,可以暂时忽略 GPT 和 Claude 的部分,专注于使用客户端与服务器进行交互。
信息
分类
数据库与文件