Apache Doris

officiel

Serveur MCP pour Apache Doris, un entrepôt de données en temps réel basé sur MPP.

Que pouvez-vous faire avec Apache Doris MCP ?

  • Interroger et diagnostiquer Doris — Demandez l’exécution de requêtes, les plans, l’analyse de profils ou le diagnostic de requêtes lentes via le domaine doris_query.
  • Explorer le catalogue et le schéma — Découvrez les bases de données, les tables et le contexte des tables avec les détails de taille grâce aux outils enfants doris_catalog.
  • Surveiller la santé du cluster — Inspectez les nœuds, les tâches, les métriques, la mémoire, le cache et l’état de compaction à l’aide du domaine doris_cluster.
  • Gérer les pipelines de données — Vérifiez l’état d’ingestion, les vues matérialisées, la fraîcheur et les dépendances via les outils doris_pipeline.
  • Rechercher et analyser les données — Exécutez des recherches textuelles, vectorielles ou hybrides et inspectez les index via le domaine doris_search.
  • Gouverner et auditer — Examinez la qualité des données, le stockage, la traçabilité, les journaux d’audit et les UDF avec les capacités doris_governance.

Documentation

Serveur MCP Apache Doris

English | 简体中文

Le serveur MCP Apache Doris expose des capacités Apache Doris en lecture seule aux hôtes MCP et aux agents IA via MCP 2026-07-28. La version 1.0 remplace une vaste surface d'outils plate par huit domaines stables et cinquante-cinq capacités enfants révélées progressivement, tout en gardant explicites la disponibilité d'exécution, l'autorisation, les schémas d'entrée, les schémas de sortie et le comportement en cas d'échec.

État de la version

La version du paquet est 1.0.0. La compatibilité du protocole MCP 2026-07-28 sur master est généralement disponible (GA) sur Streamable HTTP et stdio. Cette déclaration GA est limitée à la compatibilité du protocole ; le classificateur du paquet Python reste Beta, et les limites de déploiement documentées s'appliquent toujours.

Avant de mettre à niveau, lisez les notes de version 1.0, le guide de migration 1.0, et le registre généré 8 domaines/55 enfants. L'enregistrement détaillé de la version est Issue #189.

Architecture en un coup d'œil

MCP Host
  -> stdio or Streamable HTTP
  -> transport security and authentication
  -> MCP protocol validation and authorization
  -> stable domain discovery
  -> route-aware Doris capability detection
  -> exact child dispatch and read-only runtime
  -> request-specific Doris route and RBAC
  -> bounded, schema-validated result

Le mode hierarchical par défaut expose ces domaines :

DomaineEnfantsResponsabilité
doris_catalog5catalogues, bases de données, tables, contexte de table, taille
doris_query7requête, explain, profil, diagnostic, requêtes lentes, ADBC explicite
doris_cluster11nœuds, tâches, métriques, mémoire, cache, compactage, charges de travail
doris_pipeline5ingestion, vues matérialisées, fraîcheur, dépendances
doris_search4recherche texte/vectorielle/hybride, analyseurs, index, diagnostic
doris_governance8qualité, stockage, lignage, audit, UDF, mappage d'authentification
doris_lakehouse3catalogues externes, tables lakehouse, Variant
doris_semantic12ancrage Apache Ossie optionnel et consommation MetricFlow

Appelez un domaine avec {} pour découvrir ses enfants autorisés et ses schémas exacts. Appelez le même domaine à nouveau avec child_tool, arguments, et le manifest_version retourné. Les hôtes qui ne peuvent pas utiliser la divulgation progressive peuvent définir MCP_TOOL_EXPOSURE_MODE=flat avant le démarrage ; cela expose les mêmes 55 enfants sous des noms formels sans collision et ne restaure pas les alias antérieurs à la version 1.0.

Voir Architecture, Cycle de vie des requêtes, et Domaines d'outils.

Démarrage rapide

