Dingo MCP Server について
Dingo MCP サーバーは、データ品質評価ツールの Dingo を AI エージェントから利用できるようにする MCP サーバーです。クライアントはルールベースと LLM ベースの評価を実行し、利用可能なルールやプロンプトを一覧できます。ML 実務者やデータエンジニア向けに、学習データや AI システムの品質を評価します。
主な機能
- 01ルールベースのデータ品質評価の実行
- 02LLM ベースの評価の実行
- 03利用可能なルールとプロンプトの一覧表示
- 04SSE と stdio のトランスポートに対応
- 05ローカルファイル、SQL データベース、S3 との接続
活用シーン
- 01IDE からエージェント経由で学習データの品質を確認
- 02RAG システムの検索と生成品質の評価
MCP 対応
Dingo MCP サーバーは MCP サーバーとして動作し、評価機能、ルール、プロンプトの一覧を MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Dingo を気に入っていただけたら、GitHub で ⭐ をお願いします!
はじめに
Dingo は、AI データ、モデル、アプリケーションの品質を包括的に評価するツールです。 ML の実務者、データエンジニア、AI 研究者向けに設計されています。トレーニングデータ、ファインチューニング用データセット、本番環境の AI システムの品質を体系的に評価し、改善するのに役立ちます。
🚀 Dingo エンタープライズ SaaS 版
本番環境向けのデータ品質プラットフォームをお探しですか?Dingo SaaS のエンタープライズ版をお試しください!
✨ オープンソース版と比べて、SaaS では以下を利用できます。
- 🌐 Web UI - コーディング不要のビジュアル評価インターフェース
- 🔐 アクセス制御 - JWT + Google OAuth 2.0
- 📊 ビジュアルレポート - インタラクティブなグラフ、傾向分析、エクスポート機能
- 🔌 RESTful API - 既存システムとシームレスに連携
SaaS — ダッシュボード
SaaS — プレイグラウンド
SaaS — 評価結果
📝 SaaS コードを無料で入手する方法
審査期間:1〜5 営業日 | エンタープライズのデータガバナンスやチームコラボレーションに最適です
Dingo が選ばれる理由
🎯 本番環境向けの品質チェック - 事前学習データセットから RAG システムまで、高品質なデータで AI を支えます
🗄️ マルチソースデータ統合 - ローカルファイル、SQL データベース(PostgreSQL/MySQL/SQLite)、HuggingFace データセット、S3 ストレージにシームレスに接続できます
🔍 マルチフィールド評価 - フィールドごとに異なる品質ルールを並列で適用できます(例:isbn の ISBN 検証、title のテキスト品質チェック)
🤖 RAG システム評価 - 学術的な裏付けのある 5 つの指標を用いて、検索と生成の品質を包括的に評価します
🧠 LLM・ルール・エージェントのハイブリッド - 高速なヒューリスティックルール(組み込み 30 種類以上)と、LLM による詳細な評価を組み合わせます
🚀 柔軟な実行 - ローカルで素早く反復することも、Spark で数十億規模のデータセットに対応することもできます
📊 充実したレポート - GUI による可視化とフィールド単位の分析を備えた詳細な品質レポート
アーキテクチャ図

