Databases Python ★ 236

XGenerationLab/xiyan_mcp_server

XiyanSQL metin-to-SQL LLM'si tarafından desteklenen, doğal dil sorguları kullanarak veritabanından veri çekmesine olanak tanıyan bir MCP sunucusu.

Claude Desktop config.json'a ekle

{
  "mcpServers": {
    "xgenerationlab-xiyan-mcp-server": {
      "command": "python",
      "args": [
        "-m",
        "xiyan_mcp_server"
      ]
    }
  }
}

XiYan MCP Sunucusu

Veritabanlarına doğal dil sorguları yapabilmeyi sağlayan bir Model Context Protocol (MCP) sunucusu
XiYan-SQL tarafından desteklenmektedir, açık karşılaştırma testlerinde text-to-sql'in en iyi performansı

💻 XiYan-mcp-server | 🌐 XiYan-SQL | 📖 Arxiv | 🏆 XiYanSQL Modeli | 📄 PapersWithCode 🤗 HuggingFace | 🤖 ModelScope | 🌕 析言GBI

Trust Score


English | 中文 | 日本語
Ding Group钉钉群Weibo'da beni takip edin

İçindekiler

Özellikler

  • 🌐 XiYanSQL aracılığıyla doğal dil ile verileri getirin
  • 🤖 Genel LLM'leri (GPT, qwenmax), Text-to-SQL SOTA modelini destekleyin
  • 💻 Saf yerel modu destekleyin (yüksek güvenlik!)
  • 📝 MySQL ve PostgreSQL'i destekleyin
  • 🖱️ Mevcut tabloları kaynak olarak listeleyin
  • 🔧 Tablo içeriklerini okuyun

Ön İzleme

Mimari

Bu sunucuyu projenize entegre etmenin iki yolu vardır, aşağıda gösterildiği gibi: Sol taraf varsayılan mod olan uzak moddur. XiYanSQL-qwencoder-32B modelini hizmet sağlayıcısından erişmek için bir API anahtarı gerektirir (bkz. Yapılandırma). Diğer mod, daha güvenli olan yerel moddur. API anahtarı gerektirmez.

architecture.png

En İyi uygulama ve raporlar

"Tek satır kod yazmadan MCP + Modelscope API-Inference kullanarak yerel veri asistanı oluşturun"

"Xiyan MCP on Modelscope"

MCPBench Üzerinde Değerlendirme

Aşağıdaki şekil, MCPBench ölçütü tarafından ölçülen XiYan MCP sunucusunun performansını göstermektedir. XiYan MCP sunucusu, hem MySQL MCP sunucusu hem de PostgreSQL MCP sunucusuna kıyasla üstün performans göstererek 2-22 yüzde puanı öncü durumdadır. Ayrıntılı deney sonuçları MCPBench ve "MCP Sunucuları Değerlendirme Raporu" raporunda bulunabilir.

exp_mcpbench.png

Araçlar Ön İzlemesi

  • get_data aracı, bir veritabanından veri almak için doğal dil arayüzü sağlar. Bu sunucu, girdi doğal dilini yerleşik bir model kullanarak SQL'e dönüştürecek ve veritabanını çağırarak sorgu sonuçlarını döndürecektir.

  • {dialect}://{table_name} kaynağı, belirli bir table_name belirtildiğinde model referansı için veritabanından örnek verilerin bir kısmını elde etmeyi sağlar.

  • {dialect}:// kaynağı mevcut veritabanlarının adlarını listeler

Kurulum

pip'ten Kurulum

Python 3.11+ gereklidir. Sunucuyu pip aracılığıyla kurabilirsiniz ve en son sürümü kurulacaktır:

pip install xiyan-mcp-server

Kaynaktan geliştirme sürümünü kurmak istiyorsanız, github'dan kaynak koddan kurabilirsiniz:

pip install git+https://github.com/XGenerationLab/xiyan_mcp_server.git

Smithery.ai'den Kurulum

Bkz. @XGenerationLab/xiyan_mcp_server

Tam olarak test edilmemiş.

Yapılandırma

Sunucuyu yapılandırmak için bir YAML yapılandırma dosyasına ihtiyacınız vardır. config_demo.yml'de varsayılan bir yapılandırma dosyası sağlanmıştır ve şöyle görünür:

mcp:
  transport: "stdio"
model:
  name: "XGenerationLab/XiYanSQL-QwenCoder-32B-2412"
  key: ""
  url: "https://api-inference.modelscope.cn/v1/"
database:
  host: "localhost"
  port: 3306
  user: "root"
  password: ""
  database: ""

MCP Yapılandırması

Taşıma protokolünü stdio veya sse olarak ayarlayabilirsiniz.

