Apache Doris

आधिकारिक

Apache Doris के लिए MCP सर्वर, जो MPP-आधारित रीयल-टाइम डेटा वेयरहाउस है।

Apache Doris MCP के साथ आप क्या कर सकते हैं?

  • SQL क्वेरी चलाएँ — AI से अपने Doris डेटाबेस पर exec_query का उपयोग करके SQL स्टेटमेंट निष्पादित करने के लिए कहें, वैकल्पिक रूप से कैटलॉग, डेटाबेस या पंक्ति सीमा निर्दिष्ट करें।
  • डेटाबेस मेटाडेटा एक्सप्लोर करेंget_catalog_list, get_db_list और get_db_table_list के साथ कैटलॉग, डेटाबेस और टेबल सूचीबद्ध करें, फिर get_table_schema, get_table_indexes, get_table_comment और get_table_column_comments के माध्यम से स्कीमा, इंडेक्स और टिप्पणियों का निरीक्षण करें।
  • क्वेरी प्रदर्शन का विश्लेषण करें — धीमी या जटिल क्वेरी का निदान करने के लिए get_sql_explain और get_sql_profile के साथ निष्पादन योजनाएँ और प्रोफाइल प्राप्त करें।
  • क्लस्टर स्वास्थ्य की निगरानी करेंget_realtime_memory_stats, get_historical_memory_stats, get_monitoring_metrics_info और get_monitoring_metrics_data का उपयोग करके रीयल-टाइम और ऐतिहासिक मेमोरी सांख्यिकी, मॉनिटरिंग मेट्रिक्स परिभाषाएँ और वास्तविक नोड मेट्रिक्स प्राप्त करें।
  • ऑडिट और एक्सेस पैटर्न का निरीक्षण करेंget_recent_audit_logs के साथ हाल के ऑडिट लॉग की समीक्षा करें और analyze_data_access_patterns के माध्यम से उपयोगकर्ता एक्सेस व्यवहार का विश्लेषण करें।
  • Arrow Flight SQL के माध्यम से उच्च-प्रदर्शन क्वेरी चलाएँexec_adbc_query के साथ बड़े-परिणाम वाली क्वेरी निष्पादित करें और get_adbc_connection_info के साथ ADBC कनेक्शन स्थिति की जाँच करें।

दस्तावेज़

Doris MCP सर्वर

Doris MCP (मॉडल कॉन्टेक्स्ट प्रोटोकॉल) सर्वर Python और FastAPI से निर्मित एक बैकएंड सेवा है। यह MCP को कार्यान्वित करता है, जिससे क्लाइंट परिभाषित "टूल्स" के माध्यम से इसके साथ इंटरैक्ट कर सकते हैं। यह मुख्य रूप से Apache Doris डेटाबेस से जुड़ने के लिए डिज़ाइन किया गया है, जो संभावित रूप से प्राकृतिक भाषा प्रश्नों को SQL (NL2SQL) में बदलने, प्रश्न निष्पादित करने और मेटाडेटा प्रबंधन और विश्लेषण जैसे कार्यों के लिए बड़े भाषा मॉडल (LLM) का लाभ उठाता है।

🚀 v0.6.0 में नया क्या है

  • 🔐 एंटरप्राइज़ प्रमाणीकरण प्रणाली: क्रांतिकारी टोकन-बाउंड डेटाबेस कॉन्फ़िगरेशन जिसमें व्यापक टोकन, JWT और OAuth प्रमाणीकरण समर्थन है, जो सुरक्षित बहु-किरायेदार पहुँच को सक्षम करता है जिसमें सूक्ष्म नियंत्रण स्विच और एंटरप्राइज़-ग्रेड सुरक्षा डिफ़ॉल्ट हैं
  • ⚡ तत्काल डेटाबेस सत्यापन: कनेक्शन के समय वास्तविक समय डेटाबेस कॉन्फ़िगरेशन सत्यापन, प्रश्न-समय अवरोधन को समाप्त करता है और अमान्य कॉन्फ़िगरेशन के लिए तत्काल प्रतिक्रिया प्रदान करता है - देर-चरण कनेक्शन विफलताओं का 100% उन्मूलन प्राप्त करता है
  • 🔄 हॉट रीलोड कॉन्फ़िगरेशन प्रबंधन: शून्य-डाउनटाइम कॉन्फ़िगरेशन अपडेट tokens.json की बुद्धिमान हॉट रीलोडिंग, स्वचालित टोकन पुनर्सत्यापन और रोलबैक तंत्र के साथ व्यापक त्रुटि प्रबंधन के साथ
  • 🏗️ उन्नत कनेक्शन आर्किटेक्चर: सत्र कैशिंग और कनेक्शन पूल अनुकूलन कनेक्शन ओवरहेड में 60% की कमी, बुद्धिमान पूल पुनर्निर्माण और स्वचालित संसाधन प्रबंधन के साथ
  • 🌐 बहु-कार्यकर्ता मापनीयता: सच्ची क्षैतिज स्केलिंग स्टेटलेस बहु-कार्यकर्ता आर्किटेक्चर, कुशल लोड वितरण और एंटरप्राइज़-ग्रेड समवर्ती प्रसंस्करण क्षमताओं के साथ
  • 🔒 उन्नत सुरक्षा ढाँचा: व्यापक पहुँच नियंत्रण और SQL सुरक्षा सत्यापन तत्काल सत्यापन, भूमिका-आधारित अनुमतियाँ और उन्नत इंजेक्शन पहचान पैटर्न के साथ
  • 🛠️ एकीकृत कॉन्फ़िगरेशन प्रणाली: सुव्यवस्थित कॉन्फ़िगरेशन प्रबंधन उचित कमांड-लाइन पूर्वता, Docker संगतता सुधार और क्रॉस-प्लेटफ़ॉर्म परिनियोजन समर्थन के साथ
  • 📊 टोकन प्रबंधन डैशबोर्ड: पूर्ण टोकन जीवनचक्र प्रबंधन निर्माण, निरसन, सांख्यिकी और एंटरप्राइज़ टोकन शासन के लिए व्यापक ऑडिट ट्रेल्स के साथ
  • 🌐 वेब-आधारित प्रबंधन इंटरफ़ेस: सुरक्षित केवल-लोकलहोस्ट टोकन प्रशासन सहज डैशबोर्ड, डेटाबेस बाइंडिंग कॉन्फ़िगरेशन, वास्तविक समय संचालन और एंटरप्राइज़-ग्रेड पहुँच नियंत्रण के साथ

🚀 प्रमुख मील का पत्थर: v0.6.0 प्लेटफ़ॉर्म को उत्पादन-तैयार एंटरप्राइज़ प्रमाणीकरण और डेटाबेस प्रबंधन प्रणाली के रूप में स्थापित करता है जिसमें शून्य-डाउनटाइम संचालन (हॉट रीलोड + तत्काल सत्यापन + बहु-कार्यकर्ता स्केलिंग), उन्नत सुरक्षा नियंत्रण और व्यापक टोकन-बाउंड डेटाबेस कॉन्फ़िगरेशन है - जो एंटरप्राइज़ डेटा प्लेटफ़ॉर्म क्षमताओं में एक मौलिक उन्नति का प्रतिनिधित्व करता है।

v0.5.1 से और क्या शामिल है

  • 🔥 महत्वपूर्ण at_eof कनेक्शन सुधार: बुद्धिमान स्वास्थ्य निगरानी और स्व-उपचार पुनर्प्राप्ति के साथ कनेक्शन पूल त्रुटियों का पूर्ण उन्मूलन
  • 🔧 एंटरप्राइज़ लॉगिंग प्रणाली: स्वचालित सफाई और मिलीसेकंड सटीकता टाइमस्टैम्प के साथ स्तर-आधारित फ़ाइल पृथक्करण
  • 📊 उन्नत डेटा विश्लेषण सूट: गुणवत्ता विश्लेषण, वंश ट्रैकिंग और प्रदर्शन निगरानी सहित 7 एंटरप्राइज़-ग्रेड डेटा शासन उपकरण
  • 🏃‍♂️ उच्च-प्रदर्शन ADBC एकीकरण: बड़े डेटासेट के लिए 3-10x प्रदर्शन सुधार के साथ Apache Arrow Flight SQL समर्थन
  • ⚙️ उन्नत कॉन्फ़िगरेशन प्रबंधन: बुद्धिमान पैरामीटर सत्यापन के साथ पूर्ण ADBC कॉन्फ़िगरेशन प्रणाली

मुख्य विशेषताएँ

  • MCP प्रोटोकॉल कार्यान्वयन: मानक MCP इंटरफ़ेस प्रदान करता है, टूल कॉल, संसाधन प्रबंधन और प्रॉम्प्ट इंटरैक्शन का समर्थन करता है।
  • स्ट्रीमेबल HTTP संचार: एकीकृत HTTP एंडपॉइंट जो इष्टतम प्रदर्शन और विश्वसनीयता के लिए अनुरोध/प्रतिक्रिया और स्ट्रीमिंग संचार दोनों का समर्थन करता है।
  • Stdio संचार: Cursor जैसे MCP क्लाइंट के साथ सीधे एकीकरण के लिए मानक इनपुट/आउटपुट मोड।
  • एंटरप्राइज़-ग्रेड आर्किटेक्चर: व्यापक कार्यक्षमता के साथ मॉड्यूलर डिज़ाइन:
    • टूल्स मैनेजर: एकीकृत इंटरफ़ेस के साथ केंद्रीकृत टूल पंजीकरण और रूटिंग (doris_mcp_server/tools/tools_manager.py)
    • उन्नत निगरानी टूल्स मॉड्यूल: उन्नत मेमोरी ट्रैकिंग, मेट्रिक्स संग्रह और मॉड्यूलर, विस्तारणीय डिज़ाइन के साथ लचीली BE नोड खोज
    • प्रश्न सूचना टूल्स: कॉन्फ़िगर करने योग्य सामग्री ट्रंकेशन, LLM अटैचमेंट के लिए फ़ाइल निर्यात और उन्नत प्रश्न विश्लेषण के साथ उन्नत SQL व्याख्या और प्रोफाइलिंग
    • संसाधन प्रबंधक: संसाधन प्रबंधन और मेटाडेटा एक्सपोज़र (doris_mcp_server/tools/resources_manager.py)
    • प्रॉम्प्ट मैनेजर: डेटा विश्लेषण के लिए बुद्धिमान प्रॉम्प्ट टेम्पलेट (doris_mcp_server/tools/prompts_manager.py)
  • उन्नत डेटाबेस सुविधाएँ:
    • प्रश्न निष्पादन: उन्नत कैशिंग और अनुकूलन, उन्नत कनेक्शन स्थिरता और स्वचालित पुनर्प्रयास तंत्र के साथ उच्च-प्रदर्शन SQL निष्पादन (doris_mcp_server/utils/query_executor.py)
    • सुरक्षा प्रबंधन: कॉन्फ़िगर करने योग्य अवरुद्ध कीवर्ड, SQL इंजेक्शन सुरक्षा, डेटा मास्किंग और एकीकृत सुरक्षा कॉन्फ़िगरेशन प्रबंधन के साथ व्यापक SQL सुरक्षा सत्यापन (doris_mcp_server/utils/security.py)
    • मेटाडेटा निष्कर्षण: कैटलॉग फेडरेशन समर्थन के साथ व्यापक डेटाबेस मेटाडेटा (doris_mcp_server/utils/schema_extractor.py)
    • प्रदर्शन विश्लेषण: उन्नत स्तंभ विश्लेषण, प्रदर्शन निगरानी और डेटा विश्लेषण उपकरण (doris_mcp_server/utils/analysis_tools.py)
  • कैटलॉग फेडरेशन समर्थन: बहु-कैटलॉग वातावरण (आंतरिक Doris तालिकाएँ और Hive, MySQL, आदि जैसे बाहरी डेटा स्रोत) के लिए पूर्ण समर्थन
  • एंटरप्राइज़ सुरक्षा: प्रमाणीकरण, प्राधिकरण, SQL इंजेक्शन सुरक्षा और पर्यावरण चर कॉन्फ़िगरेशन समर्थन के साथ डेटा मास्किंग क्षमताओं के साथ व्यापक सुरक्षा ढाँचा
  • वेब-आधारित टोकन प्रबंधन: डेटाबेस बाइंडिंग, वास्तविक समय सांख्यिकी और एंटरप्राइज़-ग्रेड पहुँच नियंत्रण के साथ पूर्ण टोकन जीवनचक्र प्रबंधन के लिए सुरक्षित केवल-लोकलहोस्ट इंटरफ़ेस (doris_mcp_server/auth/token_handlers.py)
  • एकीकृत कॉन्फ़िगरेशन ढाँचा: config.py के माध्यम से केंद्रीकृत कॉन्फ़िगरेशन प्रबंधन जिसमें व्यापक सत्यापन, मानकीकृत पैरामीटर नामकरण और information_schema पर स्वचालित फ़ॉलबैक के साथ स्मार्ट डिफ़ॉल्ट डेटाबेस हैंडलिंग है

सिस्टम आवश्यकताएँ

  • Python: 3.12+
  • डेटाबेस: Apache Doris कनेक्शन विवरण (होस्ट, पोर्ट, उपयोगकर्ता, पासवर्ड, डेटाबेस)

🚀 त्वरित शुरुआत

PyPI से स्थापना

# Install the latest version
pip install doris-mcp-server

# Install specific version
pip install doris-mcp-server==0.6.0

💡 कमांड संगतता: स्थापना के बाद, पश्चगामी संगतता के लिए doris-mcp-server दोनों कमांड उपलब्ध हैं। आप किसी भी कमांड का परस्पर उपयोग कर सकते हैं।