クイックスタート
インストール
# Core package (includes rule evaluation, LLM evaluation, MCP server, datasource support)
pip install dingo-python
# With HHEM hallucination detection model (requires transformers + torch)
pip install "dingo-python[hhem]"
# With retrieval benchmark evaluation (MTEB + pytrec-eval-terrier)
pip install "dingo-python[retrieval]"
# With all features (HHEM + Agent + Retrieval)
pip install "dingo-python[all]"
Dingo の使用例
1. LLM チャットデータを評価する
from dingo.config.input_args import EvaluatorLLMArgs
from dingo.io.input import Data
from dingo.model.llm.text_quality.llm_text_quality_v4 import LLMTextQualityV4
from dingo.model.rule.rule_common import RuleSpecialCharacter
data = Data(
data_id='123',
prompt="hello, introduce the world",
content="�I am 8 years old. ^I love apple because:"
)
def llm():
LLMTextQualityV4.dynamic_config = EvaluatorLLMArgs(
key='YOUR_API_KEY',
api_url='https://api.openai.com/v1/chat/completions',
model='gpt-4o',
)
res = LLMTextQualityV4.eval(data)
print(res)
def rule():
res = RuleSpecialCharacter().eval(data)
print(res)
rule()
2. データセットを評価する
from dingo.config import InputArgs
from dingo.exec import Executor
# Evaluate a dataset from Hugging Face
if __name__ == '__main__':
input_data = {
"input_path": "tatsu-lab/alpaca", # Dataset from Hugging Face
"dataset": {
"source": "hugging_face",
"format": "plaintext" # Format: plaintext
},
"executor": {
"result_save": {
"bad": True # Save evaluation results
}
},
"evaluator": [
{
"evals": [
{"name": "RuleColonEnd"},
{"name": "RuleSpecialCharacter"}
]
}
]
}
input_args = InputArgs(**input_data)
executor = Executor.exec_map["local"](input_args)
result = executor.execute()
print(result)
コマンドラインインターフェース
ルールセットを使って評価する
dingo eval --input .github/env/local_plaintext.json
LLM(例:GPT-4o)を使って評価する
dingo eval --input .github/env/local_json.json
MCP サーバー
Dingo には、AI エージェントとの連携に使える Model Context Protocol(MCP)サーバーが組み込まれています。
# Start MCP server (SSE transport, default port 8000)
dingo serve
# Custom port
dingo serve --port 9000
# stdio transport (for Claude Desktop)
dingo serve --transport stdio
詳細なセットアップ方法と Cursor/Claude Desktop との連携については、専用ドキュメントをご覧ください。
動画デモ
Dingo MCP をすぐに使い始められるよう、操作手順を紹介する動画を用意しました。
https://github.com/user-attachments/assets/aca26f4c-3f2e-445e-9ef9-9331c4d7a37b
この動画では、Cursor で Dingo MCP サーバーを使う方法をステップごとに紹介しています。
📚 データ品質指標
Dingo は、ルールベースの速度と LLM ベースの深度を組み合わせた、複数の観点にわたる100 種類以上の評価指標を提供します。
メトリクスのカテゴリ
| カテゴリ | 例 | ユースケース |
|---|---|---|
| 事前学習テキスト品質 | 完全性、有効性、類似性、安全性 | LLM の事前学習データのフィルタリング |
| SFT データ品質 | 誠実さ、有用性、無害性(3H) | 指示チューニングデータ |
| RAG 評価 | 忠実性、コンテキスト精度、回答の関連性 | RAG システムの評価 |
| ハルシネーション検出 | HHEM-2.1-Open、事実性チェック | 本番環境での AI の信頼性 |
| 分類 | トピックのカテゴリ分け、コンテンツのラベル付け | データの整理 |
| マルチモーダル | 画像とテキストの関連性、VLM 品質、OCR の視覚的評価 | 視覚言語データ |
| セキュリティ | PII 検出、Perspective API による有害性判定 | プライバシーと安全性 |
📊 メトリクスの完全なドキュメントを見る →
📖 RAG 評価ガイド → | 日本語版
🔍 ハルシネーション検出ガイド → | 日本語版
✅ 事実性評価ガイド → | 日本語版
👁️ VLM Render Judge ガイド → | 日本語版
ほとんどのメトリクスは、科学的な厳密性を確保するため、学術研究に基づいています。
メトリクスのクイック使用方法
llm_config = {
"model": "gpt-4o",
"key": "YOUR_API_KEY",
"api_url": "https://api.openai.com/v1/chat/completions"
}
input_data = {
"evaluator": [
{
"fields": {"content": "content"},
"evals": [
{"name": "RuleAbnormalChar"}, # Rule-based (fast)
{"name": "LLMTextQualityV5", "config": llm_config} # LLM-based (deep)
]
}
]
}
カスタマイズ:すべてのプロンプトは dingo/model/llm/ ディレクトリ内で定義されています(text_quality/、rag/、hhh/ など、カテゴリ別に整理されています)。ドメイン固有の要件に合わせて拡張または変更できます。
🎓 実践者向けの重要な概念
Dingo が本番環境に対応している理由
1. 複数フィールドの評価パイプライン
1 回の処理で、異なるフィールドに異なる品質チェックを適用できます。
"evaluator": [
{"fields": {"content": "isbn"}, "evals": [{"name": "RuleIsbn"}]},
{"fields": {"content": "title"}, "evals": [{"name": "RuleAbnormalChar"}]},
{"fields": {"content": "description"}, "evals": [{"name": "LLMTextQualityV5"}]}
]
重要な理由:フィールドごとに個別のスクリプトを作成せずに、データベーステーブルなどの構造化データを評価できます。
2. 大規模データセット向けのストリーム処理
SQL データソースでは、SQLAlchemy のサーバーサイドカーソルを使用します。
# Handles billions of rows without OOM
for data in dataset.get_data(): # Yields one row at a time
result = evaluator.eval(data)
重要な理由:中間ファイルにエクスポートせずに、本番データベースを処理できます。
3. メモリ内でのフィールド分離
RAG 評価では、異なるフィールドの組み合わせ間でコンテキストが混入するのを防ぎます。
outputs/
├── user_input,response,retrieved_contexts/ # Faithfulness group
└── user_input,response/ # Answer Relevancy group
重要な理由:複数のフィールドの組み合わせを評価する際に、メトリクスを正確に計算できます。
4. ルールと LLM のハイブリッド戦略
高速なルール(カバレッジ 100%)と、サンプリングした LLM チェック(カバレッジ 10%)を組み合わせます。
"evals": [
{"name": "RuleAbnormalChar"}, # Fast, runs on all data
{"name": "LLMTextQualityV5"} # Expensive, sample if needed
]
重要な理由:本番規模の評価において、コストとカバレッジのバランスを取れます。
5. 登録による拡張性
カスタムルール、プロンプト、モデルに対応する、シンプルなプラグインアーキテクチャです。
@Model.rule_register('QUALITY_BAD_CUSTOM', ['default'])
class MyCustomRule(BaseRule):
@classmethod
def eval(cls, input_data: Data) -> EvalDetail:
# Example: check if content is empty
if not input_data.content:
return EvalDetail(
metric=cls.__name__,
status=True, # Found an issue
label=[f'{cls.metric_type}.{cls.__name__}'],
reason=["Content is empty"]
)
return EvalDetail(
metric=cls.__name__,
status=False, # No issue found
label=['QUALITY_GOOD']
)
重要な理由:コードベースをフォークせずに、ドメイン固有の要件に対応できます。
🌟 主な機能
📊 複数ソースのデータ統合
多様なデータソース - データの保存場所に接続できます
✅ ローカルファイル:JSONL、CSV、TXT、Parquet
✅ SQL データベース:PostgreSQL、MySQL、SQLite、Oracle、SQL Server(ストリーム処理対応)
✅ クラウドストレージ:S3 および S3 互換ストレージ
✅ ML プラットフォーム:HuggingFace データセットとの直接統合
エンタープライズ対応の SQL サポート - 本番データベースとの統合
✅ 数十億件規模のデータセットにも対応する、メモリ効率の高いストリーミング
✅ コネクションプーリングとリソースの自動クリーンアップ
✅ 複雑な SQL クエリ(JOIN、WHERE、集計)
✅ SQLAlchemy による複数の方言への対応
複数フィールドの品質チェック - フィールドごとに異なるルールを適用
✅ 並列評価パイプライン(例:ISBN 検証とテキスト品質評価を同時に実行)
✅ フィールドのエイリアス設定とネストされたフィールドの抽出(user.profile.name)
✅ フィールドごとに独立した結果レポート
✅ 柔軟なデータ変換を可能にする ETL パイプラインアーキテクチャ
🤖 RAG システムの評価
学術研究に裏付けられた5つの指標 - RAGAS、DeepEval、TruLens の研究に基づいています
✅ 忠実性:回答とコンテキストの一貫性(ハルシネーションの検出)
✅ 回答の関連性:回答とクエリの適合性
✅ コンテキスト精度:検索の精度
✅ コンテキスト再現率:検索の再現率
✅ コンテキストの関連性:コンテキストとクエリの関連性
包括的なレポート - 統計を自動集計します
✅ 各指標の平均、最小値、最大値、標準偏差
✅ フィールド別の結果
✅ バッチ評価と単一評価のモード
🧠 ハイブリッド評価システム
ルールベース - 高速で決定論的、コスト効率に優れています
✅ 30以上の組み込みルール(テキスト品質、形式、PII 検出)
✅ 正規表現、ヒューリスティック、統計的チェック
✅ カスタムルールの登録
LLM ベース - 高度な意味理解
✅ OpenAI(GPT-4o、GPT-3.5)、DeepSeek、Kimi
✅ ローカルモデル(Llama3、Qwen)
✅ 視覚言語モデル(InternVL、Gemini)
✅ カスタムプロンプトの登録
エージェントベース - ツールを使ったマルチステップ推論
✅ ウェブ検索との連携(Tavily)
✅ 適応型コンテキスト収集
✅ 複数のソースに基づくファクト検証
✅ カスタムエージェントとツールの登録
拡張可能なアーキテクチャ
✅ プラグインベースのルール/プロンプト/モデル登録
✅ 関心事の明確な分離(エージェント、ツール、オーケストレーション)
✅ ドメイン固有のカスタマイズ
🚀 柔軟な実行と連携
複数のインターフェース
✅ 素早くチェックできる CLI
✅ 連携用の Python SDK
✅ IDE(Cursor など)向けの MCP(Model Context Protocol)サーバー
スケーラブルな実行
✅ 迅速なイテレーションに適したローカルエグゼキューター
✅ 分散処理用の Spark エグゼキューター
✅ 設定可能な並列実行数とバッチ処理
データソース
✅ ローカルファイル:JSONL、CSV、TXT、Parquet 形式
✅ Hugging Face:HF データセットハブとの直接連携
✅ S3 ストレージ:AWS S3 および S3 互換ストレージ
✅ SQL データベース:PostgreSQL、MySQL、SQLite、Oracle、SQL Server(大規模データ向けのストリーム処理)
モダリティ
✅ テキスト(チャット、ドキュメント、コード)
✅ 画像(VLM 対応)
✅ マルチモーダル(テキストと画像の一貫性)
📈 充実したレポートと可視化
マルチレベルレポート
✅ 全体スコアを含む概要 JSON
✅ フィールドレベルの内訳
✅ ルールごとの違反詳細
✅ 種類と名前の分布
GUI による可視化(Dingo SaaS 経由)
✅ インタラクティブなデータ探索に対応したウェブ UI
✅ トレンド分析を含むビジュアルレポート
✅ 異常の追跡
指標の集計
✅ 統計の自動計算(平均、最小値、最大値、標準偏差)
✅ フィールド別の指標
✅ 全体的な品質スコア
📖 ユーザーガイド
🔧 拡張性
Dingo は、ドメイン固有のカスタマイズに対応する、明確なプラグインアーキテクチャを採用しています。
カスタムルールの登録
from dingo.model import Model
from dingo.model.rule.base import BaseRule
from dingo.io import Data
from dingo.io.output.eval_detail import EvalDetail
@Model.rule_register('QUALITY_BAD_CUSTOM', ['default'])
class DomainSpecificRule(BaseRule):
"""Check domain-specific patterns"""
@classmethod
def eval(cls, input_data: Data) -> EvalDetail:
text = input_data.content
# Your custom logic
is_valid = your_validation_logic(text)
return EvalDetail(
metric=cls.__name__,
status=not is_valid, # False = good, True = bad
label=['QUALITY_GOOD' if is_valid else 'QUALITY_BAD_CUSTOM'],
reason=["Validation details..."]
)
カスタム LLM/プロンプトの登録
from dingo.model import Model
from dingo.model.llm.base_openai import BaseOpenAI
@Model.llm_register('custom_evaluator')
class CustomEvaluator(BaseOpenAI):
"""Custom LLM evaluator with specialized prompts"""
_metric_info = {
"metric_name": "CustomEvaluator",
"metric_type": "LLM-Based Quality",
"category": "Custom Category"
}
prompt = """Your custom prompt here..."""
例:
ツールを使用したエージェントベースの評価
Dingo は、複数ステップの推論や適応的なコンテキスト収集に外部ツールを使用できる、エージェントベースの評価器をサポートしています。実装パターンは 2 種類あります。
パターン 1:LangChain ベース(例:AgentFactCheck)
- フレームワーク主導で、自律的な複数ステップの推論を実行します
- ReAct パターンで LangChain 1.0 の
create_agentを使用します - 最適な用途:複雑な推論タスク、迅速なプロトタイピング
- コード量が少なく、宣言的です
パターン 2:カスタムワークフロー(例:AgentHallucination)
- 開発者主導で、ワークフローを明示的に制御します
- ツール呼び出しと LLM とのやり取りを手動で行います
- 最適な用途:既存の評価器の組み合わせ、ドメイン固有のワークフロー
- 完全な制御が可能で、動作が明示的です
どちらのパターンも同じ設定インターフェースを共有しており、ユーザーから見える動作は透過的です。
組み込みエージェント:
AgentFactCheck:検索を自律的に制御する、LangChain ベースのファクトチェックAgentHallucination:適応的なコンテキスト収集を行う、カスタムワークフローによるハルシネーション検出ArticleFactChecker:2 段階の論文ファクトチェック。検証可能な主張を抽出してから、ウェブ検索と Arxiv を使用してそれぞれを並列に検証します。並列実行数を設定できます
簡単な例:
from dingo.io import Data
from dingo.io.output.eval_detail import EvalDetail
from dingo.model import Model
from dingo.model.llm.agent.base_agent import BaseAgent
@Model.llm_register('MyAgent')
class MyAgent(BaseAgent):
"""Custom agent with tool support"""
available_tools = ["tavily_search", "my_custom_tool"]
max_iterations = 5
@classmethod
def eval(cls, input_data: Data) -> EvalDetail:
# Use tools for fact-checking
search_result = cls.execute_tool('tavily_search', query=input_data.content)
# Multi-step reasoning with LLM
result = cls.send_messages([...])
return EvalDetail(...)
エージェントパターンの選択と実装について詳しくは、エージェント開発ガイドをご覧ください。
設定例:
{
"evaluator": [{
"evals": [{
"name": "AgentHallucination",
"config": {
"key": "openai-api-key",
"model": "gpt-4",
"parameters": {
"agent_config": {
"max_iterations": 5,
"tools": {
"tavily_search": {"api_key": "tavily-key"}
}
}
}
}
}]
}]
}
詳細情報:
- エージェント開発ガイド - カスタムエージェントとツールの作成に関する包括的なガイド
- AgentHallucination の例 - 本番環境向けエージェントの例
- AgentFactCheck の例 - LangChain エージェントの例
- ArticleFactChecker の例 - 論文規模の 2 段階ファクト検証
⚙️ 実行モード
ローカル実行器(開発・小規模向け)
from dingo.config import InputArgs
from dingo.exec import Executor
input_args = InputArgs(**input_data)
executor = Executor.exec_map["local"](input_args)
result = executor.execute()
# Access results
summary = executor.get_summary() # Overall metrics
bad_data = executor.get_bad_info_list() # Quality issues
good_data = executor.get_good_info_list() # High-quality data
最適な用途:迅速な反復、デバッグ、10 万行未満のデータセット
Spark 実行器(本番環境・大規模向け)
from pyspark.sql import SparkSession
from dingo.exec import Executor
spark = SparkSession.builder.appName("Dingo").getOrCreate()
spark_rdd = spark.sparkContext.parallelize(your_data)
executor = Executor.exec_map["spark"](
input_args,
spark_session=spark,
spark_rdd=spark_rdd
)
result = executor.execute()
最適な用途:本番環境のパイプライン、分散処理、100 万行を超えるデータセット
検索ベンチマーク実行器
MTEB 標準の検索ベンチマーク(SciFact、SCIDOCS など)を使用して検索 API を評価します。指標には NDCG、Recall、MRR などがあります。
CLI:
pip install dingo-python[retrieval]
dingo eval-retrieval --backend agentic --tasks SciFact \
--api-url https://api.sciverse.space \
--api-token YOUR_TOKEN --limit 100 --max-workers 8
dingo eval-retrieval --backend meta_search --tasks SciFact \
--api-url https://api.sciverse.space \
--api-token YOUR_TOKEN --limit 100 --rate-limit 1.0 \
--freshness-boost MILD \
--filters-json '[{"field": "publication_published_year", "operator": "FILTER_OP_GTE", "value": 2010}]'
dingo eval-retrieval --backend google_scholar --tasks SciFact \
--api-token YOUR_SERPAPI_KEY --limit 100 --rate-limit 1.0
dingo eval-retrieval --backend openalex --tasks SciFact \
--api-token YOUR_OPENALEX_API_KEY --limit 100
dingo eval-retrieval --backend openalex --tasks SciFact \
--api-token YOUR_OPENALEX_API_KEY --limit 50 \
--search-type semantic --rate-limit 1.0 --max-workers 1
SDK:
from dingo.config import InputArgs
from dingo.exec import Executor
input_data = {
"input_path": "SciFact",
"output_path": "outputs/retrieval_eval",
"executor": {
"retrieval": {
"backend": "agentic",
"api_url": "https://api.sciverse.space",
"api_token": "YOUR_TOKEN",
"limit": 100,
"max_workers": 8,
}
},
}
input_args = InputArgs(**input_data)
executor = Executor.exec_map["retrieval"](input_args)
result = executor.execute()
print(result)
最適な用途:学術ベンチマークを使用した検索/情報検索 API の評価、情報検索バックエンドの比較
評価レポート
評価後、Dingo は以下を生成します。
- 概要レポート(
summary.json):全体の指標とスコア - 詳細レポート:各ルール違反に関する具体的な問題
レポートの説明:
- score:
num_good/total - type_ratio:タイプ数 / 合計。例:
QUALITY_BAD_COMPLETENESS/total
概要の例:
{
"task_id": "d6c922ec-981c-11ef-b723-7c10c9512fac",
"task_name": "dingo",
"eval_group": "default",
"input_path": "test/data/test_local_jsonl.jsonl",
"output_path": "outputs/d6c921ac-981c-11ef-b723-7c10c9512fac",
"create_time": "20241101_144510",
"score": 50.0,
"num_good": 1,
"num_bad": 1,
"total": 2,
"type_ratio": {
"content": {
"QUALITY_BAD_COMPLETENESS.RuleColonEnd": 0.5,
"QUALITY_BAD_RELEVANCE.RuleSpecialCharacter": 0.5
}
}
}
🚀 ロードマップと貢献
今後の計画
- 審判としてのエージェント - バイアスの低減と複雑な推論のためのマルチエージェント討論パターン
- SaaS プラットフォーム - API アクセスとダッシュボードを備えたホスト型評価サービス
- 音声・動画モダリティ - テキスト/画像以外への拡張
- 多様性指標 - 統計的な多様性評価
- リアルタイム監視 - 本番環境のパイプラインにおける継続的な品質チェック
制限事項
現在の組み込み検出ルールとモデル手法は、主に一般的なデータ品質の問題を対象としています。特別な評価ニーズには、検出ルールをカスタマイズすることをお勧めします。
謝辞
貢献
Dingo の改善と強化に取り組んでくださったすべての貢献者に感謝します。プロジェクトへの貢献方法については、貢献ガイドをご覧ください。
ライセンス
このプロジェクトは、Apache 2.0 オープンソースライセンスを採用しています。
このプロジェクトでは、言語検出などの一部の機能に fasttext を使用しています。fasttext は MIT ライセンスの下で提供されており、Apache 2.0 ライセンスと互換性があるため、さまざまな用途で柔軟に利用できます。
引用
このプロジェクトが役に立った場合は、ぜひ本ツールを引用してください。
@misc{dingo,
title={Dingo: A Comprehensive AI Data Quality Evaluation Tool for Large Models},
author={Dingo Contributors},
howpublished={\url{https://github.com/MigoXLab/dingo}},
year={2024}
}
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。