返回市场
GCS-MCP服务器

GCS-MCP服务器

作者:sanketbisne2 星标更新:2025-10-28

项目介绍

MyEnhancedGCSMCPServer

一个fastmcp服务器,提供了全面的工具集来管理Google云存储(GCS)。此服务器允许您通过简单的HTTP API与GCS桶和对象进行交互。

功能

该服务器提供了一系列工具来管理GCS资源:

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

预备条件

  • Python 3.8+
  • 安装了uv (pip install uv)。
  • 启用了Cloud Storage API的Google Cloud Platform (GCP)项目。
  • 在本地机器上安装并配置了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云资源,您需要提供应用程序默认凭据。对于本地开发来说,最简单的方法是使用gcloud CLI:

gcloud auth application-default login

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

运行服务器

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


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

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

================================================================================
MyEnhancedGCSMCPServer 正在 http://127.0.0.1:8080/mcp 上运行
以下工具可用:
- greet(name: str) -> str
- list_gcs_buckets() -> list[str]
- ... (以及其他所有工具)
================================================================================

所有工具端点都在/mcp/路径下。您可以使用任何HTTP客户端(如curl)与它们互动。 您可以使用随fastmcp一起捆绑的mcp-inspector命令行工具与服务器的工具互动。这比使用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_name: str
upload_blob将文件上传到桶。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从桶删除一个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将对象复制到另一个桶。source_bucket_name: str, blob_name: str, destination_bucket_name: str, destination_blob_name: str
set_bucket_cors设置桶的CORS配置。bucket_name: str, cors_rules: list[dict]

示例:

from google.api_core import exceptions

@mcp.tool
def delete_bucket(bucket_name: str) -> str:
    """删除一个GCS桶"""
    try:
        bucket = storage_client.bucket(bucket_name)
        bucket.delete(force=True)
        return f"桶 '{bucket_name}' 删除成功。"
    except exceptions.NotFound:
        return f"错误:未找到桶 '{bucket_name}'。"
    except exceptions.Forbidden as e:
        return f"错误:对桶 '{bucket_name}' 的权限被拒绝。详情:{e}"

配置

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

贡献

欢迎贡献!请随时提交修复错误、添加新功能或改进文档的拉取请求。