mcpField
D
db-metadata-extractor-mcp

db-metadata-extractor-mcp

本地服务
github.com/Optisol-Business数据库028 周前更新

关于 db-metadata-extractor-mcp

面向开发者和数据库团队的 MCP 服务,可提取并查询 PostgreSQL、Snowflake、SQL Server、BigQuery 和 Oracle 的架构元数据。元数据保存为本地 JSON,并可筛选和分页浏览。

主要功能

  1. 01支持五种数据库
  2. 02提取表、列、键、索引和约束
  3. 03元数据保存为本地 JSON
  4. 04按表名或列名搜索
  5. 05分页查看元数据

适用场景

  1. 01在本地记录数据库架构
  2. 02查找已提取元数据中的表或列
  3. 03提取指定架构或表
  4. 04分页浏览大型架构

MCP 相关

向 MCP 客户端提供 `extract_metadata` 和 `query_metadata` 工具,并支持 stdio 与 HTTP 传输。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"optisol-business-db-metadata-extractor": {
"command": "uvx",
"args": [
"db-metadata-extractor-mcp"
]
}
}
}
启动命令uvx db-metadata-extractor-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypidb-metadata-extractor-mcp0.1.6
ocidocker.io/optisolbusinesssol/db-metadata-extractor-mcp:0.1.6

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

mcp-name: io.github.Optisol-Business/db-metadata-extractor-mcp

数据库元数据提取器 MCP 服务

一个模型上下文协议(MCP)服务,可从 PostgreSQL、Snowflake、SQL Server、BigQuery 和 Oracle 数据库中提取并查询数据库架构元数据。

功能

  • ✅ 多数据库支持:PostgreSQL、Snowflake、SQL Server(MSSQL)、BigQuery、Oracle
  • ✅ 完整的架构提取:表、列、主键、索引、约束
  • ✅ 本地 JSON 输出:将元数据直接保存到本地文件夹(无需云服务)
  • ✅ 查询接口:按表名或列名搜索和筛选元数据
  • ✅ 分页支持:高效浏览大型架构
  • ✅ VS Code 集成:可与 VS Code Agent Mode 配合使用
  • ✅ 可自定义 CLI:传输选项(stdio、HTTP)

安装

从 PyPI 安装
pip install db-metadata-extractor-mcp
从源代码安装
git clone https://github.com/Optisol-Business/db-metadata-extractor-mcp.git
cd db-metadata-extractor-mcp
pip install -e .

快速开始

1. 启动 MCP 服务
db-metadata-extractor-mcp

服务默认以 stdio 模式启动,并监听 MCP 客户端连接。

2. 在 Claude Desktop 中配置

将以下内容添加到 ~/.config/Claude/claude_desktop_config.json(macOS/Linux)或 %APPDATA%\Claude\claude_desktop_config.json(Windows):

{
  "mcpServers": {
    "db-metadata-extractor": {
      "command": "db-metadata-extractor-mcp",
      "args": [],
      "env": {}
    }
  }
}

重启 Claude Desktop。

3. 在 Claude 中使用

告诉 Claude:

从我的 PostgreSQL 数据库中提取元数据,并将其保存到 /tmp/output

Claude 将使用此服务的工具来提取并查询数据库架构。

工具

extract_metadata

从数据库中提取完整的架构元数据。

参数:

  • db_type(必填):postgresql、snowflake、sqlserver、bigquery、oracle
  • output_path(必填):用于保存 JSON 输出的本地目录
  • database_name:数据库/架构名称
  • host:数据库主机(BigQuery/Snowflake 无需此项)
  • port:数据库端口
  • username:数据库用户
  • password:数据库密码
  • schema_name:指定架构(可选)
  • tables:要提取的表名数组(可选)
  • account:Snowflake 账户 ID
  • warehouse:Snowflake 仓库
  • role_name:Snowflake 角色
  • project_id:BigQuery 项目 ID
  • service_account_key:BigQuery 服务账户 JSON(经过 base64 编码)

返回:

  • 保存元数据的文件路径
  • 汇总统计信息(表数量、列数量等)
query_metadata

查询先前提取的元数据。

参数:

  • filepath(必填):元数据 JSON 文件的路径
  • table_name:按表名筛选(子字符串匹配)
  • field_name:按列名筛选(子字符串匹配)
  • page:页码(默认值:1)
  • page_size:每页结果数(默认值:20)

返回:

  • 与筛选条件匹配的分页表结果

示例

PostgreSQL
# Via Claude
"Extract all tables from my dev PostgreSQL database at localhost:5432"

Claude 将使用的参数:

{
  "db_type": "postgresql",
  "host": "localhost",
  "port": 5432,
  "database_name": "dev_db",
  "username": "postgres",
  "password": "your_password",
  "output_path": "/tmp/db_metadata"
}
Snowflake
"Extract schema from Snowflake account XYZ123"

参数:

{
  "db_type": "snowflake",
  "account": "XYZ123",
  "username": "your_user",
  "password": "your_password",
  "warehouse": "COMPUTE_WH",
  "role_name": "ANALYST",
  "database_name": "PRODUCTION",
  "output_path": "C:/metadata"
}
BigQuery
"Extract metadata from BigQuery project my-project-123"

参数:

{
  "db_type": "bigquery",
  "project_id": "my-project-123",
  "service_account_key": "base64_encoded_json_key",
  "output_path": "/tmp/bq_metadata"
}

高级用法

自定义传输方式

使用 HTTP 传输方式启动:

db-metadata-extractor-mcp --transport streamable-http --port 3000
环境变量
# Set database credentials via env
export DB_HOST=localhost
export DB_USER=postgres
export DB_PASSWORD=secret

db-metadata-extractor-mcp

输出格式

提取的元数据会保存为 JSON 文件,结构如下:

{
  "source": {
    "db_type": "postgresql",
    "extracted_at": "2026-04-09T14:30:00",
    "host": "localhost"
  },
  "schemas": [
    {
      "schema_name": "public",
      "tables": [
        {
          "table_name": "users",
          "columns": [
            {
              "column_name": "id",
              "data_type": "int",
              "is_nullable": false,
              "is_primary_key": true
            },
            {
              "column_name": "email",
              "data_type": "varchar",
              "is_nullable": false
            }
          ],
          "indexes": [
            {
              "index_name": "users_email_idx",
              "columns": ["email"]
            }
          ]
        }
      ]
    }
  ]
}

要求

  • Python 3.8+
  • PostgreSQL:psycopg2-binary
  • Snowflake:snowflake-connector-python
  • SQL Server:pyodbc、pymssql
  • BigQuery:google-cloud-bigquery
  • Oracle:oracledb

故障排除

连接错误

问题:“Unable to connect to database”

解决方案:验证凭据和网络访问:

# Test PostgreSQL connection
psql -h localhost -U postgres -c "SELECT 1"

# Test Snowflake
snowsql -a XYZ123 -u your_user
权限错误

问题:“Access denied”或“insufficient permissions”

解决方案:确保数据库用户拥有以下权限:

  • 表上的 SELECT 权限
  • 架构上的 USAGE 权限
  • 数据库上的 CONNECT 权限
大型架构超时

问题:提取大型数据库时超时

解决方案:提取指定架构/表:

{
  "schema_name": "public",
  "tables": ["users", "orders"]  // Specify subset
}

许可证

MIT License — 参见 LICENSE 文件

贡献

欢迎贡献!请:

  1. Fork 此仓库
  2. 创建功能分支
  3. 提交 pull request

Support

Links

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。