维基百科搜索服务

一个全面的模型上下文协议(MCP)服务器,提供维基百科搜索和内容检索功能,以及一个交互式客户端应用程序,适用于AI助手和其他MCP客户端进行维基百科内容探索。

  • by heIsThePirate
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 heisthepirate/first-mcp-server

使用说明

维基百科MCP服务器

一个全面的模型上下文协议(MCP)服务器,提供维基百科搜索和内容检索功能,以及一个交互式客户端应用程序。该服务器允许AI助手和其他MCP客户端搜索维基百科,检索文章摘要,列出文章部分,获取特定部分内容,并包括智能提示和资源,以增强维基百科的探索。

特性

MCP服务器工具

此MCP服务器公开了以下工具:

1. fetch_wikipedia_info

在维基百科中搜索一个主题,并返回最匹配的标题、摘要和URL。

参数:

  • query (string):要查找的搜索词或主题

退货:

  • title维基百科文章
  • summary:文章摘要
  • url:维基百科页面的URL
  • error:如果搜索失败或不明确,则显示错误消息

2. list_wikipedia_sections

从维基百科文章中获取所有章节标题的列表。

参数:

  • topic (string):维基百科文章标题

退货:

  • sections:文章中的章节标题数组
  • error:如果找不到文章,则显示错误消息

3. get_section_content

从维基百科文章中检索特定部分的内容。

参数:

  • topic (string):维基百科文章标题
  • section_title (string):要检索的特定部分

退货:

  • content:指定章节的文本内容
  • error:如果找不到文章或章节,则显示错误消息

MCP服务器提示

highlight_sections_prompt

识别维基百科文章中关于特定主题的最重要部分。

参数:

  • topic (string):维基百科文章主题

目的: 通过提供智能推荐和解释,帮助用户专注于维基百科长篇文章中最相关和最有趣的部分。

MCP服务器资源

suggested_titles

提供一份精心策划的维基百科主题推荐列表,供您探索。

URI: file://suggested_titles

退货: 从以下位置加载的建议维基百科主题列表 suggested_titles.txt

当前主题:

  • 冠状病毒
  • Python语言
  • 提示工程
  • node.js
  • 光合作用
  • 太阳系

交互式客户端应用程序

该项目包括一个复杂的交互式客户端(mcp_client.py)演示了如何使用具有AI功能的MCP服务器:

客户端功能

  • LangGraph集成:使用LangGraph进行有状态对话管理
  • OpenAI GPT-4集成:由OpenAI的GPT-4提供支持,用于智能响应
  • 交互式命令:探索MCP能力的特殊命令
  • 内存管理:在交互中保持对话上下文

客户端命令

  • /prompts -列出服务器上所有可用的提示
  • /prompt <name> "args" -使用参数执行特定提示
  • /resources -列出服务器上的所有可用资源
  • /resource <name> -访问特定资源
  • 定期聊天-提出将使用维基百科工具回答的问题

安装

  1. 克隆此存储库:
git clone https://github.com/heIsThePirate/first-mcp-server.git
cd first-mcp-server
  1. 安装所需的依赖项:
pip install -r requirements.txt
  1. 设置您的OpenAI API密钥:
    • 复制 .env 文件并添加您的OpenAI API密钥
    • 或设置 OPENAI_API_KEY 环境变量

用法

运行MCP服务器

独立运行MCP服务器:

python mcp_server.py

服务器将启动并通过stdio传输监听MCP协议消息。

运行交互式客户端

运行交互式客户端应用程序:

python mcp_client.py

这将启动一个交互式会话,您可以在其中:

  • 询问有关维基百科主题的问题
  • 使用特殊命令浏览提示和资源
  • 与维基百科集成进行人工智能驱动的对话

客户端会话示例

Wikipedia MCP agent is ready.
Type a question or use the following templates:
  /prompts                - to list available prompts
  /prompt <name> "args"   - to run a specific prompt
  /resources              - to list available resources
  /resource <name>        - to run a specific resource

You: Tell me about Python programming language
AI: [AI response with Wikipedia information about Python]

You: /resources
Available Resources:
[1] suggested_titles

You: /resource suggested_titles
=== Resource Text ===
coronavirus
python language
prompt engineering
node.js
photosynthesis
the solar system

需求

核心依赖关系

  • Python 3.7+
  • 维基百科==1.4.0
  • mcp>=1.0.0

客户端依赖关系(用于交互式客户端)

  • 兰开夏
  • 兰格拉夫
  • langchain mcp适配器
  • python dotenv

配置

该项目使用环境变量进行配置:

  • OPENAI_API密钥:您的OpenAI API密钥(交互式客户端需要)

配置通过以下方式管理:

  • .env 环境变量文件
  • config.py 用于加载和管理配置

错误处理

服务器处理常见的维基百科API错误:

  • 模糊Error:当搜索词与多篇文章匹配时,返回建议
  • 页面错误:当无法加载页面时
  • 一般例外:优雅地处理描述性错误消息

项目结构

first-mcp-server/
├── mcp_server.py           # Main MCP server implementation
├── mcp_client.py           # Interactive client application
├── config.py               # Configuration management
├── .env                    # Environment variables
├── suggested_titles.txt    # Curated list of Wikipedia topics
├── requirements.txt        # Python dependencies
└── README.md              # This file

示例用例

  • 助研:使用人工智能提供的见解搜索和总结维基百科文章
  • 内容探索:浏览带有智能推荐的文章部分
  • 教育工具:通过引导式探索获取百科全书式信息
  • AI助手:通过对话界面提供维基百科中的事实信息
  • 交互式学习:通过提示和精心策划的建议探索主题

贡献

请随时提交问题和增强请求!贡献领域:

  • 维基百科的其他工具和功能
  • 增强提示以更好地发现内容
  • 扩大资源收集
  • 客户端界面改进

许可证

这个项目是开源的,可以在MIT许可证下使用。