项目简介

'bc-data-warehouse' 是一个数据仓库项目,旨在整合加拿大统计局(StatsCan)和加拿大移民、难民与公民部(IRCC)的数据。它包含数据管道,用于抽取、转换并将数据加载到AWS S3和AWS Glue中,通过AWS Athena提供强大的查询能力。该仓库中的 'athena_mcp_server.py' 文件是核心的MCP服务器实现,它将AWS Athena的SQL查询能力封装成一个工具,供支持Model Context Protocol (MCP) 的LLM客户端调用。

主要功能点

  • 数据查询服务: 提供一个名为 'query' 的工具,允许LLM客户端发送标准的SQL查询语句到StatsCan数据仓库,并获取查询结果。
  • 标准协议通信: 服务器通过Model Context Protocol (MCP) 标准协议与LLM客户端进行基于JSON-RPC的通信,确保了与其他MCP兼容应用的互操作性。
  • 数据仓库集成: 深度集成AWS Athena作为后端查询引擎,能够高效、安全地访问存储在S3中的StatsCan数据集。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/akhil-m/bc-data-warehouse.git
  2. 进入项目目录:
    cd bc-data-warehouse
  3. 创建并激活Python虚拟环境:
    python -m venv .venv
    source .venv/bin/activate
  4. 安装项目依赖:
    pip install -r requirements-dev.txt
    此步骤会安装 'fastmcp' (MCP服务器框架) 和 'boto3' (AWS SDK) 等必要库。
  5. 配置AWS凭证: 在项目根目录下创建一个名为 '.env' 的文件,并添加您的AWS访问密钥、秘密访问密钥和区域信息。或者,您也可以直接在终端中导出这些环境变量。
    # 例如:
    export AWS_ACCESS_KEY_ID=您的AWS_ACCESS_KEY_ID
    export AWS_SECRET_ACCESS_KEY=您的AWS_SECRET_ACCESS_KEY
    export AWS_REGION=us-east-2
    请确保您的AWS账户拥有访问 'build-cananda-dw' S3桶、'athena-queries-akhil1710' S3桶(用于Athena查询结果),以及执行AWS Athena查询的必要权限。

服务器配置 (供MCP客户端使用)

以下是一个JSON格式的配置示例,您的MCP客户端可以使用它来连接并识别此服务器。请将 'command' 和 'args' 中的路径以及 'env' 中的凭证替换为您的实际部署路径和配置信息。

{
  "name": "StatsCan Data Warehouse",
  "command": "python",
  "args": [
    "/您的/项目/路径/bc-data-warehouse/src/mcp/athena_mcp_server.py"
  ],
  "env": {
    "AWS_ACCESS_KEY_ID": "您的AWS_ACCESS_KEY_ID",
    "AWS_SECRET_ACCESS_KEY": "您的AWS_SECRET_ACCESS_KEY",
    "AWS_REGION": "us-east-2"
  },
  "transport": "http",
  "host": "0.0.0.0",
  "port": 8001,
  "description": "提供加拿大统计局数据仓库的SQL查询工具,允许LLM通过此服务访问和查询政府统计数据。"
}
  • 'name': 此MCP服务器在客户端界面显示的名称,建议使用“StatsCan Data Warehouse”。
  • 'command': 启动MCP服务器所使用的命令,通常是 'python'。
  • 'args': 启动服务器脚本所需传递的参数列表,其中包含 'athena_mcp_server.py' 脚本的绝对路径。请务必将 '/您的/项目/路径/' 替换为 'bc-data-warehouse' 项目在您系统中的实际安装路径。
  • 'env': 运行服务器时所需的环境变量,特别是AWS凭证。请替换为您的实际AWS Access Key ID、Secret Access Key和区域。
  • 'transport': 服务器与客户端通信使用的传输协议,此处为 'http'。
  • 'host': MCP服务器监听的IP地址,'0.0.0.0' 表示监听所有可用的网络接口。
  • 'port': MCP服务器监听的端口号,此处为 '8001'。
  • 'description': 服务器功能的简要说明,有助于LLM客户端理解其用途。

基本使用方法

  1. 启动MCP服务器: 在激活了虚拟环境并在项目根目录的情况下,执行以下命令启动MCP服务器:
    source .venv/bin/activate
    python src/mcp/athena_mcp_server.py
    服务器将启动并监听 'http://0.0.0.0:8001'。
  2. LLM客户端交互: 您的LLM客户端(例如,支持MCP的LibreChat或其他应用)将能够根据上述配置发现并连接到此MCP服务器。客户端可以通过MCP协议发送JSON-RPC请求,调用 'query' 工具并提供SQL查询字符串。服务器将负责执行AWS Athena查询,并将查询结果以结构化的JSON格式返回给LLM客户端,供其进一步处理和分析。

信息

分类

数据库与文件