स्ट्रीमेबल HTTP मोड प्रारंभ करें (वेब सेवा)

इष्टतम प्रदर्शन और विश्वसनीयता प्रदान करने वाला प्राथमिक संचार मोड:

# Full configuration with database connection
doris-mcp-server \
    --transport http \
    --host 0.0.0.0 \
    --port 3000 \
    --db-host 127.0.0.1 \
    --db-port 9030 \
    --db-user root \
    --db-password your_password 

Stdio मोड प्रारंभ करें (Cursor और अन्य MCP क्लाइंट के लिए)

MCP क्लाइंट के साथ सीधे एकीकरण के लिए मानक इनपुट/आउटपुट मोड:

# For direct integration with MCP clients like Cursor
doris-mcp-server --transport stdio

🌐 टोकन प्रबंधन इंटरफ़ेस (v0.6.0 में नया)

एंटरप्राइज़-ग्रेड टोकन प्रशासन के लिए वेब-आधारित टोकन प्रबंधन डैशबोर्ड तक पहुँचें:

सुरक्षित पहुँच आवश्यकताएँ

  • केवल लोकलहोस्ट पहुँच: अधिकतम सुरक्षा के लिए इंटरफ़ेस 127.0.0.1 और ::1 तक सीमित
  • व्यवस्थापक प्रमाणीकरण: पहुँच के लिए TOKEN_MANAGEMENT_ADMIN_TOKEN आवश्यक है
  • कॉन्फ़िगरेशन पूर्वापेक्षाएँ:
    # Required environment variables
    ENABLE_HTTP_TOKEN_MANAGEMENT=true
    ENABLE_TOKEN_AUTH=true
    TOKEN_MANAGEMENT_ADMIN_TOKEN=your_secure_admin_token
    TOKEN_MANAGEMENT_ALLOWED_IPS=127.0.0.1,::1
    

इंटरफ़ेस पहुँच

# Access the token management interface
http://localhost:3000/token/management?admin_token=your_secure_admin_token

उपलब्ध संचालन

  • 📊 टोकन सांख्यिकी: सक्रिय, समाप्त और कुल टोकन का वास्तविक समय अवलोकन
  • ➕ टोकन बनाएँ:
    • मूल जानकारी (आईडी, विवरण, समाप्ति)
    • डेटाबेस बाइंडिंग (होस्ट, पोर्ट, उपयोगकर्ता, पासवर्ड, डेटाबेस)
    • कस्टम टोकन मान या स्वतः-उत्पन्न सुरक्षित टोकन
  • 📋 टोकन प्रबंधन:
    • डेटाबेस बाइंडिंग स्थिति के साथ सभी टोकन सूचीबद्ध करें
    • एक-क्लिक टोकन निरसन
    • स्वचालित समाप्त टोकन सफाई
  • 🔒 एंटरप्राइज़ सुरक्षा:
    • सभी संचालनों के लिए व्यवस्थापक प्रमाणीकरण आवश्यक है
    • वास्तविक समय IP सत्यापन
    • पूर्ण ऑडिट लॉगिंग
    • tokens.json में स्वचालित स्थायित्व

🔐 सुरक्षा नोट: इंटरफ़ेस केवल लोकलहोस्ट प्रशासन के लिए डिज़ाइन किया गया है। इसे दूरस्थ रूप से एक्सेस नहीं किया जा सकता, जो टोकन प्रबंधन संचालन के लिए अधिकतम सुरक्षा सुनिश्चित करता है।

स्थापना सत्यापित करें

# Check installation
doris-mcp-server --help

# Test HTTP mode (in another terminal)
curl http://localhost:3000/health

पर्यावरण चर (वैकल्पिक)

कमांड-लाइन तर्कों के बजाय, आप पर्यावरण चर का उपयोग कर सकते हैं:

# Basic Database Configuration
export DORIS_HOST="127.0.0.1"
export DORIS_PORT="9030"
export DORIS_USER="root"
export DORIS_PASSWORD="your_password"

# Token Management Interface (Security-Critical)
export ENABLE_HTTP_TOKEN_MANAGEMENT=true
export ENABLE_TOKEN_AUTH=true
export TOKEN_MANAGEMENT_ADMIN_TOKEN="your_secure_admin_token"
export TOKEN_MANAGEMENT_ALLOWED_IPS="127.0.0.1,::1"

# Then start with simplified command
doris-mcp-server --transport http --host 0.0.0.0 --port 3000

कमांड लाइन तर्क

doris-mcp-server कमांड निम्नलिखित तर्कों का समर्थन करता है:

तर्कविवरणडिफ़ॉल्टआवश्यक
--transportपरिवहन मोड: http या stdiohttpनहीं
--hostHTTP सर्वर होस्ट (केवल HTTP मोड)0.0.0.0नहीं
--portHTTP सर्वर पोर्ट (केवल HTTP मोड)3000नहीं
--db-hostDoris डेटाबेस होस्टlocalhostनहीं
--db-portDoris डेटाबेस पोर्ट9030नहीं
--db-userDoris डेटाबेस उपयोगकर्ता नामrootनहीं
--db-passwordDoris डेटाबेस पासवर्ड-हाँ (जब तक env में न हो)

विकास सेटअप

उन डेवलपर्स के लिए जो स्रोत से निर्माण करना चाहते हैं:

1. रिपॉजिटरी क्लोन करें

# Replace with the actual repository URL if different
git clone https://github.com/apache/doris-mcp-server.git
cd doris-mcp-server

2. निर्भरताएँ स्थापित करें

pip install -r requirements.txt

3. पर्यावरण चर कॉन्फ़िगर करें

.env.example फ़ाइल को .env में कॉपी करें और अपने वातावरण के अनुसार सेटिंग्स संशोधित करें:

cp .env.example .env

मुख्य पर्यावरण चर:

  • डेटाबेस कनेक्शन:
    • DORIS_HOST: डेटाबेस होस्टनाम (डिफ़ॉल्ट: localhost)
    • DORIS_PORT: डेटाबेस पोर्ट (डिफ़ॉल्ट: 9030)
    • DORIS_USER: डेटाबेस उपयोगकर्ता नाम (डिफ़ॉल्ट: root)
    • DORIS_PASSWORD: डेटाबेस पासवर्ड
    • DORIS_DATABASE: डिफ़ॉल्ट डेटाबेस नाम (डिफ़ॉल्ट: information_schema)
    • DORIS_MIN_CONNECTIONS: न्यूनतम कनेक्शन पूल आकार (डिफ़ॉल्ट: 5)
    • DORIS_MAX_CONNECTIONS: अधिकतम कनेक्शन पूल आकार (डिफ़ॉल्ट: 20)
    • DORIS_BE_HOSTS: निगरानी के लिए BE नोड्स (अल्पविराम से अलग, वैकल्पिक - खाली होने पर SHOW BACKENDS के माध्यम से स्वतः-खोज)
    • DORIS_BE_WEBSERVER_PORT: निगरानी उपकरणों के लिए BE वेबसर्वर पोर्ट (डिफ़ॉल्ट: 8040)
    • FE_ARROW_FLIGHT_SQL_PORT: ADBC के लिए फ्रंटएंड Arrow Flight SQL पोर्ट (v0.5.0 में नया)
    • BE_ARROW_FLIGHT_SQL_PORT: ADBC के लिए बैकएंड Arrow Flight SQL पोर्ट (v0.5.0 में नया)
  • प्रमाणीकरण कॉन्फ़िगरेशन (v0.6.0 में उन्नत):
    • ENABLE_TOKEN_AUTH: टोकन-आधारित प्रमाणीकरण सक्षम करें (डिफ़ॉल्ट: false)
    • ENABLE_JWT_AUTH: JWT प्रमाणीकरण सक्षम करें (डिफ़ॉल्ट: false)
    • ENABLE_OAUTH_AUTH: OAuth प्रमाणीकरण सक्षम करें (डिफ़ॉल्ट: false)
    • ENABLE_DORIS_OAUTH_AUTH: Doris-समर्थित OAuth प्रमाणीकरण सक्षम करें (डिफ़ॉल्ट: false)
    • DORIS_OAUTH_BASE_URL: Doris-समर्थित OAuth खोज और टोकन एंडपॉइंट द्वारा उपयोग किया जाने वाला सार्वजनिक आधार URL
    • TOKEN_FILE_PATH: टोकन प्रबंधन के लिए tokens.json फ़ाइल का पथ (डिफ़ॉल्ट: tokens.json)
    • TOKEN_HOT_RELOAD: टोकन कॉन्फ़िगरेशन की हॉट रीलोडिंग सक्षम करें (डिफ़ॉल्ट: true)
    • DEFAULT_ADMIN_TOKEN: डिफ़ॉल्ट व्यवस्थापक टोकन (env के माध्यम से अनुकूलन योग्य)
    • DEFAULT_ANALYST_TOKEN: डिफ़ॉल्ट विश्लेषक टोकन (env के माध्यम से अनुकूलन योग्य)
    • DEFAULT_READONLY_TOKEN: डिफ़ॉल्ट केवल-पठन टोकन (env के माध्यम से अनुकूलन योग्य)
  • विरासत सुरक्षा कॉन्फ़िगरेशन:
    • AUTH_TYPE: विरासत प्रमाणीकरण प्रकार (token/basic/oauth, पदावनत - अलग-अलग स्विच का उपयोग करें)
    • TOKEN_SECRET: विरासत टोकन गुप्त कुंजी (इसके बजाय टोकन-आधारित प्रमाणीकरण का उपयोग करें)
    • ENABLE_SECURITY_CHECK: SQL सुरक्षा सत्यापन सक्षम/अक्षम करें (डिफ़ॉल्ट: true)
    • BLOCKED_KEYWORDS: अवरुद्ध SQL कीवर्ड की अल्पविराम से अलग सूची
    • ENABLE_MASKING: डेटा मास्किंग सक्षम करें (डिफ़ॉल्ट: true)
    • MAX_RESULT_ROWS: अधिकतम परिणाम पंक्तियाँ (डिफ़ॉल्ट: 10000)
  • ADBC कॉन्फ़िगरेशन (v0.5.0 में नया):
    • ADBC_DEFAULT_MAX_ROWS: ADBC प्रश्नों के लिए डिफ़ॉल्ट अधिकतम पंक्तियाँ (डिफ़ॉल्ट: 100000)
    • ADBC_DEFAULT_TIMEOUT: सेकंड में डिफ़ॉल्ट ADBC क्वेरी टाइमआउट (डिफ़ॉल्ट: 60)
    • ADBC_DEFAULT_RETURN_FORMAT: डिफ़ॉल्ट रिटर्न प्रारूप - arrow/pandas/dict (डिफ़ॉल्ट: arrow)
    • ADBC_CONNECTION_TIMEOUT: सेकंड में ADBC कनेक्शन टाइमआउट (डिफ़ॉल्ट: 30)
    • ADBC_ENABLED: ADBC उपकरण सक्षम/अक्षम करें (डिफ़ॉल्ट: true)
  • प्रदर्शन कॉन्फ़िगरेशन:
    • ENABLE_QUERY_CACHE: क्वेरी कैशिंग सक्षम करें (डिफ़ॉल्ट: true)
    • CACHE_TTL: सेकंड में कैश जीवन-काल (डिफ़ॉल्ट: 300)
    • MAX_CONCURRENT_QUERIES: अधिकतम समवर्ती प्रश्न (डिफ़ॉल्ट: 50)
    • MAX_RESPONSE_CONTENT_SIZE: LLM संगतता के लिए अधिकतम प्रतिक्रिया सामग्री आकार (डिफ़ॉल्ट: 4096, v0.4.0 में नया)
  • उन्नत लॉगिंग कॉन्फ़िगरेशन (v0.5.0 में बेहतर):
    • LOG_LEVEL: लॉग स्तर (DEBUG/INFO/WARNING/ERROR, डिफ़ॉल्ट: INFO)
    • LOG_FILE_PATH: लॉग फ़ाइल पथ (स्तर द्वारा स्वचालित रूप से व्यवस्थित)
    • ENABLE_AUDIT: ऑडिट लॉगिंग सक्षम करें (डिफ़ॉल्ट: true)
    • ENABLE_LOG_CLEANUP: स्वचालित लॉग सफाई सक्षम करें (डिफ़ॉल्ट: true, v0.5.0 में उन्नत)
    • LOG_MAX_AGE_DAYS: दिनों में लॉग फ़ाइलों की अधिकतम आयु (डिफ़ॉल्ट: 30, v0.5.0 में उन्नत)
    • LOG_CLEANUP_INTERVAL_HOURS: घंटों में लॉग सफाई जाँच अंतराल (डिफ़ॉल्ट: 24, v0.5.0 में उन्नत)
    • v0.5.0 में नई सुविधाएँ:
      • स्तर-आधारित फ़ाइल पृथक्करण: debug.log, info.log, warning.log, error.log, critical.log में स्वचालित पृथक्करण
      • टाइमस्टैम्प्ड प्रारूप: मिलीसेकंड सटीकता और उचित संरेखण के साथ उन्नत स्वरूपण
      • पृष्ठभूमि सफाई अनुसूचक: विन्यास योग्य अवधारण नीतियों के साथ स्वचालित सफाई
      • ऑडिट ट्रेल: अलग अवधारण प्रबंधन के साथ समर्पित audit.log
      • प्रदर्शन अनुकूलित: रोटेशन समर्थन के साथ न्यूनतम ओवरहेड एसिंक्रोनस लॉगिंग

