项目简介
'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数据集。
安装步骤
- 克隆仓库:
git clone https://github.com/akhil-m/bc-data-warehouse.git - 进入项目目录:
cd bc-data-warehouse - 创建并激活Python虚拟环境:
python -m venv .venv source .venv/bin/activate - 安装项目依赖:
此步骤会安装 'fastmcp' (MCP服务器框架) 和 'boto3' (AWS SDK) 等必要库。pip install -r requirements-dev.txt - 配置AWS凭证:
在项目根目录下创建一个名为 '.env' 的文件,并添加您的AWS访问密钥、秘密访问密钥和区域信息。或者,您也可以直接在终端中导出这些环境变量。
请确保您的AWS账户拥有访问 'build-cananda-dw' S3桶、'athena-queries-akhil1710' S3桶(用于Athena查询结果),以及执行AWS Athena查询的必要权限。# 例如: export AWS_ACCESS_KEY_ID=您的AWS_ACCESS_KEY_ID export AWS_SECRET_ACCESS_KEY=您的AWS_SECRET_ACCESS_KEY export AWS_REGION=us-east-2
服务器配置 (供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客户端理解其用途。
基本使用方法
- 启动MCP服务器:
在激活了虚拟环境并在项目根目录的情况下,执行以下命令启动MCP服务器:
服务器将启动并监听 'http://0.0.0.0:8001'。source .venv/bin/activate python src/mcp/athena_mcp_server.py - LLM客户端交互: 您的LLM客户端(例如,支持MCP的LibreChat或其他应用)将能够根据上述配置发现并连接到此MCP服务器。客户端可以通过MCP协议发送JSON-RPC请求,调用 'query' 工具并提供SQL查询字符串。服务器将负责执行AWS Athena查询,并将查询结果以结构化的JSON格式返回给LLM客户端,供其进一步处理和分析。
信息
分类
数据库与文件