论文检索聊天机器人

一个结合研究服务器和聊天客户端的系统,用于检索学术论文并通过MCP协议进行交互。

  • by Protospi
  • Jupyter Notebook
  • 本地部署
  • 更新于
在 GitHub 查看 protospi/mcp-remote-server

使用说明

MCP研究项目

该项目由两个主要部分组成:一个处理论文检索的研究服务器和一个使用模型上下文协议(MCP)与研究服务器交互的聊天机器人客户端。

项目结构

mcp_project/
├── research_server.py    # Server component for paper retrieval
├── mcp_chatbot.py       # Client chatbot component
├── .venv/               # Virtual environment directory
└── papers/              # Directory for downloaded papers

服务器组件(research_Server.py)

先决条件

  • Python 3.x
  • UV包管理器
  • Node.js和NPM(用于检查器)

安装说明

  1. 导航到项目目录:
cd mcp_project_prompt_resources
  1. 使用UV初始化:
uv init
  1. 创建并激活虚拟环境:
uv venv
source .venv/bin/activate
  1. 安装所需的依赖项:
uv add mcp arxiv
uv pip install -r requirements.txt

运行服务器

  1. 启动检查器:
npx @modelcontextprotocol/inspector uv run research_server.py
  1. 当系统提示安装软件包时,键入 y

  2. 配置检查器:

    • 在浏览器中打开提供的检查员地址
    • 在配置下,指定检查器代理地址
    • 有关详细的配置步骤,请遵循检查器UI说明

访问论文

  • 导航到“文件”>“打开”>“L4”>“mcp_project”
  • 论文将存储在论文/目录中

停止服务器

  • 使用 Ctrl+C 在航站楼阻止检查员

客户端组件(mcp_chatbot.py)

先决条件

  • Python 3.x
  • UV包管理器
  • 服务器设置中的活动虚拟环境

安装说明

  1. 导航到项目目录:
cd mcp_project_prompt_resources
  1. 激活虚拟环境:
source .venv/bin/activate
  1. 安装其他依赖项:
uv add anthropic python-dotenv nest_asyncio

运行聊天机器人

  1. 启动聊天机器人:
uv run mcp_chatbot.py
  1. 通过命令行与聊天机器人交互
  2. 类型 quit 退出聊天机器人

访问论文

  • 导航到“文件”>“打开”>“L5”>“mcp_project”以访问下载的论文

环境变量

聊天机器人需要以下环境变量:

  • ANTHROPIC_API_KEY:Claude访问的Anthropic API密钥

备注

  • 启动聊天机器人之前,请确保服务器正在运行
  • 跟踪API的使用情况和纸质下载
  • 服务器和客户端组件应在单独的终端中运行
  • 完成后,确保正确关闭两个应用程序

资源和提示模板

纸张存储结构

研究服务器按以下结构组织论文:

  • papers/ -所有研究论文的根目录
    • {topic_name}/ -每个研究主题的文件夹(例如ai_interpretability、llm_reasoning)
      • papers_info.json -包含该主题论文元数据的JSON文件

MCP资源

MCP中的资源是只读数据端点,类似于REST API中的GET端点。研究服务器公开了两个主要资源:

  1. 可用主题文件夹列表:

    • URI: papers://folders
    • 返回可用研究主题列表
  2. 特定主题下的论文信息:

    • URI: papers://{topic}
    • 返回指定主题的论文元数据
    • 在运行时指定{topic}的动态URI

提示模板

服务器使用 @mcp.prompt() 装饰师。这些模板可用于为特定用例(如论文搜索)生成结构化提示。

更新聊天机器人命令

聊天机器人支持以下特殊命令:

资源命令

  • @folders -列出所有可用的研究主题
  • @topic -获取特定主题的论文信息

提示命令

  • /prompts -列出所有可用的提示模板
  • /prompt <name> <arg1=value1> -使用参数执行特定提示

实现细节

聊天机器人已经更新了处理这些功能的新方法:

  1. connect_to_server:

    • 请求可用资源和提示模板
    • 存储资源URI和提示名称
  2. chat_loop:

    • 处理特殊命令(@folders、@topic、/sthints、/sthint)
    • 将命令路由到适当的处理程序
  3. 新方法:

    • get_resource:处理资源请求
    • execute_prompt:处理提示模板执行
    • list_prompts:显示可用的提示模板

请记住检查mcp_project文件夹中的完整实现,以获取详细的使用示例。

确保与聊天机器人互动。以下是一些查询示例:

  • @文件夹
  • @ai_可解释性
  • /提示
  • /提示generate_search_prompt主题=历史num_papers=2