उपलब्ध MCP उपकरण

निम्न तालिका MCP क्लाइंट के माध्यम से आह्वान के लिए वर्तमान में उपलब्ध मुख्य उपकरणों को सूचीबद्ध करती है:

उपकरण का नामविवरणपैरामीटर
exec_querySQL क्वेरी निष्पादित करें और परिणाम लौटाएँ।sql (string, आवश्यक), db_name (string, वैकल्पिक), catalog_name (string, वैकल्पिक), max_rows (integer, वैकल्पिक), timeout (integer, वैकल्पिक)
get_table_schemaविस्तृत तालिका संरचना जानकारी प्राप्त करें।table_name (string, आवश्यक), db_name (string, वैकल्पिक), catalog_name (string, वैकल्पिक)
get_db_table_listनिर्दिष्ट डेटाबेस में सभी तालिका नामों की सूची प्राप्त करें।db_name (string, वैकल्पिक), catalog_name (string, वैकल्पिक)
get_db_listसभी डेटाबेस नामों की सूची प्राप्त करें।catalog_name (string, वैकल्पिक)
get_table_commentतालिका टिप्पणी जानकारी प्राप्त करें।table_name (string, आवश्यक), db_name (string, वैकल्पिक), catalog_name (string, वैकल्पिक)
get_table_column_commentsतालिका के सभी स्तंभों के लिए टिप्पणी जानकारी प्राप्त करें।table_name (string, आवश्यक), db_name (string, वैकल्पिक), catalog_name (string, वैकल्पिक)
get_table_indexesनिर्दिष्ट तालिका के लिए अनुक्रमणिका जानकारी प्राप्त करें।table_name (string, आवश्यक), db_name (string, वैकल्पिक), catalog_name (string, वैकल्पिक)
get_recent_audit_logsहाल की अवधि के लिए ऑडिट लॉग रिकॉर्ड प्राप्त करें।days (integer, वैकल्पिक), limit (integer, वैकल्पिक)
get_catalog_listसभी कैटलॉग नामों की सूची प्राप्त करें।random_string (string, आवश्यक)
get_sql_explainLLM विश्लेषण के लिए विन्यास योग्य सामग्री कटाव और फ़ाइल निर्यात के साथ SQL निष्पादन योजना प्राप्त करें।sql (string, आवश्यक), verbose (boolean, वैकल्पिक), db_name (string, वैकल्पिक), catalog_name (string, वैकल्पिक)
get_sql_profileLLM अनुकूलन कार्यप्रवाह के लिए सामग्री प्रबंधन और फ़ाइल निर्यात के साथ SQL निष्पादन प्रोफ़ाइल प्राप्त करें।sql (string, आवश्यक), db_name (string, वैकल्पिक), catalog_name (string, वैकल्पिक), timeout (integer, वैकल्पिक)
get_table_data_sizeFE HTTP API के माध्यम से तालिका डेटा आकार जानकारी प्राप्त करें।db_name (string, वैकल्पिक), table_name (string, वैकल्पिक), single_replica (boolean, वैकल्पिक)
get_monitoring_metrics_infoDoris निगरानी मीट्रिक परिभाषाएँ और विवरण प्राप्त करें।role (string, वैकल्पिक), monitor_type (string, वैकल्पिक), priority (string, वैकल्पिक)
get_monitoring_metrics_dataलचीली BE खोज के साथ नोड्स से वास्तविक Doris निगरानी मीट्रिक डेटा प्राप्त करें।role (string, वैकल्पिक), monitor_type (string, वैकल्पिक), priority (string, वैकल्पिक)
get_realtime_memory_statsस्वचालित/मैन्युअल BE खोज के साथ BE मेमोरी ट्रैकर के माध्यम से रीयल-टाइम मेमोरी आँकड़े प्राप्त करें।tracker_type (string, वैकल्पिक), include_details (boolean, वैकल्पिक)
get_historical_memory_statsलचीले BE कॉन्फ़िगरेशन के साथ BE Bvar इंटरफ़ेस के माध्यम से ऐतिहासिक मेमोरी आँकड़े प्राप्त करें।tracker_names (array, वैकल्पिक), time_range (string, वैकल्पिक)
analyze_data_qualityपूर्णता और वितरण विश्लेषण को संयोजित करने वाला व्यापक डेटा गुणवत्ता विश्लेषण।table_name (string, आवश्यक), analysis_scope (string, वैकल्पिक), sample_size (integer, वैकल्पिक), business_rules (array, वैकल्पिक)
trace_column_lineageSQL विश्लेषण और निर्भरता मानचित्रण के माध्यम से एंड-टू-एंड स्तंभ वंशावली ट्रैकिंग।target_columns (array, आवश्यक), analysis_depth (integer, वैकल्पिक), include_transformations (boolean, वैकल्पिक)
monitor_data_freshnessविन्यास योग्य ताज़गी सीमा के साथ रीयल-टाइम डेटा स्टेलनेस निगरानी।table_names (array, वैकल्पिक), freshness_threshold_hours (integer, वैकल्पिक), include_update_patterns (boolean, वैकल्पिक)
analyze_data_access_patternsएक्सेस पैटर्न निगरानी के साथ उपयोगकर्ता व्यवहार विश्लेषण और सुरक्षा विसंगति का पता लगाना।days (integer, वैकल्पिक), include_system_users (boolean, वैकल्पिक), min_query_threshold (integer, वैकल्पिक)
analyze_data_flow_dependenciesतालिकाओं और दृश्यों के बीच डेटा प्रवाह प्रभाव विश्लेषण और निर्भरता मानचित्रण।target_table (string, वैकल्पिक), analysis_depth (integer, वैकल्पिक), include_views (boolean, वैकल्पिक)
analyze_slow_queries_topnशीर्ष-N धीमी क्वेरी विश्लेषण और पैटर्न के साथ प्रदर्शन अड़चन की पहचान।days (integer, वैकल्पिक), top_n (integer, वैकल्पिक), min_execution_time_ms (integer, वैकल्पिक), include_patterns (boolean, वैकल्पिक)
analyze_resource_growth_curvesसंसाधन वृद्धि विश्लेषण और प्रवृत्ति पूर्वानुमान के साथ क्षमता नियोजन।days (integer, वैकल्पिक), resource_types (array, वैकल्पिक), include_predictions (boolean, वैकल्पिक)
exec_adbc_queryADBC (Arrow Flight SQL) प्रोटोकॉल का उपयोग करके उच्च-प्रदर्शन SQL निष्पादन।sql (string, आवश्यक), max_rows (integer, वैकल्पिक), timeout (integer, वैकल्पिक), return_format (string, वैकल्पिक)
get_adbc_connection_infoArrow Flight SQL के लिए ADBC कनेक्शन निदान और स्थिति निगरानी।कोई पैरामीटर आवश्यक नहीं

नोट: सभी मेटाडेटा उपकरण बहु-कैटलॉग वातावरण के लिए कैटलॉग फेडरेशन का समर्थन करते हैं। उन्नत निगरानी उपकरण व्यापक मेमोरी ट्रैकिंग और मीट्रिक संग्रह क्षमताएँ प्रदान करते हैं। v0.5.0 में नया: एंटरप्राइज़ डेटा गवर्नेंस के लिए 7 उन्नत विश्लेषण उपकरण और बड़े डेटासेट के लिए 3-10x प्रदर्शन सुधार के साथ उच्च-प्रदर्शन डेटा स्थानांतरण के लिए 2 ADBC उपकरण।

Doris-समर्थित OAuth नोट: उपरोक्त तालिका वैश्विक सर्वर क्षमताओं का वर्णन करती है। Doris-समर्थित OAuth अपने संचालन सतह के लिए कॉन्फ़िगरेशन द्वार का उपयोग करता है। MCP संसाधन संसाधन मेटाडेटा कैशिंग अक्षम के साथ उपलब्ध हैं। समीक्षित मेटाडेटा उपकरण तब कॉल करने योग्य होते हैं जब DORIS_OAUTH_DB_TOOLS_ENABLED=true; exec_query और get_sql_explain तब कॉल करने योग्य होते हैं जब उनके Doris OAuth क्वेरी/व्याख्या द्वार सक्षम होते हैं। ये MySQL-चैनल संचालन लॉग-इन Doris उपयोगकर्ता पूल के माध्यम से चलते हैं, इसलिए Doris RBAC अंतिम डेटा प्राधिकरण बैकएंड है। संकेत, ADBC, FE HTTP प्रोफ़ाइल/निगरानी, ऑडिट/गवर्नेंस, और प्रदर्शन विश्लेषण तब तक बंद रहते हैं जब तक उनके पास प्रति-उपयोगकर्ता रूटिंग या एक स्पष्ट सेवा-खाता/व्यवस्थापक डिज़ाइन न हो।

4. सेवा चलाएँ

सर्वर प्रारंभ करने के लिए निम्नलिखित कमांड निष्पादित करें:

./start_server.sh

यह कमांड स्ट्रीमेबल HTTP MCP सेवा के साथ FastAPI एप्लिकेशन प्रारंभ करता है।

5. डॉकर पर तैनात करना

यदि आप डॉकर में केवल Doris MCP सर्वर चलाना चाहते हैं:

cd doris-mcp-server
docker build -t doris-mcp-server .
docker run -d -p <port>:<port> -v /*your-host*/doris-mcp-server/.env:/app/.env --name <your-mcp-server-name> -it doris-mcp-server:latest

सेवा एंडपॉइंट:

  • स्ट्रीमेबल HTTP: http://<host>:<port>/mcp (प्राथमिक MCP एंडपॉइंट - GET, POST, DELETE, OPTIONS का समर्थन करता है)
  • हेल्थ चेक: http://<host>:<port>/health

नोट: सर्वर वेब-आधारित संचार के लिए स्ट्रीमेबल HTTP का उपयोग करता है, जो एकीकृत अनुरोध/प्रतिक्रिया और स्ट्रीमिंग क्षमताएँ प्रदान करता है।

उपयोग

Doris MCP सर्वर के साथ सहभागिता के लिए एक MCP क्लाइंट की आवश्यकता होती है। क्लाइंट सर्वर के स्ट्रीमेबल HTTP एंडपॉइंट से जुड़ता है और सर्वर के उपकरणों को आमंत्रित करने के लिए MCP विनिर्देश के अनुसार अनुरोध भेजता है।

मुख्य सहभागिता प्रवाह:

  1. क्लाइंट आरंभीकरण: initialize विधि कॉल को /mcp (स्ट्रीमेबल HTTP) पर भेजें।
  2. (वैकल्पिक) उपकरण खोजें: क्लाइंट समर्थित उपकरणों, उनके विवरण और पैरामीटर स्कीमा की सूची प्राप्त करने के लिए tools/list को कॉल कर सकता है।
  3. उपकरण कॉल करें: क्लाइंट name और arguments निर्दिष्ट करते हुए एक tools/call अनुरोध भेजता है।
    • उदाहरण: तालिका स्कीमा प्राप्त करें
      • name: get_table_schema
      • arguments: table_name, db_name, catalog_name शामिल करें।
  4. प्रतिक्रिया संभालें:
    • नॉन-स्ट्रीमिंग: क्लाइंट को content या isError वाली प्रतिक्रिया प्राप्त होती है।
    • स्ट्रीमिंग: क्लाइंट को प्रगति सूचनाओं की एक श्रृंखला प्राप्त होती है, जिसके बाद एक अंतिम प्रतिक्रिया आती है।

कैटलॉग फेडरेशन समर्थन

Doris MCP सर्वर कैटलॉग फेडरेशन का समर्थन करता है, जो एक एकीकृत इंटरफ़ेस के भीतर कई डेटा कैटलॉग (आंतरिक Doris तालिकाएँ और Hive, MySQL, आदि जैसे बाहरी डेटा स्रोत) के साथ सहभागिता को सक्षम करता है।

मुख्य विशेषताएं:

  • बहु-कैटलॉग मेटाडेटा पहुँच: सभी मेटाडेटा उपकरण (get_db_list, get_db_table_list, get_table_schema, आदि) विशिष्ट कैटलॉग को क्वेरी करने के लिए एक वैकल्पिक catalog_name पैरामीटर का समर्थन करते हैं।
  • क्रॉस-कैटलॉग SQL क्वेरीज़: तीन-भाग तालिका नामकरण का उपयोग करके कई कैटलॉग में फैली SQL क्वेरीज़ निष्पादित करें।
  • कैटलॉग खोज: उपलब्ध कैटलॉग और उनके प्रकारों की खोज के लिए get_catalog_list का उपयोग करें।

तीन-भाग नामकरण आवश्यकता:

सभी SQL क्वेरीज़ को तालिका संदर्भों के लिए तीन-भाग नामकरण का उपयोग करना चाहिए:

  • आंतरिक तालिकाएँ: internal.database_name.table_name
  • बाहरी तालिकाएँ: catalog_name.database_name.table_name

उदाहरण:

  1. उपलब्ध कैटलॉग प्राप्त करें:

    {
      "tool_name": "get_catalog_list",
      "arguments": {"random_string": "unique_id"}
    }
    
  2. विशिष्ट कैटलॉग में डेटाबेस प्राप्त करें:

    {
      "tool_name": "get_db_list", 
      "arguments": {"random_string": "unique_id", "catalog_name": "mysql"}
    }
    
  3. आंतरिक कैटलॉग क्वेरी करें:

    {
      "tool_name": "exec_query",
      "arguments": {
        "random_string": "unique_id",
        "sql": "SELECT COUNT(*) FROM internal.ssb.customer"
      }
    }
    
  4. बाहरी कैटलॉग क्वेरी करें:

    {
      "tool_name": "exec_query", 
      "arguments": {
        "random_string": "unique_id",
        "sql": "SELECT COUNT(*) FROM mysql.ssb.customer"
      }
    }
    
  5. क्रॉस-कैटलॉग क्वेरी:

    {
      "tool_name": "exec_query",
      "arguments": {
        "random_string": "unique_id", 
        "sql": "SELECT i.c_name, m.external_data FROM internal.ssb.customer i JOIN mysql.test.user_info m ON i.c_custkey = m.customer_id"
      }
    }
    

