mcpField
D
Dingo MCP Server

Dingo MCP Server

本地服务
github.com/DataEvalAI 与智能体7635 天前更新

关于 Dingo MCP Server

Dingo MCP 服务把 Dingo 数据质量评估工具暴露给 AI Agent,可调用基于规则和基于 LLM 的评估能力,并列出规则与提示词。Dingo 面向 AI 数据、模型和应用质量评估,适合机器学习工程师和数据工程师。

主要功能

  1. 01调用基于规则的数据质量评估
  2. 02调用基于 LLM 的评估能力
  3. 03列出可用的规则与提示词
  4. 04支持 SSE 与 stdio 传输方式
  5. 05支持多种数据源接入

适用场景

  1. 01在 IDE 中让 Agent 检查训练数据质量
  2. 02通过 Agent 评估 RAG 系统的检索与生成质量

MCP 相关

Dingo MCP 服务作为 MCP 服务器运行,向 MCP 客户端提供数据质量评估相关的工具、规则和提示词列表。

配置

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

暂未收录安装方式

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

代码仓库

工具

还没有获取到工具列表

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

详细介绍

Dingo AI 数据质量评估工具徽标

pre-commit PyPI 版本 Python 版本 许可证 GitHub 星标 GitHub 复刻 GitHub 问题 MseeP.ai 安全评估徽章 向 DeepWiki 提问 信任评分 ClawHub 技能 MCP 排行榜

👋 欢迎加入我们的 Discord 和 微信

如果你喜欢 Dingo,请在 GitHub 上给我们点个 ⭐!
点击星标

简介

Dingo 是一款全面的 AI 数据、模型和应用质量评估工具,专为 ML 从业者、数据工程师和 AI 研究人员打造。它能帮助你系统地评估和提升训练数据、微调数据集以及生产环境 AI 系统的质量。


🚀 企业版 Dingo SaaS

需要生产级数据质量平台?试试 Dingo SaaS 企业版!

✨ 与开源版本相比,SaaS 提供:
  • 🌐 Web UI - 可视化评估界面,无需编写代码
  • 🔐 访问控制 - JWT + Google OAuth 2.0
  • 📊 可视化报告 - 交互式图表、趋势分析和导出功能
  • 🔌 RESTful API - 与现有系统无缝集成
SaaS — 控制面板 Dingo SaaS 控制面板
SaaS — Playground Dingo SaaS Playground
SaaS — 评估结果 Dingo SaaS 评估结果
📝 如何获取免费的 SaaS 代码

👉 申请访问 Dingo SaaS 仓库

审核时间:1-5 个工作日 | 适用于企业数据治理和团队协作


为什么选择 Dingo?

🎯 生产级质量检查 - 从预训练数据集到 RAG 系统,确保 AI 使用高质量数据

🗄️ 多源数据集成 - 无缝连接本地文件、SQL 数据库(PostgreSQL/MySQL/SQLite)、HuggingFace 数据集和 S3 存储

🔍 多字段评估 - 并行地为不同字段应用不同质量规则(例如,为 isbn 验证 ISBN,为 title 检查文本质量)

🤖 RAG 系统评估 - 使用 5 项基于学术研究的指标,全面评估检索和生成质量

🧠 LLM、规则与 Agent 混合评估 - 将快速启发式规则(内置 30+ 项)与基于 LLM 的深度评估结合起来

🚀 灵活执行 - 可在本地运行以快速迭代,也可借助 Spark 扩展至十亿级数据集

📊 丰富的报告 - 提供详细的质量报告、GUI 可视化和字段级洞察

架构图

Dingo 架构

快速开始

安装

# 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 内置 Model Context Protocol (MCP) 服务,可用于集成 AI Agent:

# 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 的集成说明,请参阅专门的文档:

English · 简体中文 · 日本語

视频演示

为帮助你快速上手 Dingo MCP,我们制作了视频指南:

https://github.com/user-attachments/assets/aca26f4c-3f2e-445e-9ef9-9331c4d7a37b

本视频逐步演示如何在 Cursor 中使用 Dingo MCP 服务。


📚 数据质量指标

Dingo 在多个维度提供 100+ 项评估指标,兼顾基于规则的速度与基于 LLM 的深度评估。

指标类别

类别示例用例
预训练文本质量完整性、有效性、相似度、安全性大模型预训练数据筛选
SFT 数据质量诚实、有帮助、无害(3H)指令微调数据
RAG 评估忠实度、上下文精确率、答案相关性RAG 系统评估
幻觉检测HHEM-2.1-Open、事实性检查生产环境中的 AI 可靠性
分类主题分类、内容标注数据整理
多模态图文相关性、VLM 质量、OCR 视觉评估视觉语言数据
安全性PII 检测、Perspective API 毒性检测隐私与安全

📊 查看完整指标文档 →
📖 RAG 评估指南 → | 中文版
🔍 幻觉检测指南 → | 中文版
✅ 事实性评估指南 → | 中文版
👁️ VLM 渲染评判指南 → | 中文版

大多数指标都有学术研究作为依据,以确保科学严谨性。

快速使用指标

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. 多字段评估流水线

在单次运行中对不同字段应用不同的质量检查:

"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. 规则与大模型混合策略