STDIO

Stdio protokolü için, bunu şöyle ayarlayabilirsiniz:

mcp:
  transport: "stdio"

SSE

Sse protokolü için, mcp yapılandırmasını aşağıdaki gibi ayarlayabilirsiniz:

mcp:
  transport: "sse"
  port: 8000
  log_level: "INFO"

Varsayılan port 8000'dir. Gerekirse portu değiştirebilirsiniz. Varsayılan günlük seviyesi ERROR'dir. Daha ayrıntılı bilgi için günlük seviyesini INFO olarak ayarlamanızı öneririz.

debug, host, sse_path, message_path gibi diğer yapılandırmalar da özelleştirilebilir, ancak normalde bunları değiştirmeniz gerekmez.

LLM Yapılandırması

Name kullanılacak modelin adıdır, key modelin API anahtarıdır, url modelin API url'sidir. Aşağıdaki modelleri destekliyoruz.

sürümler genel LLM'ler (GPT, qwenmax) Modelscope tarafından SOTA modeli Dashscope tarafından SOTA modeli Yerel LLM'ler
açıklama temel, kullanımı kolay en iyi performans, istikrarlı, tavsiye edilir en iyi performans, deneme için yavaş, yüksek güvenlik
isim resmi model adı (ör. gpt-3.5-turbo, qwen-max) XGenerationLab/XiYanSQL-QwenCoder-32B-2412 xiyansql-qwencoder-32b xiyansql-qwencoder-3b
anahtar hizmet sağlayıcısının API anahtarı (ör. OpenAI, Alibaba Cloud) modelscope'un API anahtarı e-posta aracılığıyla API anahtarı ""
url hizmet sağlayıcısının endpoint'i (ör. "https://api.openai.com/v1") https://api-inference.modelscope.cn/v1/ https://xiyan-stream.biz.aliyun.com/service/api/xiyan-sql http://localhost:5090

Genel LLM'ler

Genel LLM'leri kullanmak istiyorsanız, örneğin gpt3.5, bunu doğrudan şöyle yapılandırabilirsiniz:

model:
  name: "gpt-3.5-turbo"
  key: "YOUR KEY "
  url: "https://api.openai.com/v1"
database:

Alibaba'dan Qwen'i kullanmak istiyorsanız, örneğin Qwen-max, aşağıdaki yapılandırmayı kullanabilirsiniz:

model:
  name: "qwen-max"
  key: "YOUR KEY "
  url: "https://dashscope.aliyuncs.com/compatible-mode/v1"
database:

Text-to-SQL SOTA Modeli