सुरक्षा कॉन्फ़िगरेशन

Doris MCP सर्वर में उन्नत प्रमाणीकरण, प्राधिकरण, SQL सुरक्षा सत्यापन और v0.6.0 में बढ़ाई गई डेटा मास्किंग क्षमताओं के साथ एक व्यापक एंटरप्राइज़-ग्रेड सुरक्षा ढाँचा शामिल है।

सुरक्षा सुविधाएँ (v0.6.0 में बढ़ाई गई)

  • 🔐 बहु-प्रमाणीकरण प्रणाली: स्वतंत्र नियंत्रण स्विच के साथ पूर्ण टोकन, JWT और OAuth प्रमाणीकरण
  • 🔗 टोकन-बाउंड डेटाबेस कॉन्फ़िगरेशन: टोकन को अपने स्वयं के डेटाबेस कनेक्शन पैरामीटर ले जाने की अनुमति देने वाला क्रांतिकारी दृष्टिकोण
  • 🔄 हॉट रीलोड सुरक्षा: बुद्धिमान टोकन पुनर्सत्यापन के साथ शून्य-डाउनटाइम सुरक्षा कॉन्फ़िगरेशन अपडेट
  • ⚡ तत्काल सत्यापन: कनेक्शन के समय रीयल-टाइम डेटाबेस और प्रमाणीकरण सत्यापन
  • 🛡️ भूमिका-आधारित प्राधिकरण: चार-स्तरीय सुरक्षा वर्गीकरण के साथ उन्नत RBAC
  • 🚫 उन्नत SQL सुरक्षा: बेहतर पैटर्न पहचान के साथ उन्नत SQL इंजेक्शन सुरक्षा
  • 🎭 बुद्धिमान डेटा मास्किंग: उपयोगकर्ता-आधारित अनुमतियों के साथ स्वचालित संवेदनशील डेटा मास्किंग
  • 📊 सुरक्षा विश्लेषण: व्यापक ऑडिट ट्रेल्स और सुरक्षा निगरानी

प्रमाणीकरण कॉन्फ़िगरेशन (v0.6.0)

विस्तृत नियंत्रण के साथ नई प्रमाणीकरण प्रणाली कॉन्फ़िगर करें:

# Individual Authentication Control (New in v0.6.0)
ENABLE_TOKEN_AUTH=true          # Enable token-based authentication
ENABLE_JWT_AUTH=false           # Enable JWT authentication  
ENABLE_OAUTH_AUTH=false         # Enable OAuth authentication

# Token Management (New in v0.6.0)
TOKEN_FILE_PATH=tokens.json     # Token configuration file
TOKEN_HOT_RELOAD=true          # Enable hot reloading

# Default Tokens (Customizable via environment)
DEFAULT_ADMIN_TOKEN=doris_admin_token_123456
DEFAULT_ANALYST_TOKEN=doris_analyst_token_123456
DEFAULT_READONLY_TOKEN=doris_readonly_token_123456

# Legacy Configuration (Deprecated)
# AUTH_TYPE=token               # Use individual switches instead
# TOKEN_SECRET=your_secret_key  # Use token-based auth instead

Doris-समर्थित OAuth प्रमाणीकरण

Doris-समर्थित OAuth एक अलग OAuth मोड है जहाँ Doris स्वयं प्राधिकरण बैकएंड है। MCP क्लाइंट इस सर्वर के OAuth मेटाडेटा की खोज करता है, उपयोगकर्ता Doris उपयोगकर्ता नाम और पासवर्ड से साइन इन करता है, सर्वर प्रति-उपयोगकर्ता Doris कनेक्शन पूल बनाकर उन क्रेडेंशियल्स को मान्य करता है, और जारी किए गए doa_ एक्सेस टोकन उस Doris उपयोगकर्ता के पूल के माध्यम से उपकरण कॉल को रूट करते हैं। MCP स्कोप नियंत्रित करते हैं कि कौन से MCP संचालन कॉल किए जा सकते हैं; Doris RBAC नियंत्रित करता है कि उपयोगकर्ता कौन से कैटलॉग, डेटाबेस, तालिकाएँ और मेटाडेटा देख सकता है।

यह मोड बाहरी OAuth/OIDC के समान नहीं है। ENABLE_DORIS_OAUTH_AUTH=true ENABLE_OAUTH_AUTH=true, OAUTH_ENABLED=true और विरासत AUTH_TYPE=oauth के साथ विरोध करता है; यदि दोनों मोड कॉन्फ़िगर किए गए हैं तो स्टार्टअप तेजी से विफल हो जाता है। एक मानक MCP एजेंट एक MCP URL दर्ज करता है और उस URL के लिए बिल्कुल एक OAuth व्यवहार की खोज करनी चाहिए, इसलिए मौजूदा /auth/* बाहरी OAuth लॉगिन प्रवाह Doris-समर्थित OAuth मोड में उपयोग नहीं किया जाता है।

न्यूनतम स्थानीय कॉन्फ़िगरेशन

निम्नलिखित उदाहरण एकल वर्कर पर स्थानीय विकास के लिए है:

TRANSPORT=http
WORKERS=1

DORIS_HOST=localhost
DORIS_PORT=9030
DORIS_USER=root
DORIS_PASSWORD=<service-account-password>
DORIS_DATABASE=information_schema

ENABLE_DORIS_OAUTH_AUTH=true
DORIS_OAUTH_BASE_URL=http://localhost:3000
ENABLE_OAUTH_AUTH=false

DORIS_OAUTH_DB_TOOLS_ENABLED=true
DORIS_OAUTH_DB_TOOL_ALLOWLIST=get_db_list,get_db_table_list,get_table_schema,get_table_comment,get_table_column_comments,get_table_indexes,get_catalog_list
DORIS_OAUTH_QUERY_TOOLS_ENABLED=true
DORIS_OAUTH_EXPLAIN_TOOLS_ENABLED=true

# Optional: let Doris RBAC, not the legacy MCP SQL guard, decide DDL/DML.
ENABLE_SECURITY_CHECK=false

कॉन्फ़िगर किया गया सेवा Doris खाता अभी भी स्टार्टअप सत्यापन और गैर-Doris-OAuth संगतता पथों द्वारा आवश्यक है। यदि प्रति-उपयोगकर्ता पूल गायब है तो Doris-समर्थित OAuth अनुरोध विफल-बंद हैं और उन्हें सेवा/वैश्विक खाते पर वापस नहीं आना चाहिए।

Doris OAuth उपकरण पहुँच

DORIS_OAUTH_DB_TOOLS_ENABLED=true समीक्षित मेटाडेटा बकेट खोलता है। समीक्षित उपकरण हैं:

  • get_db_list
  • get_db_table_list
  • get_table_schema
  • get_table_comment
  • get_table_column_comments
  • get_table_indexes
  • get_catalog_list

सामान्य MCP OAuth प्रवाहों के लिए, क्लाइंट को एक लंबी --scopes सूची पास करने की आवश्यकता नहीं है। यदि OAuth अनुरोध स्कोप छोड़ देता है, तो सर्वर कॉन्फ़िगर किया गया Doris OAuth क्षमता लिफाफा प्रदान करता है। MySQL-चैनल संचालन के लिए, Doris RBAC तय करता है कि लॉग-इन Doris उपयोगकर्ता वास्तव में मेटाडेटा पढ़ सकता है, SQL चला सकता है, या SQL की व्याख्या कर सकता है या नहीं।

DORIS_OAUTH_QUERY_TOOLS_ENABLED=true exec_query खोलता है। DORIS_OAUTH_EXPLAIN_TOOLS_ENABLED=true get_sql_explain खोलता है। यदि ENABLE_SECURITY_CHECK=true, तो विरासत MCP SQL सुरक्षा परत Doris द्वारा देखे जाने से पहले भी कुछ SQL को अस्वीकार कर सकती है। ENABLE_SECURITY_CHECK=false सेट करें जब इच्छित नीति Doris RBAC को SQL/DDL/DML तय करने देना है।

Doris-समर्थित OAuth अभी भी इस चरण में प्रॉम्प्ट, ADBC, FE HTTP प्रोफ़ाइल/निगरानी, ऑडिट/गवर्नेंस, या प्रदर्शन विश्लेषण नहीं खोलता है जब तक कि उन पथों को प्रति-उपयोगकर्ता क्रेडेंशियल्स के माध्यम से अलग से रूट नहीं किया जाता है या एक स्पष्ट सेवा-खाता/व्यवस्थापक डिज़ाइन नहीं दिया जाता है।

वर्तमान परिचालन सीमाएँ

Doris-समर्थित OAuth वर्तमान में एकल-प्रक्रिया और एकल-वर्कर है:

  • WORKERS=1 आवश्यक है। WORKERS=0 CPU गणना तक विस्तारित होता है और Doris-समर्थित OAuth सक्षम होने पर विफल हो जाता है।
  • OAuth क्लाइंट, प्राधिकरण लेन-देन, प्राधिकरण कोड, एक्सेस टोकन, रिफ्रेश टोकन और DCR क्लाइंट केवल मेमोरी और प्रक्रिया-स्थानीय हैं।
  • प्रति-उपयोगकर्ता Doris कनेक्शन पूल प्रक्रिया-स्थानीय हैं।
  • प्रक्रिया पुनरारंभ के लिए उपयोगकर्ताओं को फिर से साइन इन करना आवश्यक है।
  • टोकन और पूल वर्करों, प्रक्रियाओं या नोड्स में साझा नहीं किए जाते हैं।
  • स्टेटलेस क्षैतिज स्केलिंग और बहु-नोड परिनियोजन अभी तक Doris-समर्थित OAuth के लिए समर्थित नहीं हैं।

यदि कोई एक्सेस टोकन अन्यथा मान्य है लेकिन उसका Doris उपयोगकर्ता पूल समाप्त हो गया है, तो अनुरोध लॉगिन आवश्यक / DORIS_OAUTH_POOL_MISSING के साथ विफल हो जाता है। सर्वर स्वचालित पूल पुनर्निर्माण के लिए कच्चे Doris पासवर्ड संग्रहीत नहीं करता है।

उत्पादन सख्तीकरण

उत्पादन परिनियोजन के लिए:

  • किसी भी गैर-लूपबैक पते के लिए HTTPS DORIS_OAUTH_BASE_URL का उपयोग करें।
  • DORIS_OAUTH_ALLOW_INSECURE_HTTP=false रखें; गैर-लूपबैक http:// अस्वीकार कर दिया जाता है जब तक कि विकास के लिए स्पष्ट रूप से ओवरराइड न किया गया हो।
  • DORIS_OAUTH_TRUST_PROXY_HEADERS को केवल एक नियंत्रित रिवर्स प्रॉक्सी के पीछे सक्षम करें और DORIS_OAUTH_TRUSTED_PROXY_CIDRS सेट करें।
  • लॉगिन, अधिकृत, टोकन, रिफ्रेश, निरस्त और DCR दर सीमाएँ सक्षम रखें।
  • अंतिम डेटा प्राधिकरण सीमा के रूप में Doris RBAC का उपयोग करें और Doris उपयोगकर्ताओं को केवल वही डेटा प्रदान करें जिसका उन्हें निरीक्षण करना चाहिए।
  • Doris पासवर्ड, प्राधिकरण हेडर, एक्सेस टोकन, रिफ्रेश टोकन, प्राधिकरण कोड, PKCE सत्यापनकर्ता, या क्लाइंट सीक्रेट लॉग न करें।
  • doa_ उपसर्ग को Doris-समर्थित OAuth एक्सेस टोकन के लिए आरक्षित मानें; स्थैतिक टोकन और JWT वाहक मानों को इसका उपयोग नहीं करना चाहिए।
  • लूपबैक विकास के लिए डायनेमिक क्लाइंट रजिस्ट्रेशन को auto में रखें या ENABLE_DORIS_OAUTH_PRODUCTION_DCR=true के साथ उत्पादन DCR को स्पष्ट रूप से कॉन्फ़िगर करें।

टोकन-बाउंड डेटाबेस कॉन्फ़िगरेशन (v0.6.0 में नया)

डेटाबेस बाइंडिंग के साथ उन्नत टोकन प्रबंधन के लिए एक tokens.json फ़ाइल बनाएँ:

{
  "version": "1.0",
  "tokens": [
    {
      "token_id": "customer-a-token",
      "token": "customer_a_secure_token_12345",
      "description": "Customer A dedicated database access",
      "expires_hours": null,
      "is_active": true,
      "database_config": {
        "host": "customer-a-db.example.com",
        "port": 9030,
        "user": "customer_a_user",
        "password": "secure_password",
        "database": "customer_a_data",
        "charset": "UTF8",
        "fe_http_port": 8030
      }
    },
    {
      "token_id": "customer-b-token", 
      "token": "customer_b_secure_token_67890",
      "description": "Customer B dedicated database access",
      "expires_hours": 720,
      "is_active": true,
      "database_config": {
        "host": "customer-b-db.example.com",
        "port": 9030,
        "user": "customer_b_user", 
        "password": "secure_password",
        "database": "customer_b_data",
        "charset": "UTF8",
        "fe_http_port": 8030
      }
    }
  ]
}

हॉट रीलोड कॉन्फ़िगरेशन अपडेट (v0.6.0 में नया)

सिस्टम स्वचालित रूप से कॉन्फ़िगरेशन परिवर्तनों का पता लगाता है और लागू करता है:

  • स्वचालित पहचान: हर 10 सेकंड में फ़ाइल संशोधन निगरानी
  • तत्काल सत्यापन: नए टोकन के लिए तत्काल डेटाबेस कॉन्फ़िगरेशन सत्यापन
  • शून्य डाउनटाइम: सेवा रुकावट के बिना कॉन्फ़िगरेशन अपडेट
  • रोलबैक सुरक्षा: कॉन्फ़िगरेशन त्रुटियों पर स्वचालित रोलबैक
  • ऑडिट ट्रेल: कॉन्फ़िगरेशन परिवर्तनों की पूर्ण लॉगिंग

टोकन प्रमाणीकरण उदाहरण

# Client authentication with token
auth_info = {
    "type": "token",
    "token": "your_jwt_token",
    "session_id": "unique_session_id"
}

मूल प्रमाणीकरण उदाहरण

# Client authentication with username/password
auth_info = {
    "type": "basic",
    "username": "analyst",
    "password": "secure_password",
    "session_id": "unique_session_id"
}

प्राधिकरण और सुरक्षा स्तर

सिस्टम पदानुक्रमित अभिगम नियंत्रण के साथ चार सुरक्षा स्तरों का समर्थन करता है:

सुरक्षा स्तरपहुँच क्षेत्रविशिष्ट उपयोग के मामले
सार्वजनिकअप्रतिबंधित पहुँचसार्वजनिक रिपोर्ट, सामान्य आँकड़े
आंतरिककंपनी के कर्मचारीआंतरिक डैशबोर्ड, व्यावसायिक मीट्रिक्स
गोपनीयअधिकृत कार्मिकग्राहक डेटा, वित्तीय रिपोर्ट
गुप्तवरिष्ठ प्रबंधनरणनीतिक डेटा, संवेदनशील विश्लेषण

भूमिका कॉन्फ़िगरेशन

उपयोगकर्ता भूमिकाएँ और अनुमतियाँ कॉन्फ़िगर करें:

# Example role configuration
role_permissions = {
    "data_analyst": {
        "security_level": "internal",
        "permissions": ["read_data", "execute_query"],
        "allowed_tables": ["sales", "products", "orders"]
    },
    "data_admin": {
        "security_level": "confidential", 
        "permissions": ["read_data", "execute_query", "admin"],
        "allowed_tables": ["*"]
    },
    "executive": {
        "security_level": "secret",
        "permissions": ["read_data", "execute_query", "admin"],
        "allowed_tables": ["*"]
    }
}

SQL सुरक्षा सत्यापन

सिस्टम सुरक्षा जोखिमों के लिए SQL क्वेरीज़ को स्वचालित रूप से मान्य करता है:

अवरुद्ध संचालन

पर्यावरण चर (v0.4.2 में नया) का उपयोग करके अवरुद्ध SQL संचालन कॉन्फ़िगर करें:

# Enable/disable SQL security check (New in v0.4.2)
ENABLE_SECURITY_CHECK=true

# Customize blocked keywords via environment variable (New in v0.4.2)
BLOCKED_KEYWORDS="DROP,DELETE,TRUNCATE,ALTER,CREATE,INSERT,UPDATE,GRANT,REVOKE,EXEC,EXECUTE,SHUTDOWN,KILL"

# Maximum query complexity score
MAX_QUERY_COMPLEXITY=100

डिफ़ॉल्ट अवरुद्ध कीवर्ड (v0.4.2 में एकीकृत):

  • DDL संचालन: DROP, CREATE, ALTER, TRUNCATE
  • DML संचालन: DELETE, INSERT, UPDATE
  • DCL संचालन: GRANT, REVOKE
  • सिस्टम संचालन: EXEC, EXECUTE, SHUTDOWN, KILL

SQL इंजेक्शन सुरक्षा

सिस्टम स्वचालित रूप से पता लगाता है और ब्लॉक करता है:

  • यूनियन-आधारित इंजेक्शन: UNION SELECT हमले
  • बूलियन-आधारित इंजेक्शन: OR 1=1 पैटर्न
  • समय-आधारित इंजेक्शन: SLEEP(), WAITFOR फ़ंक्शन
  • टिप्पणी इंजेक्शन: --, /**/ पैटर्न
  • स्टैक्ड क्वेरीज़: ; द्वारा अलग किए गए कई कथन

