文档搜索服务

一个基于AI的文档搜索服务,能够智能检索并提取Python流行库的文档内容。

  • by Aadityayadav333
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Aadityayadav333/Building-Local-MCP-Server

使用说明

📚 MCP文档服务器-基于AI的文档搜索

一个模型上下文协议(MCP)服务器,使用人工智能从流行的Python库中智能搜索和检索文档。

🌟 特性

  • 🔍 智能文档搜索 -来自LangChain、LlamaIndex、OpenAI和UV的查询文档
  • 🤖 AI驱动的响应 -使用Groq LLM从文档中提供人类可读的答案
  • ⚡ 快速异步 -内置async/await以获得最佳性能
  • 🛠️ MCP协议 -标准模型上下文协议实现
  • 🌐 网络爬取 -使用Trafiatura进行智能HTML到文本转换
  • 🔗 多个API -集成搜索的Serper API和LLM响应的Groq

📸 截图

🚀 快速开始

先决条件

安装

  1. 克隆仓库

    git clone https://github.com/Aadityayadav333/Building-Local-MCP-Server
    cd mcp-docs-server
    
  2. 设置环境

    # Using UV (recommended)
    uv venv
    source .venv/bin/activate  # On Windows: .venv\Scripts\activate
    uv pip install -e .
    
    # Or using pip
    pip install -r requirements.txt
    
  3. 配置环境变量

    创建一个 .env 项目根目录中的文件:

    SERPER_API_KEY=your_serper_api_key_here
    GROQ_API_KEY=your_groq_api_key_here
    

用法

运行MCP服务器

uv run mcp_server.py

运行客户端(演示)

python client.py

客户演示如何:

  • 连接到MCP服务器
  • 搜索文档
  • 获取AI生成的响应

示例代码

import asyncio
from mcp.client.session import ClientSession
from mcp.client.stdio import stdio_client

async def query_docs():
    async with stdio_client(server_params) as (read_stream, write_stream):
        async with ClientSession(read_stream, write_stream) as session:
            await session.initialize()
            
            # Search LangChain docs for ChromaDB integration
            result = await session.call_tool(
                "get_docs",
                arguments={
                    "query": "chromadb integration",
                    "library": "langchain"
                }
            )
            print(result.content)

🛠️ 建筑

组件

  1. MCP服务器 (mcp_server.py)

    • 实现FastMCP服务器
    • 提供 get_docs 文档搜索工具
    • 通过Serper API处理网络搜索
    • 获取和清理HTML内容
  2. 客户端 (client.py)

    • 演示MCP客户端的使用方法
    • 与Groq LLM集成以生成响应
    • 显示工具调用模式
  3. 公用事业 (utils.py)

    • 使用Trafilatura进行HTML到文本的转换
    • LLM响应生成助手
    • API集成

支持的文档来源

库 文档URL
郎链 https://python.langchain.com/docs
LlamaIdexhttps://docs.llamaindex.ai/en/stable
OpenAI https://platform.openai.com/docs
紫外线 https://docs.astral.sh/uv

📖 API 参考

get_docs(query: str, library: str)

在文档中搜索指定的库。

参数:

  • query (str):搜索查询
  • library (str):库名称(langchain, llama-index, openai, uv)

退货:

  • 带有源URL的文档内容

例子:

result = await session.call_tool(
    "get_docs",
    arguments={
        "query": "vector store setup",
        "library": "langchain"
    }
)

🔧 配置

环境变量

变量 描述 必填
SERPER_API_KEY Serper搜索服务的API密钥 是
GROQ_API_KEY Groq LLM的API密钥 是

定制

要添加更多文档源,请编辑 docs_urls 在 mcp_server.py:

docs_urls = {
    "your-library": "https://docs.your-library.com",
}

📦 依赖项

  • fastmcp>=2.14.1 -MCP服务器框架
  • httpx>=0.28.1 -异步HTTP客户端
  • trafilatura>=2.0.0 -HTML到文本提取
  • groq>=0.37.1 -Groq API客户
  • python-dotenv>=1.2.1 -环境变量管理

🤝 贡献

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

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

📝 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

🙏 致谢

  • FastMCP -优秀的MCP服务器框架
  • 瑟珀 -强大的搜索API
  • Groq -快速LLM推理
  • 编织 -干净的web内容提取

📬 联系

项目链接:(https://github.com/Aadityayadav333/Building-Local-MCP-Server)


🙏 学分

该项目的灵感来自并使用以下代码:

  • [哈桑的MCP教程] - @艾薇哈桑 -基本MCP服务器实现
  • 原始教程:[https://youtu.be/U0boR8cqYqQ?si=E-VFgq1-U-E8rEF]

特别感谢Hassan提供的优秀MCP服务器教程,该教程为本项目奠定了基础。

⭐ 如果你觉得这个项目有用,请考虑给它一颗星!