Prérequis :

  • Python 3.12 ou ultérieur ;
  • Apache Doris 2.0.0 ou ultérieur ;
  • accès réseau au point de terminaison MySQL Doris FE, normalement le port 9030.

Installez la version épinglée :

pip install doris-mcp-server==1.0.0

doris-mcp-server démarre le serveur. doris-mcp-client est un client séparé ; les deux commandes ne sont pas interchangeables.

Configurez une route Doris :

export DORIS_HOST=127.0.0.1
export DORIS_PORT=9030
export DORIS_USER=mcp_reader
export DORIS_PASSWORD='replace-me'
export DORIS_DATABASE=information_schema

Démarrez Streamable HTTP sur loopback :

doris-mcp-server \
  --transport http \
  --host 127.0.0.1 \
  --port 3000

Points de terminaison :

  • MCP : POST http://127.0.0.1:3000/mcp
  • MCP hérité (opt-in) : POST http://127.0.0.1:3000/mcp/legacy
  • vivacité : GET http://127.0.0.1:3000/live
  • disponibilité soutenue par Doris : GET http://127.0.0.1:3000/ready

Les hôtes limités au Streamable HTTP de l'ère handshake, y compris Dify 1.16.1 avec MCP 2025-06-18, doivent définir ENABLE_LEGACY_HTTP_ADAPTER=true et se connecter à /mcp/legacy. L'adaptateur ne modifie que la frontière du protocole ; il préserve les mêmes outils 1.0, l'autorisation, les portes de capacités et l'exécution en lecture seule.

Ou exécutez stdio pour un hôte local :

doris-mcp-server --transport stdio

Voir le Démarrage rapide complet et le guide d'intégration des hôtes.

Frontière de sécurité

  • Le catalogue 1.0 intégré est en lecture seule ; doris_admin est réservé et non enregistré.
  • Les jetons statiques, JWT, OAuth/OIDC externe et OAuth soutenu par Doris sont pris en charge dans des limites de configuration mutuellement validées.
  • La découverte de domaine et l'exécution des enfants utilisent des identifiants d'autorisation exacts.
  • Le RBAC Doris reste l'autorité finale pour les objets et données visibles.
  • La forme SQL, les identifiants, les paramètres, le délai d'expiration, les lignes, les octets et les schémas de résultats sont limités avant que les données ne quittent le serveur.
  • Les secrets et erreurs backend sont masqués des résultats publics et des journaux.
  • Le HTTP non-loopback exige une authentification, sauf si une dérogation de développement dangereuse explicite est activée.

Lisez le modèle de sécurité et d'autorisation et le guide d'accès fin Doris.

Frontière de fiabilité

Le serveur utilise des manifestes et erreurs déterministes, des curseurs signés à expiration, des instantanés de capacités sensibles à la route, un repli périmé borné, un routage de connexion spécifique à la requête, un basculement multi-FE, une séparation vivacité/disponibilité, une validation de schéma de sortie et une propagation de trace assainie. Les capacités non prises en charge ou mal configurées restent découvrables avec callable=false et échouent en mode fermé lorsqu'elles sont appelées.

Les limites actuelles incluent l'OAuth soutenu par Doris local au processus, l'ADBC exclusivement explicite désactivé par défaut et en échec fermé sur les routes liées aux jetons, l'ancrage Ossie en lecture seule optionnel, un sidecar compilateur MetricFlow optionnel dont le SQL doit s'exécuter via le runtime de requête MCP borné, et la livraison de lignage natif au mieux. Voir Fiabilité et limites.

Documentation

Le README racine est intentionnellement un point d'entrée. Le système de documentation bilingue est indexé à :

Guides principaux :

Développement

git clone https://github.com/apache/doris-mcp-server.git
cd doris-mcp-server
uv sync --group dev
uv run pytest

Les artefacts générés doivent rester synchronisés :

uv run python generate_tool_catalog.py --check
uv lock --check

Voir Contribution et vérification.

Licence

Licence Apache 2.0. Voir LICENSE.txt et NOTICE.