उदाहरण सुरक्षा सत्यापन

# This query would be blocked
dangerous_sql = "SELECT * FROM users WHERE id = 1; DROP TABLE users;"

# This query would be allowed
safe_sql = "SELECT name, email FROM users WHERE department = 'sales'"

डेटा मास्किंग कॉन्फ़िगरेशन

संवेदनशील जानकारी के लिए स्वचालित डेटा मास्किंग कॉन्फ़िगर करें:

अंतर्निहित मास्किंग नियम

# Default masking rules
masking_rules = [
    {
        "column_pattern": r".*phone.*|.*mobile.*",
        "algorithm": "phone_mask",
        "parameters": {
            "mask_char": "*",
            "keep_prefix": 3,
            "keep_suffix": 4
        },
        "security_level": "internal"
    },
    {
        "column_pattern": r".*email.*", 
        "algorithm": "email_mask",
        "parameters": {"mask_char": "*"},
        "security_level": "internal"
    },
    {
        "column_pattern": r".*id_card.*|.*identity.*",
        "algorithm": "id_mask", 
        "parameters": {
            "mask_char": "*",
            "keep_prefix": 6,
            "keep_suffix": 4
        },
        "security_level": "confidential"
    }
]

मास्किंग एल्गोरिदम

एल्गोरिदमविवरणउदाहरण
phone_maskफ़ोन नंबर मास्क करता है138****5678
email_maskईमेल पते मास्क करता हैj***n@example.com
id_maskआईडी कार्ड नंबर मास्क करता है110101****1234
name_maskव्यक्तिगत नाम मास्क करता है张*明
partial_maskअनुपात के साथ आंशिक मास्किंगabc***xyz

कस्टम मास्किंग नियम

अपने कॉन्फ़िगरेशन में कस्टम मास्किंग नियम जोड़ें:

# Custom masking rule
custom_rule = {
    "column_pattern": r".*salary.*|.*income.*",
    "algorithm": "partial_mask",
    "parameters": {
        "mask_char": "*",
        "mask_ratio": 0.6
    },
    "security_level": "confidential"
}

सुरक्षा कॉन्फ़िगरेशन उदाहरण

पर्यावरण चर

# .env file
AUTH_TYPE=token
TOKEN_SECRET=your_jwt_secret_key
ENABLE_MASKING=true
MAX_RESULT_ROWS=10000
BLOCKED_SQL_OPERATIONS=DROP,DELETE,TRUNCATE,ALTER
MAX_QUERY_COMPLEXITY=100
ENABLE_AUDIT=true

संवेदनशील तालिकाएँ कॉन्फ़िगरेशन

# Configure sensitive tables with security levels
sensitive_tables = {
    "user_profiles": "confidential",
    "payment_records": "secret", 
    "employee_salaries": "secret",
    "customer_data": "confidential",
    "public_reports": "public"
}

सुरक्षा सर्वोत्तम अभ्यास

  1. 🔑 मजबूत प्रमाणीकरण: उचित समाप्ति के साथ JWT टोकन का उपयोग करें
  2. 🎯 न्यूनतम विशेषाधिकार का सिद्धांत: न्यूनतम आवश्यक अनुमतियाँ प्रदान करें
  3. 🔍 नियमित ऑडिटिंग: सुरक्षा निगरानी के लिए ऑडिट लॉगिंग सक्षम करें
  4. 🛡️ इनपुट सत्यापन: सभी SQL क्वेरीज़ स्वचालित रूप से मान्य की जाती हैं
  5. 🎭 डेटा वर्गीकरण: सुरक्षा स्तरों के साथ डेटा को उचित रूप से वर्गीकृत करें
  6. 🔄 नियमित अपडेट: सुरक्षा नियमों और कॉन्फ़िगरेशन को अपडेट रखें
  7. Doris-समर्थित OAuth सख्तीकरण: HTTPS का उपयोग करें, इस मोड में बाहरी OAuth अक्षम रखें, WORKERS=1 रखें, MySQL-चैनल डेटा पहुँच के लिए Doris RBAC पर भरोसा करें, और केवल उन संचालनों को उजागर करें जो लॉग-इन Doris उपयोगकर्ता के क्रेडेंशियल्स का उपयोग करने के लिए कॉन्फ़िगर और सत्यापित हैं।

सुरक्षा निगरानी

सिस्टम व्यापक सुरक्षा निगरानी प्रदान करता है:

# Security audit log example
{
    "timestamp": "2024-01-15T10:30:00Z",
    "user_id": "analyst_user",
    "action": "query_execution", 
    "resource": "customer_data",
    "result": "blocked",
    "reason": "insufficient_permissions",
    "risk_level": "medium"
}

⚠️ महत्वपूर्ण: उत्पादन में तैनात करने से पहले हमेशा विकास परिवेश में सुरक्षा कॉन्फ़िगरेशन का परीक्षण करें। अपने संगठन की आवश्यकताओं के आधार पर नियमित रूप से सुरक्षा नीतियों की समीक्षा करें और अपडेट करें।

Cursor के साथ कनेक्ट करना

आप Stdio मोड (अनुशंसित) या स्ट्रीमेबल HTTP मोड का उपयोग करके Cursor को इस MCP सर्वर से कनेक्ट कर सकते हैं।

Stdio मोड

Stdio मोड Cursor को सर्वर प्रक्रिया को सीधे प्रबंधित करने की अनुमति देता है। कॉन्फ़िगरेशन Cursor की MCP सर्वर सेटिंग्स फ़ाइल (आमतौर पर ~/.cursor/mcp.json या समान) के भीतर किया जाता है।

विधि 1: PyPI संस्थापन का उपयोग करना (अनुशंसित)

PyPI से पैकेज इंस्टॉल करें और Cursor को इसका उपयोग करने के लिए कॉन्फ़िगर करें:

pip install doris-mcp-server

Cursor कॉन्फ़िगर करें: अपने Cursor MCP कॉन्फ़िगरेशन में निम्नलिखित जैसी एक प्रविष्टि जोड़ें:

{
  "mcpServers": {
    "doris-stdio": {
      "command": "doris-mcp-server",
      "args": ["--transport", "stdio"],
      "env": {
        "DORIS_HOST": "127.0.0.1",
        "DORIS_PORT": "9030",
        "DORIS_USER": "root",
        "DORIS_PASSWORD": "your_db_password"
      }
    }
  }
}

विधि 2: uv का उपयोग करना (विकास)

यदि आपके पास uv स्थापित है और स्रोत से चलाना चाहते हैं:

uv run --project /path/to/doris-mcp-server doris-mcp-server

नोट: /path/to/doris-mcp-server को अपनी परियोजना निर्देशिका के वास्तविक निरपेक्ष पथ से बदलें।

Cursor कॉन्फ़िगर करें: अपने Cursor MCP कॉन्फ़िगरेशन में निम्नलिखित जैसी एक प्रविष्टि जोड़ें:

{
  "mcpServers": {
    "doris-stdio": {
      "command": "uv",
      "args": ["run", "--project", "/path/to/your/doris-mcp-server", "doris-mcp-server"],
      "env": {
        "DORIS_HOST": "127.0.0.1",
        "DORIS_PORT": "9030",
        "DORIS_USER": "root",
        "DORIS_PASSWORD": "your_db_password"
      }
    }
  }
}

स्ट्रीमेबल HTTP मोड

स्ट्रीमेबल HTTP मोड के लिए आपको पहले MCP सर्वर को स्वतंत्र रूप से चलाना होगा, और फिर Cursor को इससे कनेक्ट करने के लिए कॉन्फ़िगर करना होगा।

  1. .env कॉन्फ़िगर करें: सुनिश्चित करें कि आपके डेटाबेस क्रेडेंशियल और कोई भी अन्य आवश्यक सेटिंग्स परियोजना निर्देशिका के भीतर .env फ़ाइल में सही ढंग से कॉन्फ़िगर की गई हैं।

  2. सर्वर प्रारंभ करें: परियोजना की रूट निर्देशिका में अपने टर्मिनल से सर्वर चलाएँ:

    ./start_server.sh
    

    यह स्क्रिप्ट .env फ़ाइल को पढ़ती है और स्ट्रीमेबल HTTP समर्थन के साथ FastAPI सर्वर प्रारंभ करती है। उस होस्ट और पोर्ट को नोट करें जिस पर सर्वर सुन रहा है (डिफ़ॉल्ट 0.0.0.0:3000 है)।

  3. Cursor कॉन्फ़िगर करें: चल रहे सर्वर के स्ट्रीमेबल HTTP एंडपॉइंट की ओर इंगित करते हुए, अपने Cursor MCP कॉन्फ़िगरेशन में निम्नलिखित जैसी एक प्रविष्टि जोड़ें:

    {
      "mcpServers": {
        "doris-http": {
           "url": "http://127.0.0.1:3000/mcp"
        }
      }
    }
    

    नोट: यदि आपका सर्वर किसी भिन्न पते पर चलता है तो होस्ट/पोर्ट समायोजित करें। /mcp एंडपॉइंट एकीकृत स्ट्रीमेबल HTTP इंटरफ़ेस है।

