Fivetran审计管理工具

一款专门用于审计、检查和管理Fivetran账户及Fivetran Activations(Census)反向ELT管道的MCP服务器和Gemini CLI扩展工具。

  • by edgardevo
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 edgardevo/mcp-fivetran

使用说明

dgc fivetran

一个专门的MCP服务器(和Gemini CLI扩展),用于审计、检查和管理Fivetran帐户和Fivetran Activations(Census)反向ELT管道。

存储库: github/edgardevo/mcp-fivetran ·问题: 问题 ·许可证: 麻省理工学院

主要特点

  • 审计重点:大多数工具都是只读的 GET 审计和检查操作-Fivetran REST API中的每个读取端点都包含在内。破坏性和帐户变异操作被门控(见下文)或故意省略。
  • 写入操作:一组门控写入工具可用于操作任务,包括创建/更新/删除连接器、目标和组、管理组成员资格、生成连接卡设置链接、触发同步/重新同步、运行设置测试、编辑架构/表/列配置以及重新加载/删除/重新同步架构项。破坏性删除需要明确的 confirm=true。所有其他Fivetran工具都是只读的。
  • 支持Fivetran激活(人口普查):用于审核反向ELT同步、源和目标的全套工具。
  • 安全第一:
    • 递归重动作:清除敏感密钥(密码、机密、令牌、API密钥)的所有输出。Redaction使用精确的键名和后缀匹配来避免破坏合法字段,如 api_key_id 或 auth_type.光秃秃的 key 仅当字段嵌套在带有凭据的容器中时,才会对其进行编辑(config, auth, secrets, credentials),所以合法的顶级 key 田地被保留了下来。
    • 速率限制安全:429个响应被重试 Retry-After 荣幸,最多重试3次,以防止无限递归。
  • MCP提示:可重复使用的工作流提示(fivetran_health_report, fivetran_security_audit, fivetran_sync_triage, fivetran_lineage_overview)通过MCP提示功能公开,因此任何MCP客户端(不仅仅是Gemini CLI)都可以运行审计手册。
  • 数据导出:内置工具,可将数据导出为CSV/JSON进行离线分析。
  • 分页:聚合/审计工具和导出工具自动遵循基于光标的分页(通过共享 fetchAllPages 助手),这样他们就不会低估大额账户。单个生成的GET工具返回一个页面——use get_next_page 或者使用导出工具获取更多信息。

设置

先决条件

  • Node.js 20+
  • npm

安装

该包暴露了一个 dgc-fivetran 二进制文件,因此MCP客户端可以直接启动它,而无需手动构建。直接从GitHub仓库运行它 npx (the prepare 脚本基于安装构建):

npx github:edgardevo/mcp-fivetran

或克隆用于本地开发:

git clone https://github.com/edgardevo/mcp-fivetran.git
cd mcp-fivetran
npm install   # runs the build via the prepare hook

MCP客户端配置示例(例如克劳德桌面/Claude代码),通过以下方式传递凭据 env:

{
  "mcpServers": {
    "fivetran": {
      "command": "npx",
      "args": ["-y", "github:edgardevo/mcp-fivetran"],
      "env": {
        "FIVETRAN_API_KEY": "your_key",
        "FIVETRAN_API_SECRET": "your_secret",
        "CENSUS_API_KEY": "your_census_key"
      }
    }
  }
}

配置

在中设置API凭据 .env 文件(gitignored):

# Standard Fivetran ELT
FIVETRAN_API_KEY=your_key
FIVETRAN_API_SECRET=your_secret

# Fivetran Activations (Census)
CENSUS_API_KEY=your_census_key

# Opt in to gated write tools (connector create/update, sync/resync, setup tests, schema/table/column config edits).
# Defaults to read-only mode when unset. Truthy values: true, 1, yes (case-insensitive).
FIVETRAN_ALLOW_WRITES=

您只需要为要使用的曲面设置关键帧——缺少关键帧会在启动时禁用相应的工具组并发出警告。

只读模式(默认)

