GCS管理服务器

一个提供Google Cloud Storage (GCS) 资源管理的HTTP API服务器,支持存储桶和对象的管理、元数据检索和安全访问。

  • by mycoolh
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Utopiality7/gcs-mcp-server

使用说明

MyEnhancedGCSMP服务器

A. fastmcp 该服务器提供了一套全面的工具来管理谷歌云存储(GCS)。该服务器允许您通过简单的HTTP API与GCS桶和对象进行交互。

特性

该服务器提供了一系列管理地面军事系统资源的工具:

  • 水桶管理:创建、删除、列出和获取GCS存储桶的元数据。
  • 对象管理:上传、下载、删除、列出、重命名和复制对象(blob)。
  • 元数据:检索bucket和对象的详细元数据。
  • 安全:为对象访问生成临时、安全的签名URL。

先决条件

  • Python 3.8+
  • 紫外线 已安装(pip install uv).
  • 谷歌云平台(GCP)项目 云存储API 启用。
  • 在您的本地计算机上安装并配置了Google Cloud SDK。

设置和安装

  1. 克隆存储库

    git clone <your-repository-url>
    cd gcs-mcp-server
    
  2. 创建虚拟环境并安装依赖项 uv 可以一次性处理这两个步骤。它将在 .venv 目录并安装来自的所有软件包 requirements.txt.

    uv venv
    uv pip install -r requirements.txt
    

认证

要允许服务器访问您的Google Cloud资源,您需要提供应用程序默认凭据。对于当地发展来说,最简单的方法就是 gcloud CLI:

gcloud auth application-default login

此命令将打开一个浏览器窗口,供您登录并授予必要的权限。

运行服务器

在开发过程中运行服务器的最佳方式是使用 fastmcp run 命令。它启动您的服务器并启动 MCP检查员,一个用于交互式测试工具的web UI。


fastmcp run main.py --transport="http" --port="8080"
fastmcp dev main.py --ui-port="9080" --server-port="5080"

您应该看到输出,确认服务器正在运行并列出可用工具:

================================================================================
MyEnhancedGCSMCPServer is running on http://127.0.0.1:8080/mcp
The following tools are available:
- greet(name: str) -> str
- list_gcs_buckets() -> list[str]
- ... (and all other tools)
================================================================================

所有工具端点都可以在 /mcp/ 路径。您可以使用任何HTTP客户端与它们交互,例如 curl. 您可以使用 mcp-inspector 命令行实用程序,与 fastmcp。它提供了一种比使用更方便的调用工具的方法 curl.

这 uv run 命令确保 mcp-inspector 在项目的虚拟环境中执行。

API参考:可用工具

下面是可用工具及其参数的完整列表。

工具 说明 参数
greet 致以友好的问候。 name: str
list_gcs_buckets 列出所有GCS存储桶。 (无)
create_bucket 创建新的GCS存储桶。 bucket_name: str, location: str = "US"
delete_bucket 删除GCS存储桶。 bucket_name: str
list_objects 列出bucket中的所有对象。 bucket_name: str
upload_blob 将文件上传到bucket。 bucket_name: str, source_file_name: str, destination_blob_name: str
download_blob 从桶中下载一个blob。 bucket_name: str, blob_name: str, destination_file_name: str
delete_blob 从bucket中删除blob。 bucket_name: str, blob_name: str
get_bucket_metadata 检索存储桶的元数据。 bucket_name: str
get_blob_metadata 检索对象的元数据。 bucket_name: str, blob_name: str
generate_signed_url 生成临时签名URL bucket_name: str, blob_name: str, expiration_minutes: int = 15
rename_blob 重命名/移动对象。 bucket_name: str, blob_name: str, new_name: str
copy_blob 将一个对象复制到另一个bucket。 source_bucket_name: str, blob_name: str, destination_bucket_name: str, destination_blob_name: str
set_bucket_cors 设置bucket的CORS配置。 bucket_name: str, cors_rules: list[dict]

例子:

from google.api_core import exceptions

@mcp.tool
def delete_bucket(bucket_name: str) -> str:
    """Deletes a GCS bucket"""
    try:
        bucket = storage_client.bucket(bucket_name)
        bucket.delete(force=True)
        return f"Bucket '{bucket_name}' deleted successfully."
    except exceptions.NotFound:
        return f"Error: Bucket '{bucket_name}' not found."
    except exceptions.Forbidden as e:
        return f"Error: Permission denied for bucket '{bucket_name}'. Details: {e}"

配置

硬编码默认位置等值("US")不灵活。这些可以移动到环境变量或配置文件中,以便更好地管理。

贡献

欢迎投稿!请随时提交对错误修复、新功能或文档改进的拉取请求。