Cursor में किसी भी मोड को कॉन्फ़िगर करने के बाद, आपको सर्वर का चयन करने (जैसे, doris-stdio या doris-http) और इसके उपकरणों का उपयोग करने में सक्षम होना चाहिए।

Kiro के साथ कनेक्ट करना

Add to Kiro

या अपनी Kiro MCP कॉन्फ़िग फ़ाइल में निम्नलिखित जोड़ें (वैश्विक के लिए ~/.kiro/settings/mcp.json, या परियोजना-स्कोप के लिए .kiro/settings/mcp.json)। अधिक विवरण के लिए Kiro MCP दस्तावेज़ीकरण देखें।

{
  "mcpServers": {
    "doris-stdio": {
      "command": "doris-mcp-server",
      "args": ["--transport", "stdio"],
      "env": {
        "DORIS_HOST": "127.0.0.1",
        "DORIS_PORT": "9030",
        "DORIS_USER": "root",
        "DORIS_PASSWORD": "your_db_password"
      }
    }
  }
}

निर्देशिका संरचना

doris-mcp-server/
├── doris_mcp_server/           # Main server package
│   ├── main.py                 # Main entry point and FastAPI app
│   ├── multiworker_app.py      # Multi-worker application module (New in v0.6.0)
│   ├── auth/                   # Authentication modules (New in v0.6.0)
│   │   ├── token_manager.py    # Enterprise token management with hot reload
│   │   ├── jwt_manager.py      # JWT authentication provider
│   │   ├── oauth_provider.py   # OAuth authentication provider  
│   │   ├── oauth_handlers.py   # OAuth HTTP endpoint handlers
│   │   ├── token_handlers.py   # Token management HTTP endpoints
│   │   ├── auth_middleware.py  # Authentication middleware
│   │   └── __init__.py
│   ├── tools/                  # MCP tools implementation
│   │   ├── tools_manager.py    # Centralized tools management and registration
│   │   ├── resources_manager.py # Resource management and metadata exposure
│   │   ├── prompts_manager.py  # Intelligent prompt templates for data analysis
│   │   └── __init__.py
│   ├── utils/                  # Core utility modules
│   │   ├── config.py           # Configuration management with validation
│   │   ├── db.py               # Enhanced database connection management with token binding (Enhanced in v0.6.0)
│   │   ├── query_executor.py   # High-performance SQL execution with caching
│   │   ├── security.py         # Advanced security management and authentication (Enhanced in v0.6.0)
│   │   ├── schema_extractor.py # Metadata extraction with catalog federation
│   │   ├── analysis_tools.py   # Data analysis and performance monitoring
│   │   ├── data_governance_tools.py  # Data lineage and freshness monitoring (v0.5.0)
│   │   ├── data_quality_tools.py     # Comprehensive data quality analysis (v0.5.0)
│   │   ├── data_exploration_tools.py # Advanced statistical analysis (v0.5.0)
│   │   ├── security_analytics_tools.py # Access pattern analysis (v0.5.0)
│   │   ├── dependency_analysis_tools.py # Impact analysis and dependency mapping (v0.5.0)
│   │   ├── performance_analytics_tools.py # Query optimization and capacity planning (v0.5.0)
│   │   ├── adbc_query_tools.py       # High-performance Arrow Flight SQL operations (v0.5.0)
│   │   ├── logger.py           # Logging configuration
│   │   └── __init__.py
│   └── __init__.py
├── doris_mcp_client/           # MCP client implementation
│   ├── client.py               # Unified MCP client for testing and integration
│   ├── README.md               # Client documentation
│   └── __init__.py
├── logs/                       # Log files directory
├── tokens.json                 # Token configuration file (New in v0.6.0)
├── README.md                   # This documentation
├── RELEASE_NOTES_v0.6.0.md     # Release notes for v0.6.0
├── .env.example                # Environment variables template
├── requirements.txt            # Python dependencies
├── pyproject.toml              # Project configuration and entry points
├── uv.lock                     # UV package manager lock file
├── generate_requirements.py    # Requirements generation script
├── start_server.sh             # Server startup script
└── restart_server.sh           # Server restart script

नए उपकरण विकसित करना

यह खंड केंद्रीकृत उपकरण प्रबंधन के साथ एकीकृत मॉड्यूलर आर्किटेक्चर पर आधारित, Doris MCP सर्वर में नए MCP उपकरण जोड़ने की प्रक्रिया की रूपरेखा प्रस्तुत करता है।

1. मौजूदा उपयोगिता मॉड्यूल का लाभ उठाएँ

सर्वर सामान्य डेटाबेस संचालन के लिए व्यापक उपयोगिता मॉड्यूल प्रदान करता है:

  • doris_mcp_server/utils/db.py: कनेक्शन पूलिंग और स्वास्थ्य निगरानी के साथ डेटाबेस कनेक्शन प्रबंधन।
  • doris_mcp_server/utils/query_executor.py: उन्नत कैशिंग, अनुकूलन और प्रदर्शन निगरानी के साथ उच्च-प्रदर्शन SQL निष्पादन।
  • doris_mcp_server/utils/schema_extractor.py: पूर्ण कैटलॉग फेडरेशन समर्थन के साथ मेटाडेटा निष्कर्षण।
  • doris_mcp_server/utils/security.py: व्यापक सुरक्षा प्रबंधन, SQL सत्यापन और डेटा मास्किंग।
  • doris_mcp_server/utils/analysis_tools.py: उन्नत डेटा विश्लेषण और सांख्यिकीय उपकरण।
  • doris_mcp_server/utils/config.py: सत्यापन के साथ कॉन्फ़िगरेशन प्रबंधन।
  • doris_mcp_server/utils/data_governance_tools.py: डेटा वंशावली ट्रैकिंग और ताज़गी निगरानी (v0.5.0 में नया)।
  • doris_mcp_server/utils/data_quality_tools.py: व्यापक डेटा गुणवत्ता विश्लेषण ढाँचा (v0.5.0 में नया)।
  • doris_mcp_server/utils/adbc_query_tools.py: उच्च-प्रदर्शन Arrow Flight SQL संचालन (v0.5.0 में नया)।

2. उपकरण तर्क लागू करें

doris_mcp_server/tools/tools_manager.py में DorisToolsManager वर्ग में अपना नया उपकरण जोड़ें। उपकरण प्रबंधक एकीकृत इंटरफेस के साथ उपकरण पंजीकरण और निष्पादन के लिए एक केंद्रीकृत दृष्टिकोण प्रदान करता है।

उदाहरण: एक नया विश्लेषण उपकरण जोड़ना:

# In doris_mcp_server/tools/tools_manager.py

async def your_new_analysis_tool(self, arguments: Dict[str, Any]) -> List[Dict[str, Any]]:
    """
    Your new analysis tool implementation
    
    Args:
        arguments: Tool arguments from MCP client
        
    Returns:
        List of MCP response messages
    """
    try:
        # Use existing utilities
        result = await self.query_executor.execute_sql_for_mcp(
            sql="SELECT COUNT(*) FROM your_table",
            max_rows=arguments.get("max_rows", 100)
        )
        
        return [{
            "type": "text",
            "text": json.dumps(result, ensure_ascii=False, indent=2)
        }]
        
    except Exception as e:
        logger.error(f"Tool execution failed: {str(e)}", exc_info=True)
        return [{
            "type": "text", 
            "text": f"Error: {str(e)}"
        }]

3. उपकरण पंजीकृत करें

उसी वर्ग में _register_tools विधि में अपना उपकरण जोड़ें:

# In the _register_tools method of DorisToolsManager

@self.mcp.tool(
    name="your_new_analysis_tool",
    description="Description of your new analysis tool",
    inputSchema={
        "type": "object",
        "properties": {
            "parameter1": {
                "type": "string",
                "description": "Description of parameter1"
            },
            "parameter2": {
                "type": "integer", 
                "description": "Description of parameter2",
                "default": 100
            }
        },
        "required": ["parameter1"]
    }
)
async def your_new_analysis_tool_wrapper(arguments: Dict[str, Any]) -> List[Dict[str, Any]]:
    return await self.your_new_analysis_tool(arguments)

4. उन्नत सुविधाएँ

अधिक जटिल उपकरणों के लिए, आप व्यापक ढाँचे का लाभ उठा सकते हैं:

  • उन्नत कैशिंग: बेहतर प्रदर्शन के लिए क्वेरी निष्पादक की अंतर्निहित कैशिंग का उपयोग करें
  • एंटरप्राइज़ सुरक्षा: सुरक्षा प्रबंधक के माध्यम से व्यापक SQL सत्यापन और डेटा मास्किंग लागू करें
  • बुद्धिमान संकेत: उन्नत क्वेरी निर्माण के लिए संकेत प्रबंधक का उपयोग करें
  • संसाधन प्रबंधन: संसाधन प्रबंधक के माध्यम से मेटाडेटा उजागर करें
  • प्रदर्शन निगरानी: निगरानी क्षमताओं के लिए विश्लेषण उपकरणों के साथ एकीकृत करें

5. परीक्षण

शामिल MCP क्लाइंट का उपयोग करके अपने नए उपकरण का परीक्षण करें:

# Using doris_mcp_client/client.py
from doris_mcp_client.client import DorisUnifiedMCPClient

async def test_new_tool():
    client = DorisUnifiedMCPClient()
    result = await client.call_tool("your_new_analysis_tool", {
        "parameter1": "test_value",
        "parameter2": 50
    })
    print(result)

MCP क्लाइंट

परियोजना में परीक्षण और एकीकरण उद्देश्यों के लिए एक एकीकृत MCP क्लाइंट (doris_mcp_client/) शामिल है। क्लाइंट कई कनेक्शन मोड का समर्थन करता है और MCP सर्वर के साथ इंटरैक्ट करने के लिए एक सुविधाजनक इंटरफ़ेस प्रदान करता है।

विस्तृत क्लाइंट दस्तावेज़ीकरण के लिए, doris_mcp_client/README.md देखें।

योगदान देना

मुद्दों या पुल अनुरोधों के माध्यम से योगदान का स्वागत है।

लाइसेंस

यह परियोजना Apache 2.0 लाइसेंस के तहत लाइसेंस प्राप्त है। विवरण के लिए LICENSE फ़ाइल देखें।

सामान्य प्रश्न

प्रश्न: Qwen3-32b और अन्य छोटे पैरामीटर मॉडल उपकरणों को कॉल करते समय हमेशा विफल क्यों होते हैं?

उत्तर: यह एक सामान्य समस्या है। मुख्य कारण यह है कि इन मॉडलों को MCP उपकरणों का सही ढंग से उपयोग करने के लिए अधिक स्पष्ट मार्गदर्शन की आवश्यकता होती है। मॉडल के लिए निम्नलिखित निर्देश संकेत जोड़ने की अनुशंसा की जाती है:

  • चीनी संस्करण:
<instruction>
尽可能使用MCP工具完成任务,仔细阅读每个工具的注解、方法名、参数说明等内容。请按照以下步骤操作:

1. 仔细分析用户的问题,从已有的Tools列表中匹配最合适的工具。
2. 确保工具名称、方法名和参数完全按照工具注释中的定义使用,不要自行创造工具名称或参数。
3. 传入参数时,严格遵循工具注释中规定的参数格式和要求。
4. 调用工具时,根据需要直接调用工具,但参数请求参考以下请求格式:{"mcp_sse_call_tool": {"tool_name": "$tools_name", "arguments": "{}"}}
5. 输出结果时,不要包含任何XML标签,仅返回纯文本内容。

<input>
用户问题:user_query
</input>

<output>
返回工具调用结果或最终答案,以及对结果的分析。
</output>
</instruction>
  • अंग्रेजी संस्करण:
<instruction>
Use MCP tools to complete tasks as much as possible. Carefully read the annotations, method names, and parameter descriptions of each tool. Please follow these steps:

1. Carefully analyze the user's question and match the most appropriate tool from the existing Tools list.
2. Ensure tool names, method names, and parameters are used exactly as defined in the tool annotations. Do not create tool names or parameters on your own.
3. When passing parameters, strictly follow the parameter format and requirements specified in the tool annotations.
4. When calling tools, call them directly as needed, but refer to the following request format for parameters: {"mcp_sse_call_tool": {"tool_name": "$tools_name", "arguments": "{}"}}
5. When outputting results, do not include any XML tags, return plain text content only.

<input>
User question: user_query
</input>

<output>
Return tool call results or final answer, along with analysis of the results.
</output>
</instruction>

यदि आपके पास लौटाए गए परिणामों के लिए और आवश्यकताएँ हैं, तो आप <output> टैग में विशिष्ट आवश्यकताओं का वर्णन कर सकते हैं।

प्रश्न: विभिन्न डेटाबेस कनेक्शन कैसे कॉन्फ़िगर करें?

उत्तर: आप डेटाबेस कनेक्शन कई तरीकों से कॉन्फ़िगर कर सकते हैं:

  1. पर्यावरण चर (अनुशंसित):

    export DORIS_HOST="your_doris_host"
    export DORIS_PORT="9030"
    export DORIS_USER="root"
    export DORIS_PASSWORD="your_password"
    
  2. कमांड लाइन तर्क:

    doris-mcp-server --db-host your_host --db-port 9030 --db-user root --db-password your_password
    
  3. कॉन्फ़िगरेशन फ़ाइल: .env फ़ाइल में संबंधित कॉन्फ़िगरेशन आइटम संशोधित करें।

प्रश्न: निगरानी उपकरणों के लिए BE नोड्स कैसे कॉन्फ़िगर करें?