结合快速规则(覆盖率为 100%)与抽样大模型检查(覆盖率为 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 的研究
✅ 忠实度:答案与上下文的一致性(幻觉检测)
✅ 答案相关性:答案与查询的匹配程度
✅ 上下文精确率:检索精确率
✅ 上下文召回率:检索召回率
✅ 上下文相关性:上下文与查询的相关性

全面的报告 - 自动汇总统计数据
✅ 每项指标的平均值、最小值、最大值和标准差
✅ 按字段分组的结果
✅ 批量和单次评估模式

📖 查看 RAG 评估指南 →


🧠 混合评估系统

基于规则 - 快速、确定且经济高效
✅ 30 多项内置规则(文本质量、格式、PII 检测)
✅ 正则表达式、启发式方法、统计检查
✅ 自定义规则注册

基于 LLM - 深入的语义理解
✅ OpenAI(GPT-4o、GPT-3.5)、DeepSeek、Kimi
✅ 本地模型(Llama3、Qwen)
✅ 视觉语言模型(InternVL、Gemini)
✅ 自定义提示词注册

基于 Agent - 使用工具进行多步推理
✅ 集成网络搜索(Tavily)
✅ 自适应上下文收集
✅ 多源事实核验
✅ 自定义 Agent 和工具注册

可扩展架构
✅ 基于插件的规则/提示词/模型注册
✅ 清晰划分职责(Agent、工具、编排)
✅ 特定领域定制


🚀 灵活的执行与集成

多种接口
✅ 用于快速检查的 CLI
✅ 用于集成的 Python SDK
✅ 面向 IDE(Cursor 等)的 MCP(模型上下文协议)服务

可扩展的执行能力
✅ 用于快速迭代的本地执行器
✅ 用于分布式处理的 Spark 执行器
✅ 可配置的并发和批处理

数据源
✅ 本地文件:JSONL、CSV、TXT、Parquet 格式
✅ Hugging Face:直接集成 HF 数据集中心
✅ S3 存储:AWS S3 和兼容 S3 的存储
✅ SQL 数据库:PostgreSQL、MySQL、SQLite、Oracle、SQL Server(面向大规模数据的流式处理)

模态
✅ 文本(聊天、文档、代码)
✅ 图像(支持 VLM)
✅ 多模态(文本 + 图像一致性)


📈 丰富的报告与可视化

多层级报告
✅ 包含总体评分的摘要 JSON
✅ 字段级细分
✅ 各规则的违规详情
✅ 类型和名称分布

GUI 可视化(通过 Dingo SaaS)
✅ 支持交互式数据探索的 Web 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..."""

示例:

基于 Agent 的评估与工具

Dingo 支持基于 Agent 的评估器,可使用外部工具进行多步推理和自适应上下文收集。提供两种实现模式:

模式 1:基于 LangChain(例如 AgentFactCheck)

  • 由框架驱动,支持自主多步推理
  • 使用 LangChain 1.0 的 create_agent 和 ReAct 模式
  • 适用于:复杂推理任务、快速原型开发
  • 代码更少,声明式程度更高

模式 2:自定义工作流(例如 AgentHallucination)

  • 由开发者驱动,可显式控制工作流
  • 手动调用工具并与 LLM 交互
  • 适用于:组合现有评估器、特定领域的工作流
  • 全面掌控,行为明确

两种模式使用相同的配置接口,对用户完全透明。

内置 Agent:

  • AgentFactCheck:基于 LangChain 的事实核查,可自主控制搜索
  • AgentHallucination:通过自适应上下文收集进行幻觉检测的自定义工作流
  • ArticleFactChecker:两阶段文章事实核查——先提取可验证的主张,再使用网络搜索和 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(...)

有关如何选择和实现 Agent 模式的详细指南,请参阅 Agent 开发指南。

配置示例:

{
  "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"}
            }
          }
        }
      }
    }]
  }]
}

了解更多:

⚙️ 执行模式

本地执行器(开发与小规模场景)
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

适用场景:快速迭代、调试、数据集 < 100K 行

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()

适用场景:生产流水线、分布式处理、数据集 > 1M 行

检索基准测试执行器

使用 NDCG、Recall 和 MRR 等指标,根据 MTEB 标准检索基准(SciFact、SCIDOCS 等)评估搜索 API。

命令行:

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 会生成:

  1. 摘要报告(summary.json):总体指标和分数
  2. 详细报告:每项规则违规对应的具体问题

报告说明:

  1. score:num_good / total
  2. 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
        }
    }
}

🚀 路线图与贡献

未来计划

  • Agent-as-a-Judge - 通过多 Agent 辩论模式减少偏见并处理复杂推理
  • SaaS 平台 - 提供 API 访问和仪表板的托管评估服务
  • 音频与视频模态 - 扩展文本/图像以外的模态
  • 多样性指标 - 统计多样性评估
  • 实时监控 - 在生产流水线中持续进行质量检查

局限性

当前内置的检测规则和模型方法主要针对常见的数据质量问题。对于特殊评估需求,我们建议自定义检测规则。

致谢

贡献

感谢所有贡献者为改进和完善 Dingo 所付出的努力。有关如何为项目贡献代码,请参阅贡献指南。

许可证

本项目采用 Apache 2.0 开源许可证。

本项目使用 fasttext 实现语言检测等部分功能。fasttext 采用 MIT License,与我们的 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}
}

评论

支持 Markdown

第一次接触 MCP?

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

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