XiYanSQL-qwencoder-32B (https://github.com/XGenerationLab/XiYanSQL-QwenCoder) modelini tavsiye ediyoruz; bu, text-to-sql'de SOTA modelidir, bkz. Bird benchmark. Modeli kullanmanın iki yolu vardır. Her ikisinden birini kullanabilirsiniz. (1) Modelscope, (2) Alibaba Cloud DashScope.

(1) Modelscope sürümü

Modelscope'dan API-inference'ın bir key'ini almanız gerekiyor, https://www.modelscope.cn/docs/model-service/API-Inference/intro Daha sonra aşağıdaki yapılandırmayı kullanabilirsiniz:

model:
  name: "XGenerationLab/XiYanSQL-QwenCoder-32B-2412"
  key: ""
  url: "https://api-inference.modelscope.cn/v1/"

Daha fazla bilgi için model açıklamasını okuyun.

(2) Dashscope sürümü

Modeli Alibaba Cloud DashScope'a dağıttık, bu nedenle aşağıdaki ortam değişkenlerini ayarlamanız gerekir: key almak için bana e-postanızı gönderin. (godot.lzl@alibaba-inc.com) E-postada lütfen aşağıdaki bilgileri ekleyin:

name: "ADINIZ",
email: "E-POSTANIZ",
organization: "üniversitesi veya Şirket veya Organizasyon"

E-postanıza göre size bir key göndereceğiz. Ve yml dosyasında key'i doldurabilisiniz. key 1 ay veya 200 sorgu veya diğer yasal kısıtlamalarla sona erecektir.

model:
  name: "xiyansql-qwencoder-32b"
  key: "KEY"
  url: "https://xiyan-stream.biz.aliyun.com/service/api/xiyan-sql"

Not: bu model hizmeti yalnızca deneme içindir, bunu üretimde kullanmanız gerekiyorsa, lütfen bizimle iletişime geçin.

(3) Yerel sürüm

Alternatif olarak, XiYanSQL-qwencoder-32B modelini kendi sunucunuza dağıtabilirsiniz. Daha fazla bilgi için Yerel Model dosyasına bakın.

Veritabanı Yapılandırması

host, port, user, password, database veritabanının bağlantı bilgileridir.

Yerel veya herhangi bir uzak veritabanını kullanabilirsiniz. Şimdi MySQL ve PostgreSQL'i destekliyoruz (yakında daha fazla diyalekt).

MySQL

database:
  host: "localhost"
  port: 3306
  user: "root"
  password: ""
  database: ""

PostgreSQL

Adım 1: Python paketlerini yükleyin

pip install psycopg2

Adım 2: config.yml dosyasını şöyle hazırlayın:

database:
  dialect: "postgresql"
  host: "localhost"
  port: 5432
  user: ""
  password: ""
  database: ""

PostgreSQL için dialect değerinin postgresql olması gerektiğini unutmayın.

Başlatma

Sunucu Başlatması

sse ile sunucu başlatmak istiyorsanız, aşağıdaki komutu bir terminalde çalıştırmanız gerekir:

YML=path/to/yml python -m xiyan_mcp_server

Daha sonra tarayıcınızda http://localhost:8000/sse hakkında bilgi görmüş olmalısınız. (Varsayılan olarak, mcp sunucunuz başka bir host/port üzerinde çalışıyorsa değiştirin)

Aksi takdirde, stdio aktarım protokolünü kullanıyorsanız, genellikle MCP sunucusu komutunu terminalde başlatmak yerine belirli mcp uygulamasında bildirirsiniz. Ancak gerekirse bu komutla hata ayıklama yapabilirsiniz.

İstemci Ayarı

Claude Desktop

Claude Desktop yapılandırma dosyanızda bunu ekleyin, bkz. Claude Desktop yapılandırma örneği

{
    "mcpServers": {
        "xiyan-mcp-server": {
            "command": "/xxx/python",
            "args": [
                "-m",
                "xiyan_mcp_server"
            ],
            "env": {
                "YML": "PATH/TO/YML"
            }
        }
    }
}

Lütfen buradaki Python komutunun Python yürütülebilir dosyasının tam yolu olması gerektiğini (/xxx/python) unutmayın; aksi takdirde Python yorumlayıcısı bulunamaz. Bu yolu which python komutu kullanarak belirleyebilirsiniz. Aynı durum diğer uygulamalar için de geçerlidir.

Claude Desktop şu anda SSE aktarım protokolünü desteklemiyor.

Cline

Claude Desktop gibi yapılandırmayı hazırlayın

Goose

stdio kullanıyorsanız, yapılandırmaya aşağıdaki komutu ekleyin, bkz. Goose yapılandırma örneği

env YML=path/to/yml /xxx/python -m xiyan_mcp_server

Aksi takdirde, sse kullanıyorsanız Türünü SSE olarak değiştirin ve endpoint'i http://127.0.0.1:8000/sse olarak ayarlayın

Cursor

Aşağıdakine benzer komutu kullanın.

stdio için:

{
  "mcpServers": {
    "xiyan-mcp-server": {
      "command": "/xxx/python",
      "args": [
        "-m",
        "xiyan_mcp_server"
      ],
      "env": {
        "YML": "path/to/yml"
      }
    }
  }
}

sse için:

{
  "mcpServers": {
    "xiyan_mcp_server_1": {
      "url": "http://localhost:8000/sse"
    }
  }
}

Witsy

Komuta aşağıdakileri ekleyin:

/xxx/python -m xiyan_mcp_server

Bir env ekleyin: anahtar YML'dir ve değer yml dosyanızın yoludur. Bkz. Witsy yapılandırma örneği

Bize Ulaşın:

Araştırmamız veya ürünlerimiz hakkında ilgileniyorsanız, lütfen bizimle iletişime geçmekten çekinmeyin.

İletişim Bilgileri:

Yifu Liu, zhencang.lyf@alibaba-inc.com

DingTalk Grubuna Katılın

Ding Group钉钉群

Diğer İlgili Bağlantılar

MseeP.ai Security Assessment Badge

Atıf

Çalışmamız faydalı bulduysa, lütfen bizi alıntı yapmaktan çekinmeyin.

@article{XiYanSQL,
      title={XiYan-SQL: A Novel Multi-Generator Framework For Text-to-SQL}, 
      author={Yifu Liu and Yin Zhu and Yingqi Gao and Zhiling Luo and Xiaoxia Li and Xiaorong Shi and Yuntao Hong and Jinyang Gao and Yu Li and Bolin Ding and Jingren Zhou},
      year={2025},
      eprint={2507.04701},
      archivePrefix={arXiv},
      primaryClass={cs.CL},
      url={https://arxiv.org/abs/2507.04701}, 
}

Benzer MCP sunucuları

Daha fazla: Databases →