उत्तर: अपने परिनियोजन परिदृश्य के आधार पर उपयुक्त कॉन्फ़िगरेशन चुनें:

बाहरी नेटवर्क (मैन्युअल कॉन्फ़िगरेशन):

# Manually specify BE node addresses
DORIS_BE_HOSTS=10.1.1.100,10.1.1.101,10.1.1.102
DORIS_BE_WEBSERVER_PORT=8040

आंतरिक नेटवर्क (स्वचालित खोज):

# Leave BE_HOSTS empty for auto-discovery
# DORIS_BE_HOSTS=  # Not set or empty
# System will use 'SHOW BACKENDS' command to get internal IPs

प्रश्न: अनुकूलन के लिए LLM के साथ SQL Explain/Profile फ़ाइलों का उपयोग कैसे करें?

उत्तर: उपकरण LLM विश्लेषण के लिए संक्षिप्त सामग्री और पूर्ण फ़ाइलें दोनों प्रदान करते हैं:

  1. विश्लेषण परिणाम प्राप्त करें:

    {
      "content": "Truncated plan for immediate review",
      "file_path": "/tmp/explain_12345.txt",
      "is_content_truncated": true
    }
    
  2. LLM विश्लेषण कार्यप्रवाह:

    • त्वरित अंतर्दृष्टि के लिए संक्षिप्त सामग्री की समीक्षा करें
    • पूर्ण फ़ाइल को अनुलग्नक के रूप में अपने LLM पर अपलोड करें
    • अनुकूलन सुझाव या प्रदर्शन विश्लेषण का अनुरोध करें
    • अनुशंसित सुधार लागू करें
  3. सामग्री का आकार कॉन्फ़िगर करें:

    MAX_RESPONSE_CONTENT_SIZE=4096  # Adjust as needed
    

प्रश्न: डेटा सुरक्षा और मास्किंग सुविधाएँ कैसे सक्षम करें?

उत्तर: अपनी .env फ़ाइल में निम्नलिखित कॉन्फ़िगरेशन सेट करें:

# Enable data masking
ENABLE_MASKING=true
# Set authentication type
AUTH_TYPE=token
# Configure token secret
TOKEN_SECRET=your_secret_key
# Set maximum result rows
MAX_RESULT_ROWS=10000

प्रश्न: Stdio मोड और HTTP मोड में क्या अंतर है?

उत्तर:

  • Stdio मोड: MCP क्लाइंट (जैसे Cursor) के साथ सीधे एकीकरण के लिए उपयुक्त, जहाँ क्लाइंट सर्वर प्रक्रिया का प्रबंधन करता है
  • HTTP मोड: स्वतंत्र वेब सेवा जो कई क्लाइंट कनेक्शन का समर्थन करती है, उत्पादन परिवेशों के लिए उपयुक्त

अनुशंसाएँ:

  • विकास और व्यक्तिगत उपयोग: Stdio मोड
  • उत्पादन और बहु-उपयोगकर्ता वातावरण: HTTP मोड

प्रश्न: कनेक्शन टाइमआउट समस्याओं का समाधान कैसे करें?

उत्तर: निम्नलिखित समाधान आज़माएँ:

  1. टाइमआउट सेटिंग्स बढ़ाएँ:

    # Set in .env file
    QUERY_TIMEOUT=60
    CONNECTION_TIMEOUT=30
    
  2. नेटवर्क कनेक्टिविटी जाँचें:

    # Test database connection
    curl http://localhost:3000/health
    
  3. कनेक्शन पूल कॉन्फ़िगरेशन अनुकूलित करें:

    DORIS_MAX_CONNECTIONS=20
    

प्रश्न: at_eof कनेक्शन त्रुटियों का समाधान कैसे करें? (v0.5.0 में पूरी तरह से ठीक)

उत्तर: संस्करण 0.5.0 ने व्यापक कनेक्शन पूल रीडिज़ाइन के माध्यम से महत्वपूर्ण at_eof कनेक्शन त्रुटियों को पूरी तरह से हल कर दिया है:

समस्या:

  • कनेक्शन पूल प्री-क्रिएशन और अनुचित कनेक्शन स्थिति प्रबंधन के कारण at_eof त्रुटियाँ हुईं
  • कनेक्शन जीवनचक्र के दौरान MySQL aiomysql रीडर स्थिति असंगत हो गई
  • समवर्ती लोड के तहत कनेक्शन पूल अस्थिरता

समाधान (v0.5.0):

  1. कनेक्शन पूल रणनीति ओवरहाल:

    • शून्य न्यूनतम कनेक्शन: प्री-क्रिएशन समस्याओं को रोकने के लिए min_connections को डिफ़ॉल्ट से 0 में बदल दिया
    • ऑन-डिमांड कनेक्शन निर्माण: कनेक्शन केवल जरूरत पड़ने पर बनाए गए, बासी कनेक्शन समस्याओं को समाप्त किया
    • ताज़ा कनेक्शन रणनीति: हमेशा पूल से ताज़ा कनेक्शन प्राप्त करें, कोई सत्र-स्तरीय कैशिंग नहीं
  2. उन्नत स्वास्थ्य निगरानी:

    • टाइमआउट-आधारित स्वास्थ्य जाँच: कनेक्शन सत्यापन प्रश्नों के लिए 3-सेकंड का टाइमआउट
    • पृष्ठभूमि स्वास्थ्य मॉनिटर: हर 30 सेकंड में निरंतर पूल स्वास्थ्य निगरानी
    • सक्रिय बासी पहचान: समस्याग्रस्त कनेक्शनों की स्वचालित पहचान और सफाई
  3. बुद्धिमान पुनर्प्राप्ति प्रणाली:

    • स्वचालित पूल पुनर्प्राप्ति: व्यापक त्रुटि प्रबंधन के साथ स्व-उपचार पूल
    • एक्सपोनेंशियल बैकऑफ़ पुनर्प्रयास: 3 प्रयासों तक स्मार्ट पुनर्प्रयास तंत्र
    • कनेक्शन-विशिष्ट त्रुटि पहचान: कनेक्शन-संबंधित त्रुटियों की सटीक पहचान
  4. प्रदर्शन अनुकूलन:

    • पूल वार्मअप: इष्टतम प्रदर्शन के लिए बुद्धिमान कनेक्शन पूल वार्मिंग
    • पृष्ठभूमि सफाई: सक्रिय संचालन को प्रभावित किए बिना बासी कनेक्शनों की आवधिक सफाई
    • कनेक्शन निदान: वास्तविक समय कनेक्शन स्वास्थ्य निगरानी और रिपोर्टिंग

कनेक्शन स्वास्थ्य की निगरानी:

# Monitor connection pool health in real-time
tail -f logs/doris_mcp_server_info.log | grep -E "(pool|connection|at_eof)"

# Check detailed connection diagnostics
tail -f logs/doris_mcp_server_debug.log | grep "connection health"

# View connection pool metrics
curl http://localhost:8000/health  # If running in HTTP mode

इष्टतम कनेक्शन प्रदर्शन के लिए कॉन्फ़िगरेशन:

# Recommended connection pool settings in .env
DORIS_MAX_CONNECTIONS=20          # Adjust based on workload
CONNECTION_TIMEOUT=30             # Connection establishment timeout
QUERY_TIMEOUT=60                  # Query execution timeout

# Health monitoring settings
HEALTH_CHECK_INTERVAL=60          # Pool health check frequency

परिणाम: at_eof त्रुटियों का 99.9% उन्मूलन, कनेक्शन स्थिरता और प्रदर्शन में काफी सुधार।

प्रश्न: MCP लाइब्रेरी संस्करण संगतता समस्याओं का समाधान कैसे करें? (v0.4.2 में ठीक)

उत्तर: संस्करण 0.4.2 ने एक बुद्धिमान MCP संगतता परत पेश की जो MCP 1.8.x और 1.9.x दोनों संस्करणों का समर्थन करती है:

समस्या:

  • MCP 1.9.3 ने RequestContext वर्ग में ब्रेकिंग परिवर्तन पेश किए (2 से 3 सामान्य पैरामीटर में बदल गया)
  • इसके कारण TypeError: Too few arguments for RequestContext त्रुटियाँ हुईं

समाधान (v0.4.2):

  • बुद्धिमान संस्करण पहचान: स्थापित MCP संस्करण का स्वचालित रूप से पता लगाता है
  • संगतता परत: संस्करणों के बीच API अंतरों को सुंदरता से संभालता है
  • लचीला संस्करण समर्थन: निर्भरताओं में mcp>=1.8.0,<2.0.0

समर्थित MCP संस्करण:

# Both versions now work seamlessly
pip install mcp==1.8.0  # Stable version (recommended)
pip install mcp==1.9.3  # Latest version with new features

संस्करण जानकारी:

# Check which MCP version is being used
doris-mcp-server --transport stdio
# The server will log: "Using MCP version: x.x.x"

यदि आप MCP-संबंधित स्टार्टअप त्रुटियों का सामना करते हैं:

# Recommended: Use stable version
pip uninstall mcp
pip install mcp==1.8.0

# Or upgrade to latest compatible version
pip install --upgrade doris-mcp-server==0.5.0

प्रश्न: ADBC उच्च-प्रदर्शन सुविधाएँ कैसे सक्षम करें? (v0.5.0 में नया)

उत्तर: ADBC (Arrow Flight SQL) बड़े डेटासेट के लिए 3-10x प्रदर्शन सुधार प्रदान करता है:

  1. ADBC निर्भरताएँ (v0.5.0+ में स्वचालित रूप से शामिल):

    # ADBC dependencies are now included by default in doris-mcp-server>=0.5.0
    # No separate installation required
    
  2. Arrow Flight SQL पोर्ट कॉन्फ़िगर करें:

    # Add to your .env file
    FE_ARROW_FLIGHT_SQL_PORT=8096
    BE_ARROW_FLIGHT_SQL_PORT=8097
    
  3. वैकल्पिक ADBC अनुकूलन:

    # Customize ADBC behavior (optional)
    ADBC_DEFAULT_MAX_ROWS=200000
    ADBC_DEFAULT_TIMEOUT=120
    ADBC_DEFAULT_RETURN_FORMAT=pandas  # arrow/pandas/dict
    
  4. ADBC कनेक्शन का परीक्षण करें:

    # Use get_adbc_connection_info tool to verify setup
    # Should show "status": "ready" and port connectivity
    

प्रश्न: नए डेटा एनालिटिक्स उपकरणों का उपयोग कैसे करें? (v0.5.0 में नया)

उत्तर: 7 नए एनालिटिक्स उपकरण व्यापक डेटा गवर्नेंस क्षमताएँ प्रदान करते हैं:

डेटा गुणवत्ता विश्लेषण:

{
  "tool_name": "analyze_data_quality",
  "arguments": {
    "table_name": "customer_data",
    "analysis_scope": "comprehensive",
    "sample_size": 100000
  }
}

कॉलम वंशावली ट्रैकिंग:

{
  "tool_name": "trace_column_lineage", 
  "arguments": {
    "target_columns": ["users.email", "orders.customer_id"],
    "analysis_depth": 3
  }
}

डेटा ताज़गी निगरानी:

{
  "tool_name": "monitor_data_freshness",
  "arguments": {
    "freshness_threshold_hours": 24,
    "include_update_patterns": true
  }
}

प्रदर्शन एनालिटिक्स:

{
  "tool_name": "analyze_slow_queries_topn",
  "arguments": {
    "days": 7,
    "top_n": 20,
    "include_patterns": true
  }
}

प्रश्न: उन्नत लॉगिंग प्रणाली का उपयोग कैसे करें? (v0.5.0 में बेहतर)

उत्तर: संस्करण 0.5.0 स्वचालित प्रबंधन और स्तर-आधारित संगठन के साथ एक व्यापक लॉगिंग प्रणाली प्रस्तुत करता है:

लॉग फ़ाइल संरचना (v0.5.0 में नया):

logs/
├── doris_mcp_server_debug.log      # DEBUG level messages
├── doris_mcp_server_info.log       # INFO level messages  
├── doris_mcp_server_warning.log    # WARNING level messages
├── doris_mcp_server_error.log      # ERROR level messages
├── doris_mcp_server_critical.log   # CRITICAL level messages
├── doris_mcp_server_all.log        # Combined log (all levels)
└── doris_mcp_server_audit.log      # Audit trail (separate)

उन्नत लॉगिंग सुविधाएँ:

  1. स्तर-आधारित फ़ाइल पृथक्करण: आसान समस्या निवारण के लिए लॉग स्तर द्वारा स्वचालित संगठन
  2. टाइमस्टैम्प्ड फ़ॉर्मेटिंग: पेशेवर लॉगिंग के लिए उचित संरेखण के साथ मिलीसेकंड सटीकता
  3. स्वचालित लॉग रोटेशन: कॉन्फ़िगर करने योग्य फ़ाइल आकार सीमाओं के साथ डिस्क स्थान की समस्याओं को रोकता है
  4. पृष्ठभूमि सफाई: कॉन्फ़िगर करने योग्य अवधारण नीतियों के साथ बुद्धिमान सफाई अनुसूचक
  5. ऑडिट ट्रेल: अनुपालन और सुरक्षा निगरानी के लिए अलग ऑडिट लॉगिंग

लॉग देखना:

# View real-time logs by level
tail -f logs/doris_mcp_server_info.log     # General operational info
tail -f logs/doris_mcp_server_error.log    # Error tracking
tail -f logs/doris_mcp_server_debug.log    # Detailed debugging

# View all activity in combined log
tail -f logs/doris_mcp_server_all.log

