数据集查询协议服务器

dank-mcp是一个用于查询大麻数据集的模型上下文协议(MCP)服务器,适用于教育及法律用途。

  • by AgentDank
  • Go
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 AgentDank/dank-mcp

使用说明

代理感谢: dank-mcp

dank-mcp 是用于查询大麻数据集的模型上下文协议(MCP)服务器。它是由AgentBank出于教育和法律目的带给您的。

[!注意] 状态:正在重构。 dank-mcp 正在向通用的声明性数据集绑定架构进行重新设计(请参见 设计注意事项).您可以通过以下方式引导数据集 --fetch <id>,从下载预构建的快照 dank-data。今天唯一的数据集是 us/ct.


大麻数据集的快照在 代理感谢 dank-data 知识库;你可以指出 dank-mcp 通过任何DuckDB文件 --db.

安装

虽然我们希望有预构建的二进制文件和Homebrew包,但我们现在遇到了一个问题。因此,首选的安装方式是使用 go install 或 从源头建造:

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

它将安装在您的 $GOPATH/bin 目录,通常 ~/go/bin.

与LLM一起使用

要使用此 dank-mcp MCP服务器,您必须配置主机程序才能使用它。我们将用 克劳德桌面我们必须找到 dank-mcp 我们系统上的程序;下面的示例显示了 dank-mcp 已安装我的 go install.

以下配置JSON(同样在回购中 mcp-config.json)设置此项:

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

克劳德桌面

使用Claude Desktop,您可以按照以下步骤操作 他们的配置教程 但替换上述配置。有了这个,你可以问克劳德问题,它会使用 dank-mcp 服务器。

奥拉玛和 mcphost

我目前对此工作有问题,但会给感兴趣的人留下指示。

对于本地推理,有MCP主机支持 奥拉玛。您可以使用任何 支持“工具”的Olama LLM我们进行了实验 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 可以从以下位置下载预构建的DuckDB快照 代理感谢 dank-data 回购:

$ 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

下载被缓存在 .dank/cache/<id>/dank-data.duckdb 在...之下 --root (或当前目录)。在新的下载发生之前,缓存会被重复使用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: [build] go build -o bin/dank-mcp

设计注意事项

dank-mcp 正在围绕一小部分想法进行重新设计:

  1. 锁定只读DuckDB --服务器打开DuckDB access_mode=read_only 并适用 SET enable_external_access=false 因此公开通用SQL工具是安全的。
  2. 通用的 query MCP工具 --而不是手动滚动每个数据集工具, dank-mcp 暴露一个 query(sql) 该工具可以针对您指向的任何DuckDB运行。
  3. 声明性数据集绑定 (进行中)-- pkg/dank 定义a Registrar 接口和JSON标记 Binding / ResourceQuery / ToolQuery 结构。其目的是,新的数据集可以作为配置驱动的绑定添加,而不是定制的Go代码。

之前的曲面将康涅狄格州大麻品牌数据集直接捆绑到二进制文件中。该代码已被删除;数据集将通过上述绑定机制重新引入。

如果你只想用SQL访问DuckDB文件,MotherDuck的 mcp-server-motherduck 是一种更通用的替代方案。目标 dank-mcp 将大麻特定的提示、资源和工具捆绑在一起。


贡献与行为

欢迎提交请求和问题。或者用叉子叉,你自己动手。

无论哪种方式,遵守我们的 行为准则要遮遮掩掩,但不要做混蛋。

学分和许可证

版权所有(c)2025 Neomantra Corp.由Evan Wies为 代理感谢.

根据 MIT许可证,请参阅 LICENSE.txt.


由:草药:和:火:由背后的团队制作 代理感谢.