XiYan MCP Server

Official
by XGenerationLab
Verified

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Enables natural language queries to MySQL databases, allowing users to fetch data, list available tables, and read table contents using natural language commands, powered by XiYanSQL text-to-SQL technology.

  • Supports use of OpenAI models like GPT-3.5-turbo for processing natural language queries to SQL databases, configurable through the server settings.

Tabla de contenido

Características

  • 🌐 Obtenga datos en lenguaje natural a través de XiYanSQL
  • 🤖 Admite LLM generales (GPT, qwenmax), modelo SOTA de texto a SQL
  • 💻 Admite modo local puro (¡alta seguridad!)
  • 📝 Soporte para MySQL y PostgreSQL.
  • 🖱️ Listar las tablas disponibles como recursos
  • 🔧 Leer el contenido de la tabla

Avance

Arquitectura

Hay dos maneras de integrar este servidor en su proyecto, como se muestra a continuación: El modo remoto, que es el predeterminado, requiere una clave API para acceder al modelo xiyanSQL-qwencoder-32B del proveedor de servicios (consulte Configuración ). El modo local es más seguro y no requiere la clave API.

Mejores prácticas e informes

Cree un asistente de datos local usando MCP + Modelscope API-Inference sin escribir una sola línea de código.

Xiyan MCP en Modelscope

Evaluación en MCPBench

La siguiente figura ilustra el rendimiento del servidor XiYan MCP, medido mediante el benchmark MCPBench. El servidor XiYan MCP demuestra un rendimiento superior al del servidor MySQL MCP y al del servidor PostgreSQL MCP, alcanzando una ventaja de entre 2 y 22 puntos porcentuales. Los resultados detallados del experimento se pueden consultar en MCPBench y en el informe "Informe de evaluación de servidores MCP" .

Vista previa de herramientas

  • La herramienta get_data proporciona una interfaz de lenguaje natural para recuperar datos de una base de datos. Este servidor convierte la entrada de lenguaje natural a SQL mediante un modelo integrado y llama a la base de datos para devolver los resultados de la consulta.
  • El recurso {dialect}://{table_name} permite obtener una parte de datos de muestra de la base de datos para la referencia del modelo cuando se especifica un table_name específico.
  • El recurso {dialect}:// enumerará los nombres de las bases de datos actuales

Instalación

Instalación desde pip

Se requiere Python 3.11 o superior. Puede instalar el servidor mediante pip; se instalará la versión más reciente:

pip install xiyan-mcp-server

Después de esto puedes ejecutar directamente el servidor mediante:

python -m xiyan_mcp_server

Sin embargo, no ofrece ninguna función hasta que complete la siguiente configuración. Obtendrá un archivo yml. Después, puede ejecutar el servidor mediante:

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

Instalación desde Smithery.ai

Ver @XGenerationLab/xiyan_mcp_server

No completamente probado.

Configuración

Necesita un archivo de configuración YAML para configurar el servidor. El archivo de configuración predeterminado se encuentra en config_demo.yml y tiene este aspecto:

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

Configuración de LLM

Name es el nombre del modelo a utilizar, key es la clave API del modelo y url es la URL API del modelo. Admitimos los siguientes modelos.

versionesLLM generales (GPT, qwenmax)Modelo SOTA de ModelscopeModelo SOTA de DashscopeLLM locales
descripciónbásico, fácil de usarMejor rendimiento, estable, recomendado.Mejor rendimiento, para pruebalento, alta seguridad
nombreel nombre oficial del modelo (por ejemplo, gpt-3.5-turbo,qwen-max)XGenerationLab/XiYanSQL-QwenCoder-32B-2412xiyansql-qwencoder-32bxiyansql-qwencoder-3b
llavela clave API del proveedor de servicios (por ejemplo, OpenAI, Alibaba Cloud)la clave API de modelscopela clave API por correo electrónico""
URLel punto final del proveedor de servicios (por ejemplo, " https://api.openai.com/v1 ")https://api-inference.modelscope.cn/v1/https://xiyan-stream.biz.aliyun.com/service/api/xiyan-sqlhttp://localhost:5090

LLM generales

Si desea utilizar los LLM generales, por ejemplo gpt3.5, puede configurarlos directamente de esta manera:

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

Si desea utilizar Qwen de Alibaba, por ejemplo Qwen-max, puede utilizar la siguiente configuración:

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

Modelo SOTA de texto a SQL