# Monitor specific operations
tail -f logs/doris_mcp_server_info.log | grep -E "(query|connection|tool)"

# View audit trail
tail -f logs/doris_mcp_server_audit.log

कॉन्फ़िगरेशन:

# Enhanced logging configuration in .env
LOG_LEVEL=INFO                         # Base log level
ENABLE_AUDIT=true                      # Enable audit logging
ENABLE_LOG_CLEANUP=true                # Enable automatic cleanup
LOG_MAX_AGE_DAYS=30                    # Keep logs for 30 days
LOG_CLEANUP_INTERVAL_HOURS=24          # Check for cleanup daily

# Advanced settings
LOG_FILE_PATH=logs                     # Log directory (auto-organized)

उन्नत लॉग के साथ समस्या निवारण:

# Debug connection issues
grep -E "(connection|pool|at_eof)" logs/doris_mcp_server_error.log

# Monitor tool performance
grep "execution_time" logs/doris_mcp_server_info.log

# Check system health
tail -20 logs/doris_mcp_server_warning.log

# View recent critical issues
cat logs/doris_mcp_server_critical.log

लॉग सफाई प्रबंधन:

  • स्वचालित: पृष्ठभूमि अनुसूचक LOG_MAX_AGE_DAYS से पुरानी फ़ाइलों को हटाता है
  • मैन्युअल: लॉग 10MB तक पहुँचने पर स्वचालित रूप से घुमाए जाते हैं
  • बैकअप: प्रत्येक लॉग स्तर के लिए 5 बैकअप फ़ाइलें रखता है
  • प्रदर्शन: सर्वर प्रदर्शन पर न्यूनतम प्रभाव

प्रश्न: नए टोकन-बाउंड डेटाबेस कॉन्फ़िगरेशन का उपयोग कैसे करें? (v0.6.0 में नया)

उत्तर: क्रांतिकारी टोकन-बद्ध डेटाबेस कॉन्फ़िगरेशन प्रत्येक टोकन को सुरक्षित मल्टी-टेनेंट एक्सेस के लिए अपने स्वयं के डेटाबेस कनेक्शन पैरामीटर ले जाने की अनुमति देता है:

  1. टोकन प्रमाणीकरण सक्षम करें:

    # In your .env file
    ENABLE_TOKEN_AUTH=true
    TOKEN_HOT_RELOAD=true
    TOKEN_FILE_PATH=tokens.json
    
  2. tokens.json कॉन्फ़िगरेशन बनाएँ:

    {
      "version": "1.0",
      "tokens": [
        {
          "token_id": "tenant-alpha",
          "token": "tenant_alpha_secure_token_123",
          "description": "Tenant Alpha database access",
          "expires_hours": null,
          "is_active": true,
          "database_config": {
            "host": "tenant-alpha-db.company.com",
            "port": 9030,
            "user": "alpha_user",
            "password": "secure_password",
            "database": "alpha_analytics",
            "charset": "UTF8"
          }
        }
      ]
    }
    
  3. कॉन्फ़िगरेशन प्राथमिकता (v0.6.0 में नया):

    • टोकन-बद्ध DB कॉन्फ़िग (उच्चतम प्राथमिकता)
    • एनवायरनमेंट वेरिएबल (.env)
    • यदि दोनों में से कोई उपलब्ध न हो तो त्रुटि
  4. हॉट रीलोड लाभ:

    • सेवा पुनरारंभ के बिना नए किरायेदार जोड़ें
    • डेटाबेस क्रेडेंशियल्स को रीयल-टाइम में अपडेट करें
    • त्रुटियों पर स्वचालित सत्यापन और रोलबैक
    • परिवर्तनों का पूर्ण ऑडिट ट्रेल
  5. मल्टी-टेनेंट उपयोग:

    # Different tokens access different databases automatically
    curl -H "Authorization: Bearer tenant_alpha_secure_token_123" http://localhost:3000/mcp
    curl -H "Authorization: Bearer tenant_beta_secure_token_456" http://localhost:3000/mcp
    

प्रश्न: Doris-समर्थित OAuth बाहरी OAuth/OIDC से कैसे भिन्न है?

उत्तर: बाहरी OAuth/OIDC पहचान को किसी बाहरी प्रदाता जैसे Google, Azure AD, GitHub, GitLab, या Keycloak को सौंपता है। Doris-समर्थित OAuth इस MCP सर्वर द्वारा तब जारी किया जाता है जब उपयोगकर्ता Doris क्रेडेंशियल्स के साथ साइन इन करता है। सर्वर Doris उपयोगकर्ता नाम/पासवर्ड को मान्य करता है, प्रति-उपयोगकर्ता Doris कनेक्शन पूल बनाता है, doa_ एक्सेस और रिफ्रेश टोकन जारी करता है, और Doris RBAC को यह तय करने देता है कि वह उपयोगकर्ता कौन से डेटा और मेटाडेटा तक पहुँच सकता है।

ये मोड एक MCP URL पर परस्पर अनन्य हैं। ENABLE_DORIS_OAUTH_AUTH=true को ENABLE_OAUTH_AUTH=true, OAUTH_ENABLED=true, या AUTH_TYPE=oauth के साथ सक्षम न करें; यदि दोनों OAuth मोड कॉन्फ़िगर किए गए हैं तो स्टार्टअप तेजी से विफल हो जाता है।

Doris-समर्थित OAuth वर्तमान में अक्षम संसाधन मेटाडेटा कैश के साथ MCP संसाधनों को उजागर करता है। यह समीक्षित मेटाडेटा उपकरणों को उजागर करता है जब DORIS_OAUTH_DB_TOOLS_ENABLED=true, exec_query जब DORIS_OAUTH_QUERY_TOOLS_ENABLED=true, और SQL व्याख्या जब DORIS_OAUTH_EXPLAIN_TOOLS_ENABLED=true। सामान्य क्लाइंट्स को लंबी स्कोप सूची पास करने की आवश्यकता नहीं है; छोड़ा गया OAuth स्कोप कॉन्फ़िगर किए गए Doris OAuth क्षमता लिफाफे को प्रदान करता है। Doris RBAC इन MySQL-चैनल संचालनों के लिए अंतिम डेटा प्राधिकरण बैकएंड बना रहता है।

प्रश्न: क्या Doris-समर्थित OAuth कई वर्कर्स या कई नोड्स के साथ चल सकता है?

उत्तर: वर्तमान कार्यान्वयन में नहीं। Doris-समर्थित OAuth केवल-मेमोरी OAuth स्टोर और प्रक्रिया-स्थानीय प्रति-उपयोगकर्ता Doris पूल का उपयोग करता है। एक्सेस टोकन, रिफ्रेश टोकन, प्राधिकरण कोड, DCR क्लाइंट और पूल वर्कर्स, प्रक्रियाओं या नोड्स के बीच साझा नहीं किए जाते हैं।

Doris-समर्थित OAuth के साथ WORKERS=1 का उपयोग करें। WORKERS=0 CPU गणना तक विस्तारित होता है और विफल हो जाता है क्योंकि यह कई प्रभावी वर्कर्स बनाएगा। स्टेटलेस क्षैतिज स्केलिंग, साझा टोकन भंडारण, साझा एन्क्रिप्टेड Doris क्रेडेंशियल्स, स्टिकी-सेशन रिकवरी, और पूल पुनर्निर्माण भविष्य के डिज़ाइन हैं, वर्तमान क्षमताएँ नहीं।

प्रश्न: हॉट रीलोड कैसे काम करता है और क्या यह सुरक्षित है? (v0.6.0 में नया)

उत्तर: हॉट रीलोड सिस्टम व्यापक सुरक्षा उपायों के साथ एंटरप्राइज़ उत्पादन वातावरण के लिए डिज़ाइन किया गया है:

यह कैसे काम करता है:

  • फ़ाइल निगरानी: संशोधनों के लिए हर 10 सेकंड में tokens.json की जाँच करता है
  • तत्काल सत्यापन: डेटाबेस कनेक्टिविटी सहित नए टोकन मान्य किए जाते हैं
  • परमाणु अपडेट: सभी-या-कुछ नहीं कॉन्फ़िगरेशन अपडेट
  • रोलबैक सुरक्षा: यदि कोई टोकन सत्यापन विफल होता है तो स्वचालित रोलबैक

सुरक्षा सुविधाएँ:

  • बैकअप और पुनर्स्थापना: परिवर्तनों से पहले वर्तमान कॉन्फ़िगरेशन का बैकअप लिया जाता है
  • कनेक्शन परीक्षण: परिवर्तन लागू करने से पहले डेटाबेस कनेक्शन का परीक्षण किया जाता है
  • त्रुटि पृथक्करण: अमान्य टोकन मौजूदा वैध टोकन को प्रभावित नहीं करते हैं
  • ऑडिट लॉगिंग: सभी कॉन्फ़िगरेशन परिवर्तनों का पूर्ण ट्रेल

सर्वोत्तम अभ्यास:

# Monitor hot reload activity
tail -f logs/doris_mcp_server_info.log | grep "hot reload"

# Test configuration before applying
cp tokens.json tokens.json.backup
# Make changes to tokens.json
# System will automatically validate and apply or rollback

प्रश्न: टोकन जीवनचक्र और सुरक्षा का प्रबंधन कैसे करें? (v0.6.0 में नया)

उत्तर: टोकन प्रबंधन एक सुरक्षित, फ़ाइल-आधारित दृष्टिकोण का उपयोग करता है जिसमें वैकल्पिक प्रशासनिक एंडपॉइंट होते हैं जिनमें व्यापक सुरक्षा नियंत्रण होते हैं।

प्राथमिक टोकन प्रबंधन विधि (अनुशंसित):

# 1. Edit tokens.json file directly (safest method)
nano tokens.json

# 2. Hot reload will automatically detect changes
# No server restart required - changes applied within 10 seconds

# 3. Monitor hot reload in logs
tail -f logs/doris_mcp_server_info.log | grep "hot reload"

प्रशासनिक एंडपॉइंट (सुरक्षित, केवल स्थानीय पहुँच):

🛡️ सुरक्षा: ये एंडपॉइंट व्यापक सुरक्षा नियंत्रणों द्वारा संरक्षित हैं और डिफ़ॉल्ट रूप से अक्षम हैं।

# Security Requirements (ALL must be met):
# ✓ HTTP token management explicitly enabled in configuration
# ✓ Access only from localhost (127.0.0.1/::1) - IP restrictions enforced
# ✓ Valid admin authentication token required
# ✓ Admin authentication enabled in configuration

# Enable HTTP token management (disabled by default)
export ENABLE_HTTP_TOKEN_MANAGEMENT=true
export TOKEN_MANAGEMENT_ADMIN_TOKEN=your_secure_admin_token
export REQUIRE_ADMIN_AUTH=true
export TOKEN_MANAGEMENT_ALLOWED_IPS=127.0.0.1,::1

# Access with proper authentication
curl -H "Authorization: Bearer your_secure_admin_token" http://127.0.0.1:3000/token/stats

# Demo page (local access only, with authentication)
# Access: http://127.0.0.1:3000/token/demo

अनुशंसित टोकन प्रबंधन वर्कफ़्लो:

  1. विकास/परीक्षण:

    // tokens.json
    {
      "version": "1.0",
      "tokens": [
        {
          "token_id": "dev-token",
          "token": "dev_secure_token_123",
          "description": "Development environment access",
          "expires_hours": 24,
          "is_active": true
        }
      ]
    }
    
  2. उत्पादन परिनियोजन:

    # Use secure token generation
    openssl rand -hex 32  # Generate secure token
    
    # Store in secure configuration management
    # Never commit tokens to version control
    # Use environment variables for sensitive tokens
    

सुरक्षा सुविधाएँ:

  • फ़ाइल-आधारित प्रबंधन: सुरक्षित कॉन्फ़िगरेशन फ़ाइलों के माध्यम से प्राथमिक प्रबंधन
  • हॉट रीलोड: सेवा रुकावट के बिना स्वचालित कॉन्फ़िगरेशन अपडेट
  • टोकन हैशिंग: टोकन आंतरिक रूप से SHA-256 हैश के रूप में संग्रहीत
  • ऑडिट ट्रेल: सभी टोकन संचालन और परिवर्तनों की पूर्ण लॉगिंग
  • समाप्ति प्रबंधन: समाप्त टोकन की स्वचालित सफाई
  • केवल स्थानीय व्यवस्थापक: प्रबंधन एंडपॉइंट लोकलहोस्ट पहुँच तक सीमित
  • कॉन्फ़िगरेशन सत्यापन: टोकन और डेटाबेस कॉन्फ़िगरेशन का तत्काल सत्यापन

सुरक्षा सर्वोत्तम अभ्यास:

  • हमेशा सुरक्षित कॉन्फ़िगरेशन फ़ाइलों के माध्यम से टोकन प्रबंधित करें
  • टोकन प्रबंधन एंडपॉइंट को कभी भी बाहरी नेटवर्क के संपर्क में न लाएँ
  • उत्पादन के लिए मजबूत, यादृच्छिक रूप से उत्पन्न टोकन का उपयोग करें
  • tokens.json के लिए उचित फ़ाइल अनुमतियाँ लागू करें (600 या 640)
  • सक्रिय टोकन और उनके उपयोग पैटर्न का नियमित ऑडिट
  • अनधिकृत कॉन्फ़िगरेशन परिवर्तनों के लिए हॉट रीलोड लॉग की निगरानी करें

अन्य मुद्दों के लिए, कृपया GitHub Issues की जाँच करें या एक नया मुद्दा सबमिट करें।