返回市场
沙丘查询MCP

沙丘查询MCP

作者:olaxbt8 星标更新:2025-05-25

项目介绍

DuneLink

版本 Python

通过模型控制协议(MCP)连接Dune Analytics数据与智能代理的现代桥梁。

概述

DuneLink使区块链数据分析能够无缝集成到您的AI应用程序中。通过利用Dune Analytics的强大查询功能以及模型控制协议,此服务允许LLMs和其他AI系统通过简单的自然语言交互访问链上数据。

核心能力

数据检索工具

工具描述使用场景
get_latest_result获取预计算的查询结果快速访问现有数据
run_query按需执行查询实时数据分析

数据格式

所有数据均以CSV格式返回,提供:

  • 通用兼容性
  • 大多数数据分析工具易于解析
  • 人类可读的输出

开始使用

系统要求

  • Python 3.10或更高版本
  • 有效的Dune Analytics API密钥(在这里获取

快速设置

  1. 克隆并导航

    git clone https://github.com/olaxbt/dune-query-mcp.git
    cd dunelink
    
  2. 环境设置

    # 创建虚拟环境
    python -m venv .venv
    
    # 激活它
    source .venv/bin/activate  # Linux/Mac
    # 或
    .venv\Scripts\activate     # Windows
    
    # 安装依赖项
    pip install -r requirements.txt
    
  3. 配置API访问

    # 复制示例配置
    cp .env.example .env
    
    # 使用您的API密钥编辑
    echo "DUNE_API_KEY=your_key_here" > .env
    

使用方法

运行服务

DuneLink提供了两种运行方式:

作为MCP服务

python run.py

这将在默认端口8000启动MCP服务。

作为Web服务器

python flask_app.py

这将提供对Web界面和REST API端点的访问。

与应用程序集成

MCP客户端集成

from mcp.client import Client

# 连接到DuneLink
client = Client("http://localhost:8000")

# 获取查询的最新结果
csv_data = client.call("get_latest_result", query_id=1234567)

# 执行查询
query_results = client.call("run_query", query_id=1234567)

REST API

端点方法描述
/dune/healthGET服务健康检查
/dune/query/{query_id}/latestGET获取最新结果
/dune/query/{query_id}/executePOST运行查询

REST调用示例:

curl -X GET http://localhost:5000/dune/query/1234567/latest

架构

dunelink/
├── app/                       # 应用核心
│   ├── __init__.py            # Flask & MCP设置
│   ├── routes/                # API端点定义
│   │   └── dune_routes/       # Dune Analytics路由
│   │   └── templates/         # Web界面
│   └── templates/             # Web界面
├── config/                    # 配置文件
├── logs/                      # 运行日志
├── flask_app.py               # Web服务器入口点
├── run.py                     # MCP服务器入口点
└── requirements.txt           # 依赖项

高级配置

环境变量

变量目的默认值
DUNE_API_KEYDune API认证None(必需)
PORT服务器端口8000

性能调整

对于大量查询执行:

# 设置更长的超时时间以处理长时间运行的查询
export DUNE_QUERY_TIMEOUT=600  # 10分钟,单位为秒

故障排除

常见问题及解决方案:

问题解决方案
API密钥错误确保.env文件存在且包含有效密钥
超时错误增加复杂查询的超时时间
CSV解析问题检查查询是否返回正确的表格数据

贡献

欢迎贡献!请遵循以下步骤:

  1. 分叉仓库
  2. 创建功能分支:git checkout -b feature/amazing-feature
  3. 提交更改:git commit -am '添加一些惊人的功能'
  4. 推送到分支:git push origin feature/amazing-feature
  5. 打开Pull Request

许可证

本项目在MIT许可证下发布。详情见LICENSE文件。

致谢