文档查询工具

MCP-Server-101是一个基于模型上下文协议(MCP)的文档查询工具,支持从多种文档源中提取和查询信息,适用于开发者在langchain、openai和llama-index等库中的开发工作。

  • by shiv-rna
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 shiv-rna/mcp-server-101

使用说明

🌐 MCP-Server-101

🌟 项目概述

MCP-Server-101是模型上下文协议(MCP)的稳健实现,旨在促进与各种文档源的无缝集成和交互。它提供了从文档中查询和提取相关信息的工具,使其成为使用以下库的开发人员的重要资源 langchain, openai,以及 llama-index.

📔 模型上下文协议(MCP)

模型上下文协议(MCP)是一种开放的标准化协议,将AI模型与外部数据源和工具连接起来,就像AI应用程序的“USB-C端口”一样。MCP使用客户端-服务器架构:主机(AI应用程序)通过MCP客户端与轻量级MCP服务器通信,轻量级MCP服务器通过与本地文件、数据库、API或其他服务接口来公开特定功能。

关键组件包括:

  • 主机:需要访问外部数据或工具的AI应用程序。
  • 客户:与MCP服务器保持一对一连接。
  • MCP服务器:轻量级服务器通过MCP公开功能。
  • 本地数据源:服务器访问的文件或数据库。
  • 远程服务:服务器访问的外部API或服务。

MCP服务器可以提供三种主要功能:

  • 资源:可以由客户端读取的类文件数据(如API响应或文件内容)
  • 工具:LLM可以调用的函数(经用户批准)
  • 提示:帮助用户完成特定任务的预先编写的模板

例如,像Cursor这样的主机指示其MCP客户端更新Google Sheet并发送Slack消息;客户端然后连接到Google Sheets和Slack的单独MCP服务器,这些服务器调用相应的API并通过客户端将结果返回给主机。

🏗️ 关键功能

1.环境配置

该项目使用 dotenv 加载环境变量,确保安全灵活的配置管理。

2.网络搜索

这 search_web 函数使用Serper.dev API执行web搜索。它为给定的查询检索最多两个结果,并优雅地处理超时。

3.网络内容获取

这 fetch_url 函数从网页获取并解析可见文本内容。使用 httpx 用于异步HTTP请求和 BeautifulSoup 用于HTML解析。

4.文档搜索工具

这 get_docs MCP工具允许用户在支持的库中搜索特定查询的文档(langchain, openai, llama-index).它执行受限于所选库的文档域的网络搜索,并从顶部结果中提取可见的文本内容。

5.服务器执行

MCP服务器使用 mcp.run 方法与 stdio 运输,使其适合与其他工具和系统集成。

💻 入门指南

先决条件

  • Python 3.12或更高版本
  • pip (Python包管理器)
  • 访问Serper.dev API(需要API密钥)

安装uv包管理器

在MacOS/Linux上:

curl -LsSf https://astral.sh/uv/install.sh | sh

确保之后重新启动终端,以确保 uv 命令被接收。

项目设置

  1. 创建并初始化项目:
# Create a new directory for our project
uv init mcp-server
cd mcp-server

# Create virtual environment and activate it
uv venv
source .venv/bin/activate  # On Windows use: .venv\Scripts\activate

# Install dependencies
uv add "mcp[cli]" httpx
  1. 创建服务器实现文件:
touch main.py

运行服务器

  1. 启动MCP服务器:
uv run main.py
  1. 服务器将启动并准备接受连接

连接到克劳德桌面

  1. 从官方网站安装Claude Desktop
  2. 配置Claude Desktop以使用您的MCP服务器:

编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
    "mcpServers": {
        "mcp-server": {
            "command": "uv",  # It's better to use the absolute path to the uv command
            "args": [
                "--directory",
                "/ABSOLUTE/PATH/TO/YOUR/mcp-server",
                "run",
                "main.py"
            ]
        }
    }
}
  1. 重新启动克劳德桌面

🧑🏼‍💻 功能和架构

1.模块化设计

该项目的结构确保了模块化和可维护性。关键组件包括:

  • main.py:使用网络搜索和文档检索工具实现MCP服务器。
  • pyproject.toml:定义项目元数据和依赖关系,确保兼容性和易于设置。
  • uv.lock:锁定一致环境的依赖版本。

2.异步操作

该服务器利用异步编程实现高效的网络搜索和内容获取,使用以下库 httpx 和 BeautifulSoup.

3.依赖关系管理

依赖关系是通过以下方式进行管理的 pyproject.toml 并锁定 uv.lock关键依赖关系包括:

  • beautifulsoup4:用于HTML解析。
  • dotenv:用于环境变量管理。
  • httpx:用于异步HTTP请求。
  • mcp[cli]:用于MCP服务器实现。

4.文档搜索工具

这 get_docs 该工具允许用户查询特定库的文档(langchain, openai, llama-index).它集成了网络搜索和内容提取,以提供相关结果。

5.可扩展性

该项目旨在实现可扩展性,允许开发人员以最小的努力添加新工具或集成其他库。

6.环境配置

环境变量通过以下方式进行管理 .env 文件,确保安全灵活的配置。

7.标准合规性

该项目遵循现代Python标准,要求Python 3.12或更高版本,并使用 pyproject.toml 用于配置。

8.依赖锁定

这 uv.lock 该文件确保所有依赖关系都固定到特定版本,从而防止跨环境的兼容性问题。

9.未来的增强功能

  • 在中添加对其他库的支持 get_docs 工具。
  • 对频繁访问的文档实施缓存。
  • 增强对web请求的错误处理。

🤝 贡献

欢迎投稿!请随时提交拉取请求。

  1. 分叉存储库
  2. 创建功能分支(git checkout -b feature/AmazingFeature)
  3. 提交您的更改(git commit -m 'Add some AmazingFeature')
  4. 推到分支(git push origin feature/AmazingFeature)
  5. 打开拉取请求

📜 许可证

根据MIT许可证分发。看 LICENSE 文件以获取更多信息。

👋 与我联系

欢迎随时寻求合作、问题或潜在机会!我总是很乐意讨论

  • 🧠 智能AI代理
  • 📊 风险分析与金融技术
  • 🤖 机器学习解决方案
  • 🚀 人工智能驱动的决策支持系统