AgentDank: について
AgentDankのdank-mcpは、大麻データセットを検索するMCPサーバーで、LLMからローカルのDuckDBデータを照会する用途に向いています。現在は改修中で、`us/ct`データセットと読み取り専用SQLクエリを中心にしています。
主な機能
- 01`query`ツールによるSQL実行
- 02DuckDBデータファイルの利用
- 03データセットスナップショットの取得とキャッシュ
- 04読み取り専用でのデータアクセス
- 05外部アクセスの無効化
活用シーン
- 01`us/ct`大麻データセットの検索
- 02DuckDBファイルに対するSQL実行
- 03LLM経由でのローカルデータ取得
MCP 対応
MCP サーバーはSQLを受け取りCSVを返す`query`ツールを登録します。読み取り専用のDuckDBクエリをMCPクライアントに提供し、外部アクセスを無効にします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
AgentDank: dank-mcp
dank-mcp は、カンナビスのデータセットをクエリするための Model Context Protocol(MCP)サーバーです。AgentDank が教育および合法的な目的で提供しています。
メモ
ステータス:リファクタリング中です。
dank-mcpは、汎用的な宣言型データセットバインディングアーキテクチャに向けて再構築中です(設計に関するメモを参照)。--fetch <id>を使ってデータセットをブートストラップできます。これにより、dank-dataからビルド済みのスナップショットがダウンロードされます。現時点で利用できるデータセットはus/ctのみです。
カンナビスのデータセットのスナップショットは、AgentDank dank-data リポジトリで管理されています。--db を使えば、任意の DuckDB ファイルを dank-mcp に指定できます。
インストール
ビルド済みバイナリや Homebrew パッケージを提供したいと考えていますが、現在問題が発生しています。そのため、go install またはソースからのビルドによるインストールを推奨します。
$ go install github.com/AgentDank/dank-mcp@latest
インストール先は $GOPATH/bin ディレクトリです。多くの場合、~/go/bin になります。
LLM での使用
この 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 に質問できるようになり、Claude は dank-mcp サーバーを使用します。
Ollama と mcphost
現在、うまく動作させるのに問題が発生していますが、興味のある方のために手順を残しておきます。
ローカルで推論する場合、Ollama をサポートする MCP ホストがあります。「Tools」をサポートする Ollama LLM ならどれでも使用できます。重い処理を担ってくれた mcp-go ライブラリの開発者が作成した mcphost を試しました。
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 はインストール前にカタログと照合され、ローカルファイルは rename によってアトミックに置き換えられます。そのため、破損したファイルが見えるタイミングはありません。
コマンドラインでの使用
コマンドラインのヘルプは次のとおりです。
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 は、以下の少数のアイデアを中心に再構築されています。
- ロックダウンされた読み取り専用 DuckDB — サーバーは
access_mode=read_onlyを指定して DuckDB を開き、SET enable_external_access=falseを適用するため、汎用 SQL ツールを安全に公開できます。 - 汎用
queryMCP ツール — データセットごとに個別のツールを作成するのではなく、dank-mcpは指定した任意の DuckDB に対して実行する単一のquery(sql)ツールを公開します。 - 宣言型のデータセットバインディング(開発中) —
pkg/dankでは、Registrarインターフェースと、JSON タグを付けられるBinding/ResourceQuery/ToolQuery構造体を定義しています。新しいデータセットは、専用の Go コードではなく、設定駆動のバインディングとして追加できることを目指しています。
以前の構成では、コネチカット州の大麻ブランドのデータセットがバイナリに直接組み込まれていました。このコードは削除されており、データセットは上記のバインディング機構を通じて再導入される予定です。
DuckDB ファイルへの SQL アクセスだけが必要な場合は、MotherDuck の mcp-server-motherduck が、より汎用的な代替手段です。dank-mcp の目標は、その上に大麻に特化したプロンプト、リソース、ツールをまとめることです。
貢献と行動規範
プルリクエストや課題の投稿を歓迎します。あるいは、フォークしてください。お好きなようにどうぞ。
いずれの場合も、行動規範を守ってください。怪しげなのは構いませんが、嫌な人にはならないでください。
クレジットとライセンス
Copyright (c) 2025 Neomantra Corp. AgentDank のために Evan Wies が執筆しました。
MIT License の下で公開されています。詳しくは LICENSE.txt をご覧ください。
AgentDank のチームが :herb: と :fire: を込めて作成しました。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。