一个fastmcp服务器,提供了全面的工具集来管理Google云存储(GCS)。此服务器允许您通过简单的HTTP API与GCS桶和对象进行交互。
该服务器提供了一系列工具来管理GCS资源:
pip install uv)。克隆仓库
git clone <your-repository-url>
cd gcs-mcp-server
创建虚拟环境并安装依赖
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在您的项目的虚拟环境中执行。
以下是所有可用工具及其参数的完整列表。
| 工具 | 描述 | 参数 |
|---|---|---|
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")是不灵活的。这些值可以移到环境变量或配置文件中以便更好地管理。
欢迎贡献!请随时提交修复错误、添加新功能或改进文档的拉取请求。