使用说明

项目简介

本项目是一个Model Context Protocol (MCP) 服务器的示例实现,旨在帮助开发者理解和搭建MCP服务器。它展示了如何使用 Python 和 'mcp' 库创建能够向大型语言模型 (LLM) 提供上下文信息的后端服务。项目包含基础的加法工具和动态问候资源示例,以及一个更实用的文档搜索工具,用于检索 Langchain、OpenAI 和 LlamaIndex 等库的文档。

主要功能点

  • 资源管理: 演示了如何定义和暴露可供 LLM 客户端访问的资源,例如动态问候语。
  • 工具注册与执行: 展示了如何注册和实现 LLM 可以调用的工具,例如加法计算和文档搜索。
  • 快速上手示例: 提供了简单易懂的代码示例,帮助开发者快速搭建和运行自己的 MCP 服务器。
  • 文档搜索工具: 集成了一个实用的文档搜索工具,可以根据关键词和指定的库(Langchain, OpenAI, LlamaIndex)搜索相关文档,为 LLM 提供更丰富的上下文信息。
  • 集成 Claude Desktop: 提供了详细的配置步骤,指导用户如何将 MCP 服务器集成到 Claude Desktop 等 MCP 客户端。

安装步骤

  1. 安装 Python 3.7+: 确保您的系统已安装 Python 3.7 或更高版本。建议使用 Python 3.8+。
  2. 安装 uv 工具: 打开终端或 PowerShell,执行命令安装 'uv':
    powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
  3. 初始化 uv 项目: 在您希望创建项目的目录下,使用 'uv init <项目名称>' 初始化一个新的 uv 项目,例如 'uv init mcp-server-demo'。
  4. 创建并激活虚拟环境: 进入项目目录,运行 'uv venv' 创建虚拟环境,然后运行 'uv activate' 激活虚拟环境。
  5. 安装依赖包: 运行以下命令安装 MCP 服务器所需的依赖包:
    uv add "mcp[cli]" httpx
    pip install mcp

服务器配置

要将此 MCP 服务器连接到 MCP 客户端(例如 Claude Desktop),您需要在客户端的配置中添加服务器信息。以下是 Claude Desktop 的配置示例,您需要根据实际情况修改 'command' 和 'args' 中的路径:

{
  "mcpServers": {
    "mcp-server-example": {  // 服务器名称,可以自定义
      "command": "/path/to/uv",  // uv 可执行文件的路径,例如:C:/Users/YourUser/.local/bin/uv (Windows)或 /home/youruser/.local/bin/uv (Linux/macOS)
      "args": [
        "--directory",
        "/path/to/your/project/directory",  // 项目目录的路径,例如:C:/Projects/mcp-server-demo
        "run",
        "server.py"  // 运行服务器的 Python 脚本,可以是 server.py, docs.py 或 main.py,根据您要运行的示例选择
      ]
    }
  }
}

请注意:

  • 将 '/path/to/uv' 替换为 'uv' 工具的实际安装路径。
  • 将 '/path/to/your/project/directory' 替换为您克隆或创建的 MCP 服务器项目目录的实际路径。
  • 'server.py', 'docs.py' 或 'main.py' 是仓库中提供的不同服务器示例脚本,您可以根据需要选择运行哪个。'server.py' 是基础示例,'docs.py' 和 'main.py' 是文档搜索工具示例 (内容相同)。

基本使用方法

  1. 启动 MCP 服务器: 根据 Claude Desktop 配置或直接在终端中使用 'python server.py' (或 'python docs.py' / 'python main.py') 启动服务器。
  2. 在 MCP 客户端中使用: 在 Claude Desktop 或其他 MCP 客户端中,配置并连接到您的 MCP 服务器。客户端会检测到服务器提供的资源和工具。
  3. 调用工具和访问资源: 在客户端中,您可以像调用函数一样调用服务器提供的工具,并访问服务器暴露的资源,从而扩展 LLM 的能力。例如,在文档搜索工具示例中,您可以让 LLM 调用 'get_docs' 工具来检索指定库的文档内容。

信息

分类

开发者工具