项目简介

'svc-infra' 是一个为构建和部署生产级应用而设计的 Python 基础设施工具包。它封装了 'FastAPI' 应用的基础结构、'SQLAlchemy' 异步数据库集成、Alembic 数据库迁移以及 'FastAPI-users' 认证功能。

该项目特别之处在于,它将其中一些核心功能封装为 MCP 服务器,允许像 GitHub Copilot 这样的 LLM 客户端以标准化的方式访问和调用这些基础设施服务,从而实现代码生成、自动化配置和管理。

主要功能点

该项目提供了两个主要的 MCP 服务器实例,分别专注于数据库管理和认证功能:

  1. 数据库管理 MCP 服务器 (db-management-mcp)

    • 数据库初始化与迁移: 协助初始化 Alembic 迁移环境、创建新的数据库版本、执行数据库升级或降级操作。
    • 版本控制查询: 查看数据库的当前版本、历史迁移记录、标记特定版本。
    • 高级迁移操作: 支持合并多个迁移头。
    • 一键设置与迁移: 自动化地设置数据库并应用所有待处理的迁移。
    • 实体模型与 Schema 脚手架: 自动生成 SQLAlchemy 实体模型和 Pydantic Schema 的基础代码,加速开发流程。
  2. 认证管理 MCP 服务器 (auth-infra-mcp)

    • 认证模型与 Schema 脚手架: 自动生成用户认证相关的 SQLAlchemy 模型和 Pydantic Schema 基础代码,方便快速搭建用户认证系统。

安装步骤

要使用 'svc-infra',你需要安装 Python、'uv' (或者 'pip') 和 Node.js。

  1. 安装 Python 包: 你可以使用 'pip' 或 'poetry' 安装 'svc-infra' 库。

    pip install svc-infra
    # 或
    poetry add svc-infra
  2. 安装 'uv' (可选,推荐用于 macOS): 'uv' 是一个快速的 Python 包安装器和环境管理器,Node.js 垫片会使用它来启动 Python MCP 服务器。

    brew install uv # 适用于 macOS
    # 对于其他系统,请参考 uv 官方文档
  3. 安装 Node.js (推荐 18+ 版本): MCP 服务器的启动脚本是 Node.js 垫片,因此需要安装 Node.js。

    # 参考 Node.js 官方网站获取安装方式

服务器配置

MCP 服务器旨在被 MCP 客户端使用。以下是如何在 MCP 客户端(如 GitHub Copilot)配置中添加这些服务器的示例。请根据您的 LLM 客户端的配置方式进行调整。

这是一个典型的 JSON 格式 MCP 客户端配置文件的内容示例(例如 '~/.config/github-copilot/intellij/mcp.json'):

{
  "servers": {
    "auth-infra-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "--package=github:Aliikhatami94/svc-infra",
        "auth-infra-mcp"
      ]
    },
    "db-management-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "--package=github:Aliikhatami94/svc-infra",
        "db-management-mcp"
      ]
    }
  }
}

配置参数说明:

  • '"servers"': 一个 JSON 对象,包含您要配置的所有 MCP 服务器。
  • '"auth-infra-mcp"' / '"db-management-mcp"': 这是 MCP 服务器的名称,LLM 客户端将使用此名称来识别和连接相应的服务器。
  • '"command": "npx"': 指定用于启动 MCP 服务器的命令。'npx' 是 Node.js 包执行器。
  • '"args"': 一个字符串数组,包含传递给 'command' 的参数。
    • '"-y"': 自动确认 'npx' 的安装提示。
    • '"--package=github:Aliikhatami94/svc-infra"': 指定 'npx' 从哪个 GitHub 仓库拉取并运行包。这里指向 'svc-infra' 仓库。
    • '"auth-infra-mcp"' / '"db-management-mcp"': 这是要运行的 MCP 服务器的实际可执行脚本名称,它们由 'svc-infra' 包提供。

自定义仓库和分支 (可选):

您可以通过设置环境变量来覆盖默认的 'svc-infra' 仓库和分支:

  • 'SVC_INFRA_REPO': 指定 Git 仓库的 URL(例如,您的 fork)。
  • 'SVC_INFRA_REF': 指定分支、标签或提交哈希(例如,'dev' 或 'v1.0.0')。
  • 'UVX_REFRESH': 设置此变量可以强制 'uvx' 刷新其环境,以确保使用最新代码。

基本使用方法

一旦 MCP 服务器在 LLM 客户端的配置文件中注册,客户端即可通过其智能代理能力,以自然语言或其他交互方式调用这些服务器暴露的功能。

例如:

  • 您可以在 LLM 客户端中请求:“为我的数据库创建一个新的迁移文件,并添加一个关于用户表的修改说明。”LLM 客户端会调用 'db-management-mcp' 服务器的 'revision' 工具。
  • 您可以请求:“为我的项目生成基础认证模型和 Schema。”LLM 客户端会调用 'auth-infra-mcp' 服务器的 'scaffold_auth_core' 工具。

这些操作将由 LLM 客户端自动翻译成 JSON-RPC 请求,发送给对应的 'svc-infra' MCP 服务器执行,服务器会返回执行结果。

信息

分类

AI与计算