服务器以只读模式运行,除非 FIVETRAN_ALLOW_WRITES 被设置为真实值(true, 1,或 yes不区分大小写只读时,所有写入工具(连接器创建/更新/删除、同步/重新同步、设置测试、目标CRUD和模式/表/列配置编辑)都没有注册,因此模型无法调用。(参见 DOCS.md 查看完整列表;写工具用它们的HTTP动词标记。)所有其他工具,包括 generated_tools.ts 人口普查激活工具仍然可用。

所需的API权限

API 在何处创建令牌 权限/角色
Fivetran 仪表板→ 设置→ API配置 → 生成API密钥 帐户范围的密钥。 帐户管理员 全面审计+编写工具的角色;只读角色适用于审核子集。看 Fivetran REST API授权.
人口普查(激活) 工作区→ 设置→ API令牌 (工作区API令牌) 或您的用户资料 (个人访问令牌) 同步/源/目标的工作区令牌;PAT还可以列出工作区和用户。看 人口普查API授权.

将这些凭据视为生产机密。它们仅通过TLS发送到上游API,而不会发送到LLM,并且任何响应在返回到模型之前都会通过编校层。

用法

Gemini CLI

gemini extensions link .

这 gemini-extension.json 清单包含MCP服务器以及以下列出的捆绑技能、规则、参考和斜线命令 捆绑式扩展资产.

克劳德桌面

添加 claude_desktop_config.json (macOS路径: ~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "fivetran": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-fivetran/dist/index.js"],
      "env": {
        "FIVETRAN_API_KEY": "...",
        "FIVETRAN_API_SECRET": "...",
        "CENSUS_API_KEY": "..."
      }
    }
  }
}

编辑后重新启动Claude Desktop。

克劳德代码

claude mcp add fivetran -- node /absolute/path/to/mcp-fivetran/dist/index.js

然后在shell中或 ~/.claude/settings.json 在...之下 env.

光标/继续/其他MCP客户端

任何兼容MCP的客户端都可以通过stdio启动服务器。配置客户端以运行:

command: node
args:    ["/absolute/path/to/mcp-fivetran/dist/index.js"]
env:     FIVETRAN_API_KEY, FIVETRAN_API_SECRET, CENSUS_API_KEY

捆绑的技能、规则和斜线命令是Gemini CLI特有的,被其他客户端忽略了,MCP工具本身在任何地方都是可用的。

示例提示

安装后,尝试询问型号:

  • “显示我的Fivetran帐户的健康摘要。”
  • “现在哪些连接器坏了,最近的错误是什么?”
  • “将每个连接器映射到其目的地,并向我显示沿袭。”
  • “找到负责同步的连接器 orders 桌子。"
  • 导出涵盖用户、团队、角色和连接器的审核报告
  • “列出所有人口普查同步,并显示最近的同步运行情况 12345."
  • “在连接器上强制同步 abc_def 并在完成时报告。"

工具目录

看 DOCS.md 用于自动生成每个工具的参考、描述和参数(使用重新生成 npm run docs).

工具分为三组注册(参见 src/):

定制审计和运营(src/custom_tools.ts)

阅读/审核: test_connection, get_account_health_summary, get_lineage_report, analyze_connector_issues, find_connector_by_table, export_audit_report, export_fivetran_data, get_next_page, list_connectors, get_connector_details, get_connector_schema, get_connector_columns.

书写(门后 FIVETRAN_ALLOW_WRITES): create_connector, update_connector, delete_connector, sync_connector, resync_connector, run_connection_tests, create_destination, update_destination, delete_destination, run_destination_tests, create_group, update_group, delete_group, add_user_to_group, remove_user_from_group, create_connect_card, update_schema_config, update_database_schema_config, update_table_config, update_column_config, reload_connector_schema, drop_blocked_columns, resync_connector_tables, drop_blocked_column.

看 DOCS.md 用于始终保持最新、自动生成的参考。

Fivetran REST API(src/generated_tools.ts)

生成了约63个只读工具 openapi.json,大致分为:

  • 帐户和身份验证: get_account_info, get_account_log_service_details, list_log_services, get_log_service_details, get_system_keys, get_system_key_details.
  • 用户和团队: list_all_users, user_details, list_all_teams, team_details, list_users_in_team, get_user_in_team,获得会员资格。
  • 群组: list_all_groups, group_details, group_service_account, group_ssh_public_key, list_all_users_in_group.
  • 连接器: list_all_connections, list_all_connections_in_group, connection_details, connection_schema_config, connection_column_config, connection_state, metadata_connectors, metadata_public_connectors, metadata_connector_config.
  • 目的地: list_destinations, destination_details.
  • 角色: list_all_roles.
  • 证书和指纹: get_connection_certificates_list, get_connection_certificate_details, get_connection_fingerprints_list, get_connection_fingerprint_details,加上目的地等效物。
  • 网络: get_proxy_agent, get_proxy_agent_details, get_proxy_agent_connections, get_private_links, get_private_link_details, get_hybrid_deployment_agent_list, get_hybrid_deployment_agent.
  • 网络钩子: list_all_webhooks, webhook_details.
  • 变换: transformations_list, transformation_details, list_all_transformation_projects, transformation_project_details, transformation_package_metadata_list, transformation_package_metadata_details.
  • 连接器SDK: list_connector_sdk_packages, get_connector_sdk_package, download_connector_sdk_package.

