项目简介
这是一个基于 Model Context Protocol (MCP) 实现的服务器示例项目,旨在通过标准化的方式,允许大型语言模型(LLM)客户端访问和管理 Azure Blob Storage 服务中的数据。项目包含了服务器端实现和配套的客户端示例。
主要功能点
- Azure Blob Storage 集成: 将 Azure Blob Storage 的常用操作(如列出、创建、删除容器,列出、上传、下载、删除 Blob)封装为 MCP 工具。
- MCP 工具暴露: 通过 MCP 标准将 Blob Storage 操作作为工具提供给 LLM 客户端调用。
- 标准化协议: 使用基于 JSON-RPC 的 MCP 协议进行通信,支持 SSE 等传输方式。
- 身份验证: 利用 Azure 托管身份或 Azure CLI 默认凭证进行 Azure 服务的身份验证。
- 能力声明: 服务器向客户端声明其提供的工具和资源能力。
安装步骤
- 克隆仓库: 将 GitHub 仓库克隆到本地。
- 安装 Python: 确保您的系统安装了 Python 3.8 或更高版本。
- 创建并激活虚拟环境: 推荐使用虚拟环境,例如 'python -m venv .venv' 和 'source .venv/bin/activate' (Linux/macOS) 或 '..venv\Scripts\activate' (Windows)。
- 安装依赖: 进入仓库根目录,安装所需的 Python 包。通常可以通过运行 'pip install -r requirements.txt' 来完成(假设仓库包含 requirements.txt 文件)。
- Azure 凭证配置: 配置 Azure 凭证,使得服务器能够访问您的 Azure 存储账户。推荐使用 Azure 托管身份(Managed Identity)或通过 'az login' 命令配置 Azure CLI 默认凭证。
- 配置存储账户: 设置环境变量 'AZURE_STORAGE_ACCOUNT' 为您要访问的 Azure Blob Storage 账户名称。
服务器配置
此 MCP 服务器的名称是 'Contoso-Blob Storage-Services'。它设计通过 HTTP (SSE) 传输协议与客户端通信。
MCP 客户端或运行时通常需要配置如何启动或连接到服务器进程。对于此示例服务器,您通常需要提供以下信息给您的 MCP 客户端配置(具体的配置格式取决于您的 MCP 客户端实现,以下是概念性描述):
- 'server_name': 服务器名称,应配置为 'Contoso-Blob Storage-Services'。
- 'command': 启动服务器进程的命令,例如 'python'。
- 'args': 传递给命令的参数列表。对于此服务器,它通常通过 Uvicorn 启动,参数可能类似于 '["-m", "uvicorn", "mcp-server.server:app", "--host", "0.0.0.0", "--port", "8000"]'。
- '-m uvicorn mcp-server.server:app': 指定使用 uvicorn 模块运行位于 'mcp-server/server.py' 文件中的 'app' 对象(即 MCP FastAPI 应用)。
- '--host 0.0.0.0': 使服务器在所有可用网络接口上监听。
- '--port 8000': 指定服务器监听的端口号。
- 连接 URL: 客户端实际连接服务器时需要的 URL,通常是 'http://<host>:<port>/sse',例如 'http://localhost:8000/sse'。请确保客户端配置的 URL 与服务器启动时使用的 host 和 port 匹配。
请参考您所使用的 MCP 客户端或运行时的文档来配置连接到此服务器。
基本使用方法
- 启动服务器: 在配置好环境和凭证后,进入仓库的服务器目录(例如 'mcp-server-az-storage-svc/mcp-server'),运行服务器启动命令。如果使用 Uvicorn 命令行方式,可能是 'uvicorn server:app --reload' (开发模式) 或 'python -m uvicorn server:app --host 0.0.0.0 --port 8000' (生产模式,取决于您的安装方式和目录)。
- 运行客户端: 进入仓库的客户端目录(例如 'mcp-client-ai-assistant')。配置客户端连接到服务器的 URL(例如通过设置环境变量 'MCP_SERVER_URL=http://localhost:8000/sse')。运行客户端程序,例如 'python client.py'。
- 与客户端交互: 如果客户端具有聊天界面(如示例客户端所示),您可以通过自然语言与 AI 助手交互,请求它执行 Azure Blob Storage 操作,例如“列出名为 'mycontainer' 的容器中的文件”。客户端会识别意图,调用相应的 MCP 工具,并将结果反馈给您。
信息
分类
数据库与文件