mcpField
A
AgentDank:

AgentDank:

本地服务
github.com/AgentDank健康医疗327 周前更新

关于 AgentDank:

AgentDank 的 dank-mcp 是用于查询大麻数据集的 MCP 服务,适合通过 LLM 查询本地 DuckDB 数据的场景。项目正在重构,目前提供 `us/ct` 数据集,并以只读 SQL 查询为核心。

主要功能

  1. 01通过 `query` 执行 SQL 查询
  2. 02使用 DuckDB 数据文件
  3. 03下载并缓存数据集快照
  4. 04以只读模式访问数据
  5. 05限制外部访问

适用场景

  1. 01查询 `us/ct` 大麻数据集
  2. 02对自有 DuckDB 文件运行 SQL
  3. 03通过 LLM 检索本地数据

MCP 相关

该 MCP 服务注册 `query` 工具,接受 SQL 并以 CSV 返回结果。它向 MCP 客户端提供只读 DuckDB 查询,并禁用外部访问。

配置

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

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

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

详细介绍

AgentDank:   dank-mcp

dank-mcp 是一个用于查询大麻数据集的模型上下文协议(MCP)服务,由 AgentDank 为教育和合法用途提供。

说明

状态:正在重构。 dank-mcp 正在改造为通用的声明式数据集绑定架构(参见设计说明)。你可以通过 --fetch <id> 引导数据集,该命令会从 dank-data 下载预构建快照。目前唯一的数据集是 us/ct。


大麻数据集快照由 AgentDank dank-data 仓库整理;你可以通过 --db 将 dank-mcp 指向任意 DuckDB 文件。

安装

我们希望提供预构建二进制文件和 Homebrew 软件包,但目前遇到了一些问题。因此,推荐使用 go install 或从源代码构建的方式安装:

$ go install github.com/AgentDank/dank-mcp@latest

它会安装到你的 $GOPATH/bin 目录,该目录通常是 ~/go/bin。

与大模型搭配使用

要使用这个 dank-mcp MCP 服务,你必须配置宿主程序来使用它。下面以 Claude Desktop 为例。我们需要在系统中找到 dank-mcp 程序;下方示例展示了我通过 go install 安装的 dank-mcp 所在位置。

以下配置 JSON(仓库中也有 mcp-config.json)可以完成设置:

{
    "mcpServers": {
      "dank": {
        "command": "~/go/bin/dank-mcp",
        "args": [
          "--root", "~"
        ]
      }
    }
  }
Claude Desktop

使用 Claude Desktop 时,你可以按照其配置教程操作,但使用上面的配置。设置完成后,你就可以向 Claude 提问,它会使用 dank-mcp 服务。

Ollama 和 mcphost

目前我在让它正常运行方面遇到了一些问题,但仍在此留下说明,供感兴趣的人参考。

对于本地推理,有些 MCP 宿主支持 Ollama。你可以使用任何支持“工具”的 Ollama 大模型。我们尝试了 mcphost,它由 mcp-go 库的开发者编写;该库为我们承担了繁重的工作。

下面介绍如何使用上面的配置安装并运行它,配置保存在 mcp-config.json 中:

$ go install github.com/mark3labs/mcphost@latest
$ ollama pull llama3.3
$ mcphost -m ollama:llama3.3 --config mcp-config.json
...chat away...

加载数据

dank-mcp 可以从 AgentDank dank-data 仓库下载预构建的 DuckDB 快照:

$ dank-mcp --list                     # show available datasets
$ dank-mcp --fetch us/ct              # download and serve
$ dank-mcp --fetch us/ct --fetch-only # download and exit
$ dank-mcp --fetch us/ct --force      # force re-download

下载内容会缓存在 --root 下的 .dank/cache/<id>/dank-data.duckdb 中(如果未指定,则使用当前目录)。缓存会重复使用 7 天,之后才会重新下载;使用 --force 可强制覆盖。

安装前会根据目录验证快照的 SHA-256,并通过重命名原子替换本地文件,因此不会出现损坏文件可见的情况。

命令行用法

以下是命令行帮助信息:

usage: ./bin/dank-mcp [opts]

      --db string         DuckDB data file to use, use ':memory:' for in-memory. Default is '.dank/dank-mcp.duckdb' under --root
      --fetch string      Dataset id to download from dank-data (e.g., us/ct)
      --fetch-only        Download only; do not start the MCP server
      --force             Force re-download even if cache is fresh (requires --fetch)
  -h, --help              Show help
      --list              List datasets from the dank-data catalog and exit
  -l, --log-file string   Log file destination (or MCP_LOG_FILE envvar). Default is stderr
  -j, --log-json          Log in JSON (default is plaintext)
      --root string       Set root location of '.dank' dir (Default: current dir)
      --sse               Use SSE Transport (default is STDIO transport)
      --sse-host string   host:port to listen to SSE connections
  -v, --verbose           Verbose logging

目前该服务只注册了一个 MCP 工具 query,它接收一个 sql 字符串参数并返回 CSV。DuckDB 以只读模式打开,并通过 SET enable_external_access=false 进一步限制,因此只允许对本地数据执行纯 SQL。

构建

使用 task 进行构建:

$ task
task: [build] go build -o bin/dank-mcp

设计说明

dank-mcp 正围绕一组简明理念进行重构:

  1. 锁定为只读的 DuckDB — 服务以 access_mode=read_only 打开 DuckDB,并应用 SET enable_external_access=false,因此公开通用 SQL 工具是安全的。
  2. 通用 query MCP 工具 — dank-mcp 不再为每个数据集单独手动编写工具,而是提供一个 query(sql) 工具,对指定的 DuckDB 执行查询。
  3. 声明式数据集绑定(进行中)— pkg/dank 定义了一个 Registrar 接口,以及可用 JSON 标记的 Binding / ResourceQuery / ToolQuery 结构体。目标是通过配置驱动的绑定添加新数据集,而不是编写专门的 Go 代码。

之前的版本将康涅狄格州大麻品牌数据集直接打包进二进制文件。相关代码已移除;数据集将通过上述绑定机制重新引入。

如果你只需要访问 DuckDB 文件中的 SQL,MotherDuck 的 mcp-server-motherduck 是一个用途更广泛的替代方案。dank-mcp 的目标是在此基础上打包大麻行业专用的提示词、资源和工具。


贡献与行为准则

欢迎提交拉取请求和问题,也可以自行 Fork。随你。

无论如何,请遵守我们的行为准则。可以行事低调,但别做讨人厌的人。

致谢与许可证

版权所有 (c) 2025 Neomantra Corp. 由 Evan Wies 撰写,所属项目为 AgentDank。

根据 MIT 许可证发布,详见 LICENSE.txt。


由 AgentDank 团队用 :herb: 和 :fire: 打造。

评论

支持 Markdown

第一次接触 MCP?

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

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