人口普查激活(src/census_tools.ts)

activations_list_workspaces, activations_get_workspace, activations_list_users, activations_list_syncs, activations_get_sync, activations_list_sync_runs, activations_get_sync_run, activations_list_sources, activations_list_destinations.

中生成的Fivetran API工具 src/generated_tools.ts 源自 openapi.json。原始代码生成器未捆绑在此仓库中;更新 generated_tools.ts 匹配 openapi.json 当规格发生变化时(保持 toToolResult(response) 现有工具使用的返回模式)。

捆绑式扩展资产

这些随附扩展程序,并在Gemini CLI中自动加载。其他MCP客户端忽略了它们——底层工具仍然可以直接调用。

Path 它是什么
skills/ 快速设计的剧本(fivetran-health-report, fivetran-security-audit, fivetran-activations-audit, fivetran-connector-onboarding, fivetran-lineage-explorer, fivetran-sync-triage).每个文件夹都有一个 SKILL.md 提供模型应遵循的工作流。
rules/ 加载扩展时始终适用的行为规则(例如。 fivetran-audit.md).
references/ 可重复使用的模板(例如。 audit-templates.md)这些技能用于一致的报告格式。
commands/fivetran/ Gemini CLI斜线命令(/audit, /health-report, /lineage, /onboarding, /sync-triage, /activations-audit, /status, /export_audit, /skill-creator).

测试

单元测试通过以下方式运行 Vitest 并使用嘲笑 fetch -不需要实时API凭据。

npm test          # one-shot
npm run test:watch

现场测试 tests/ 并涵盖编校逻辑、CSV导出的JSON扁平化和429重试上限。

发展

npm run dev          # run from source via tsx (no build step)
npm run build        # tsc → dist/
npm run lint         # prek (pre-commit hooks)
npm run validate     # validate skills/rules frontmatter
npm run docs         # regenerate DOCS.md from the tool registry
npm run bump <type>  # bump version (patch|minor|major|x.y.z) in all 3 locations

添加一个新工具

  1. 定制工具 (审计、沿袭、多步骤逻辑):添加 server.tool(...) 打电话 src/custom_tools.ts.
  2. 普查工具:添加它 src/census_tools.ts.
  3. 从新的Fivetran端点生成的工具:将其添加到 openapi.json 并反映出变化 src/generated_tools.ts,遵循现有的工具模式(Zod params+ toToolResult(response)).
  4. 跑 npm test && npm run build 在承诺之前。 prek 钩子在提交时运行。

版本控制

该版本在三个必须保持同步的地方进行了硬编码: package.json, gemini-extension.json,以及 src/index.ts (在握手过程中向MCP客户端报告)。 npm run bump <patch|minor|major> 通过以下方式同时更新所有三个 scripts/bump-version.mjs.

要在不用手触摸文件的情况下剪切释放,请触发 版本颠簸 GitHub行动(Actions → Version Bump → Run workflow,选择补丁/次要/主要)。它运行bump脚本,提交,创建一个 vX.Y.Z 标签和推送。

持续集成

GitHub操作(.github/workflows/):

  • 持续集成 (ci.yml)--每次推/公关 main:构建(tsc),运行Vitest套件,并运行所有 prek 钩子(via uvx prek).
  • 版本颠簸 (version-bump.yml)--手册 workflow_dispatch 如上所述的触发器。

项目布局

.
├── src/
│   ├── index.ts            # MCP server entrypoint (stdio transport, health checks)
│   ├── common.ts           # Fivetran + Census HTTP clients, redaction, retry cap
│   ├── custom_tools.ts     # Audit, lineage, export, write ops
│   ├── generated_tools.ts  # Auto-generated read-only Fivetran tools
│   └── census_tools.ts     # Census (Activations) tools
├── tests/                  # Vitest unit tests (mocked fetch)
├── skills/                 # Gemini CLI skill packs (SKILL.md per folder)
├── rules/                  # Gemini CLI behavioral rules
├── references/             # Report/audit templates referenced by skills
├── commands/fivetran/      # Gemini CLI slash command definitions (.toml)
├── scripts/
│   ├── generate-docs.mts         # Tool registry → DOCS.md
│   ├── bump-version.mjs          # Version bump across the 3 locations
│   └── validate-template.mjs     # Skills/rules frontmatter validation
├── openapi.json            # Fivetran REST API spec (source for generated tools)
├── openapi_census.json     # Census API spec
├── gemini-extension.json   # Gemini CLI extension manifest
└── prek.toml               # Pre-commit hook config

许可证

麻省理工学院 ©埃德加·奥乔亚