项目简介

Steampipe MCP 服务器是一个实现了 Model Context Protocol (MCP) 的后端应用。它主要用于与 Steampipe 提供的 PostgreSQL 数据库接口进行交互。通过这个服务器,你可以让支持 MCP 的大型语言模型(LLM)客户端,例如 Claude Desktop,能够查询你的 Steampipe 环境中的数据。

主要功能点

  • 执行 SQL 查询: 允许LLM通过工具运行只读SQL查询,获取Steampipe数据库中的数据,结果以JSON格式返回。
  • 列出所有表格: 提供工具列出Steampipe中所有模式(schema)下的所有表格。
  • 列出特定模式下的表格: 提供工具列出指定模式下的所有表格,帮助LLM聚焦到特定数据源。
  • 获取表格结构: 提供工具获取指定表格的列名及其数据类型信息,帮助LLM理解数据结构。

安装步骤

  1. 安装 Steampipe: 按照Steampipe官方文档或根据仓库README提供的命令安装Steampipe。
    • macOS: 'brew tap turbot/tap && brew install steampipe'
    • Linux: 'sudo /bin/sh -c "$(curl -fsSL https://steampipe.io/install/steampipe.sh)"'
    • Windows: 'iwr -useb https://steampipe.io/install/steampipe.ps1 | iex'
  2. 启动 Steampipe 服务: 启动Steampipe后台服务。
    • 命令行: 'steampipe service start'
  3. 获取数据库连接URL: 查询Steampipe服务的状态,找到 PostgreSQL 的数据库连接URL。
    • 命令行: 'steampipe service status'
    • 输出中查找 'Database URL',通常是 'postgres://steampipe:password@localhost:port/steampipe' 这样的格式。请注意,服务器要求使用 'postgresql://' 协议头。
  4. 安装 Steampipe MCP 服务器:
    • 确保你安装了 Python 3.8+ 和 pip 工具。
    • 可以通过 PyPI 安装(如果已发布):'pip install steampipe-mcp-server' (请检查实际包名)
    • 或从源码安装(推荐开发者使用,或当PyPI包未发布时):
      • 克隆仓库:'git clone https://github.com/zen4ever/steampipe-mcp-server.git'
      • 进入目录:'cd steampipe-mcp-server'
      • 安装依赖:'pip install -e .' 或 'pip install -e .[dev]' 使用开发模式

服务器配置

MCP 服务器是给 MCP 客户端(如 Claude Desktop)使用的。你需要将服务器的启动方式配置到 MCP 客户端中。配置通常是一个JSON片段,包含服务器的名称、启动命令和参数。

以下是配置 MCP 客户端时需要提供的信息:

  • 服务器名称 (server name): 你希望在客户端中显示的这个服务器的名称,例如 'steampipe'。
  • 启动命令 (command): 启动服务器的可执行程序或脚本。根据你的安装方式,可能是 'steampipe-mcp-server' 或使用 'uvx' 等工具运行。
  • 启动参数 (args): 启动服务器时需要的参数列表。最重要的是指定 Steampipe 数据库的连接URL。
    • 参数1: '--database-url'
    • 参数2: '你的Steampipe数据库连接URL' (例如: 'postgresql://steampipe:password@localhost:9193/steampipe')

你可以将数据库URL保存在环境变量 'STEAMPIPE_MCP_DATABASE_URL' 中,然后启动参数可以省略 '--database-url' 及其值(如果服务器配置支持读取环境变量)。

基本使用方法

  1. 完成上述安装和配置步骤,确保 Steampipe 服务和 Steampipe MCP 服务器都已准备好并在MCP客户端中正确配置。
  2. 在支持 MCP 的 LLM 客户端中,服务器应该会被识别并激活。客户端可能会显示可用的工具列表。
  3. 你可以通过自然语言向LLM提问,引导它使用这个服务器提供的工具来获取信息。例如:
    • 询问关于你的 AWS EC2 实例列表(可能触发 'list_tables_in_schema' 或 'query' 工具)。
    • 询问某个特定表格的列信息(可能触发 'get_table_schema' 工具)。
    • 直接让LLM执行一个你提供的只读SQL查询(触发 'query' 工具)。

通过使用这些工具,LLM 可以获取 Steampipe 环境中的实时数据和结构信息,从而提供更准确、更符合当前环境的回答。

信息

分类

数据库与文件