使用说明

项目简介

本项目 'mcp-server' 是一个基于 Model Context Protocol (MCP) 的服务器实现,旨在为大型语言模型 (LLM) 客户端提供丰富的外部信息查询能力。它通过标准化的 MCP 协议与客户端通信,允许 LLM 应用安全、可扩展地访问各种上下文信息和工具。

主要功能点

  • 多领域信息查询工具: 提供包括中国法律法规、微软产品许可、天气预报、Azure云服务定价等多种实用信息查询工具。
  • LlamaIndex 驱动: 使用 LlamaIndex 框架进行向量搜索和信息检索,优化信息查询效率和相关性。
  • Azure OpenAI 集成: 利用 Azure OpenAI 的强大语言模型和嵌入能力,提升信息理解和处理的智能化水平。
  • 多种数据存储支持: 支持 MongoDB 和 Azure Cosmos DB 作为数据存储后端,具备良好的可扩展性和灵活性。
  • Server-Sent Events (SSE) 通信: 采用 SSE 协议进行 MCP 服务器与客户端之间的实时通信。
  • 易于扩展的工具框架: 通过简单的装饰器即可轻松添加新的工具功能。

安装步骤

  1. 克隆仓库

    git clone https://github.com/xuhaoruins/mcp-server
    cd mcp-server
  2. 创建并激活虚拟环境

    python -m venv venv
    source venv/bin/activate   # Linux/macOS
    # venv\Scripts\activate  # Windows
  3. 安装依赖

    pip install -r requirements.txt
  4. 配置环境变量 在项目根目录下创建 '.env' 文件,并根据你的实际情况填写以下配置信息:

    MONGODB_CONNECTION_STRING="your_mongodb_connection_string"  # MongoDB 或 Azure Cosmos DB 连接字符串
    AZURE_OPENAI_API_KEY="your_azure_openai_api_key"          # Azure OpenAI API 密钥
    AZURE_OPENAI_ENDPOINT="your_azure_openai_endpoint"        # Azure OpenAI Endpoint
    AZURE_OPENAI_CHAT_MODEL="gpt-4"                           # Azure OpenAI Chat 模型名称 (例如 gpt-4, gpt-35-turbo)
    AZURE_OPENAI_EMBEDDING_MODEL="text-embedding-ada-002"    # Azure OpenAI Embedding 模型名称
    AZURE_OPENAI_TEMPERATURE="0.1"                           # Azure OpenAI 温度参数

    请确保 MongoDB 连接字符串格式正确,Azure OpenAI API 密钥和 Endpoint 填写正确。

  5. (可选) Docker 部署 如果你希望使用 Docker 部署,可以执行以下命令:

    docker build -t mcp-server .
    docker run -d -p 8080:8080 --env-file .env mcp-server

服务器配置

MCP 客户端需要配置以下 JSON 信息以连接到此 MCP 服务器:

{
  "serverName": "mcp-server",
  "command": "python",
  "args": [
    "mcp-server.py",
    "--host",
    "0.0.0.0",
    "--port",
    "8080"
  ]
}

配置参数说明:

  • 'serverName': 服务器名称,可以自定义,用于在 MCP 客户端中标识该服务器。例如 "mcp-server"。
  • 'command': 启动服务器的命令,这里使用 'python' 解释器。
  • 'args': 启动服务器命令的参数列表。
    • '"mcp-server.py"': 指定运行 'mcp-server.py' 文件。
    • '"--host"': 指定服务器绑定的主机地址,'0.0.0.0' 表示监听所有网络接口。
    • '"0.0.0.0"': '--host' 参数的值,即监听地址。
    • '"--port"': 指定服务器监听的端口号。
    • '"8080"': '--port' 参数的值,即端口号为 8080。

注意: MCP 客户端需要能够执行 'python' 命令,并访问到 'mcp-server.py' 文件所在的目录。如果使用 Docker 部署,MCP 客户端需要配置访问 Docker 容器网络的方式。

基本使用方法

  1. 启动服务器 在项目根目录下,使用以下命令启动 MCP 服务器:

    python mcp-server.py --host 0.0.0.0 --port 8080

    服务器成功启动后,会监听在 'http://localhost:8080' (或你指定的 host 和 port)。

  2. MCP 客户端连接 配置你的 MCP 客户端,使其连接到运行中的 MCP 服务器。客户端会通过 SSE 或 POST 请求与服务器进行通信,调用服务器提供的工具。

  3. 工具调用 服务器提供了以下工具,客户端可以通过 MCP 协议调用这些工具来获取信息:

    许可信息工具

    • 'query_visual_studio_license': 查询 Visual Studio 2022 许可信息
    • 'query_sql_server_license': 查询 SQL Server 2022 许可信息
    • 'query_windows_server_license': 查询 Windows Server 2022 许可信息
    • 'query_m365_license': 查询 Microsoft 365 企业版许可信息
    • 'query_dynamics365_license': 查询 Dynamics 365 许可信息

    隐私法规工具

    • 'query_gdpr': 查询 GDPR (通用数据保护条例) 信息
    • 'query_china_pipl': 查询中国个人信息保护法 (PIPL) 信息

    法律信息工具

    • 'get_article_by_code': 根据条文编号获取中国刑法条文信息
    • 'search_by_content': 根据内容搜索中国刑法条文
    • 'get_by_article_name': 根据罪名/案由获取法律信息
    • 'get_specific_article': 获取中国刑法特定条文的特定款项
    • 'get_all_law_contents': 获取中国刑法所有条文内容

    天气和实用工具

    • 'get_alerts': 获取美国特定州的天气警报
    • 'get_forecast': 获取特定地点的天气预报
    • 'get_azure_price': 使用 OData 过滤器查询 Azure 云服务定价
    • 'count_chinese_characters': 统计文本中中文字符的数量

    具体工具的使用方法和参数,请参考 'mcp-server.py' 文件中每个工具函数的文档字符串 (docstring)。

开发新工具

要添加新的工具,只需在 'mcp-server.py' 文件中定义一个新的异步函数,并使用 '@mcp.tool()' 装饰器进行标记。详细步骤请参考 README.md 的 "Development" 部分。

信息

分类

网页与API