Recomendamos XiYanSQL-qwencoder-32B ( https://github.com/XGenerationLab/XiYanSQL-QwenCoder ), que es el modelo SOTA en conversión de texto a SQL. Consulte el benchmark de Bird . Hay dos maneras de usar el modelo. Puede usar cualquiera de ellas: (1) Modelscope , (2) Alibaba Cloud DashScope.

(1) Versión de Modelscope

Debe aplicar una key de inferencia de API de Modelscope, https://www.modelscope.cn/docs/model-service/API-Inference/intro Luego puede usar la siguiente configuración:

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

Lea la descripción de nuestro modelo para obtener más detalles.

(2) Versión Dashscope

Implementamos el modelo en Alibaba Cloud DashScope, por lo que debe configurar las siguientes variables de entorno: Envíeme su correo electrónico para obtener la key . ( godot.lzl@alibaba-inc.com ) En el correo electrónico, adjunte la siguiente información:

name: "YOUR NAME", email: "YOUR EMAIL", organization: "your college or Company or Organization"

Le enviaremos una key según su correo electrónico. Puede key en el archivo yml. La key caducará al cabo de un mes, 200 consultas o cualquier otra restricción legal.

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

Nota: este modelo de servicio es solo para prueba, si necesita usarlo en producción, contáctenos.

Alternativamente, también puede implementar el modelo XiYanSQL-qwencoder-32B en su propio servidor.

Modelo local

Nota: El modelo local es lento (aproximadamente 12 segundos por consulta en mi MacBook). Si necesita un servicio estable y rápido, le recomendamos usar la versión de ModelScope.

Para ejecutar xiyan_mcp_server en modo local, necesita

  1. una PC/Mac con al menos 16 GB de RAM
  2. 6 GB de espacio en disco

Paso 1: Instalar paquetes de Python adicionales

pip install flask modelscope torch==2.2.2 accelerate>=0.26.0 numpy=2.2.3

Paso 2: (opcional) Descargue el modelo manualmente. Recomendamos xiyansql-qwencoder-3b . Puede descargar el modelo manualmente mediante

modelscope download --model XGenerationLab/XiYanSQL-QwenCoder-3B-2502

Ocupará 6 GB de espacio en disco.

Paso 3: descargue el script y ejecute server.src/xiyan_mcp_server/local_xiyan_server.py

python local_xiyan_server.py

El servidor se ejecutará en http://localhost:5090/

Paso 4: prepara la configuración y ejecuta xiyan_mcp_server. El config.yml debería ser como:

model: name: "xiyansql-qwencoder-3b" key: "KEY" url: "http://127.0.0.1:5090"

Hasta ahora el modo local está listo.

Configuración de la base de datos

host , port , user , password y database son la información de conexión de la base de datos.

Puedes usar bases de datos locales o remotas. Ahora somos compatibles con MySQL y PostgreSQL (próximamente con más dialectos).

MySQL

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

PostgreSQL

Paso 1: Instalar paquetes de Python

pip install psycopg2

Paso 2: prepara el config.yml de esta manera:

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

Tenga en cuenta que dialect debe ser postgresql para postgresql.

Lanzamiento

Escritorio de Claude

Agregue esto en su archivo de configuración de Claude Desktop, consulte el ejemplo de configuración de Claude Desktop

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

Cline

Prepara la configuración como Claude Desktop

Ganso

Agregue el siguiente comando en la configuración, consulte el ejemplo de configuración de Goose

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

Cursor

Utilice el mismo comando que Goose .

Ingenioso

Agregue lo siguiente en el comando:

python -m xiyan_mcp_server

Agregue un entorno: la clave es YML y el valor es la ruta a su archivo YML. Consulte el ejemplo de configuración de Witsy.

¡No funciona!

Contáctanos: Ding Group钉钉群| Sígueme en Weibo

Citación

Si encuentra útil nuestro trabajo, no dude en citarnos.

@article{xiyansql, title={A Preview of XiYan-SQL: A Multi-Generator Ensemble Framework for Text-to-SQL}, author={Yingqi Gao and Yifu Liu and Xiaoxia Li and Xiaorong Shi and Yin Zhu and Yiming Wang and Shiqi Li and Wei Li and Yuntao Hong and Zhiling Luo and Jinyang Gao and Liyu Mou and Yu Li}, year={2024}, journal={arXiv preprint arXiv:2411.08599}, url={https://arxiv.org/abs/2411.08599}, primaryClass={cs.AI} }
-
security - not tested
A
license - permissive license
-
quality - not tested

Un servidor de protocolo de contexto de modelo que permite realizar consultas en lenguaje natural a bases de datos MySQL, impulsado por la tecnología de texto a SQL XiYanSQL.

  1. Features
    1. Preview
      1. Architecture
      2. Best practice and reports
      3. Evaluation on MCPBench
      4. Tools Preview
    2. Installation
      1. Installing from pip
      2. Installing from Smithery.ai
    3. Configuration
      1. LLM Configuration
      2. Database Configuration
    4. Launch
      1. Claude Desktop
      2. Cline
      3. Goose
      4. Cursor
      5. Witsy
    5. It Does Not Work!
      1. Citation
        ID: 38egctvcux