XiYan MCP Server

Un servidor que permite consultas en lenguaje natural a bases de datos usando XiyanSQL.

Documentación

XiYan MCP Server

MCP Playwright

Un servidor de Protocolo de Contexto de Modelo (MCP) que permite consultas en lenguaje natural a bases de datos
impulsado por XiYan-SQL, SOTA de texto a SQL en benchmarks abiertos

💻 XiYan-mcp-server | 🌐 XiYan-SQL | 📖 Arxiv | 🏆 XiYanSQL Model | 📄 PapersWithCode 🤗 HuggingFace | 🤖 ModelScope | 🌕 析言GBI
MCP Server License: Apache 2.0 PyPI Downloads

Trust Score Smithery Installs GitHub stars
English | 中文 | 日本語
Ding Group钉钉群| Follow me on Weibo

Tabla de Contenidos

Características

  • 🌐 Obtén datos mediante lenguaje natural a través de XiYanSQL
  • 🤖 Soporta LLMs generales (GPT, qwenmax), modelo SOTA de texto a SQL
  • 💻 Soporta modo completamente local (¡alta seguridad!)
  • 📝 Soporta MySQL y PostgreSQL.
  • 🖱️ Lista las tablas disponibles como recursos
  • 🔧 Lee el contenido de las tablas

Vista Previa

Arquitectura

Hay dos formas de integrar este servidor en tu proyecto, como se muestra a continuación: La izquierda es el modo remoto, que es el modo predeterminado. Requiere una clave API para acceder al modelo xiyanSQL-qwencoder-32B del proveedor de servicios (ver Configuración). Otro modo es el modo local, que es más seguro. No requiere la clave API.

architecture.png

Mejores prácticas e informes

"Construye 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 por el benchmark MCPBench. El servidor XiYan MCP demuestra un rendimiento superior en comparación con el servidor MySQL MCP y el servidor PostgreSQL MCP, logrando una ventaja de 2 a 22 puntos porcentuales. Los resultados detallados del experimento se pueden encontrar en MCPBench y el informe "Informe de Evaluación de Servidores MCP".

exp_mcpbench.png

Vista Previa de Herramientas

  • La herramienta get_data proporciona una interfaz de lenguaje natural para recuperar datos de una base de datos. Este servidor convertirá el lenguaje natural de entrada en SQL usando un modelo integrado y llamará a la base de datos para devolver los resultados de la consulta.

  • El recurso {dialect}://{table_name} permite obtener una porción de datos de muestra de la base de datos para referencia del modelo cuando se especifica un table_name concreto.

  • El recurso {dialect}:// listará los nombres de las bases de datos actuales

Instalación

Instalación desde pip

Se requiere Python 3.11+. Puedes instalar el servidor a través de pip, y se instalará la última versión:

pip install xiyan-mcp-server

Si deseas instalar la versión de desarrollo desde el código fuente, puedes instalarla desde el código fuente en github:

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

Instalación desde Smithery.ai

Ver @XGenerationLab/xiyan_mcp_server

No completamente probado.

Configuración

Necesitas un archivo de configuración YAML para configurar el servidor. Se proporciona un archivo de configuración predeterminado en config_demo.yml que se ve así:

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: ""

Configuración de MCP

Puedes configurar el protocolo de transporte a stdio or sse.

STDIO

Para el protocolo stdio, puedes configurarlo así:

mcp:
  transport: "stdio"

SSE

Para el protocolo sse, puedes configurar mcp de la siguiente manera:

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

El puerto predeterminado es 8000. Puedes cambiar el puerto si es necesario. El nivel de registro predeterminado es ERROR. Recomendamos configurar el nivel de registro a INFO para obtener información más detallada.

Otras configuraciones como debug, host, sse_path, message_path también se pueden personalizar, pero normalmente no necesitas modificarlas.

Configuración de LLM

Name is the name of the model to use, key is the API key of the model, url es la URL de API del modelo. Soportamos los siguientes modelos.

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

LLMs Generales

Si deseas usar los LLMs generales, p. ej. gpt3.5, puedes configurarlo directamente así:

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

Si deseas usar Qwen de Alibaba, p. ej. Qwen-max, puedes usar 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 el XiYanSQL-qwencoder-32B (https://github.com/XGenerationLab/XiYanSQL-QwenCoder), que es el modelo SOTA en texto a SQL, ver benchmark Bird. Hay dos formas de usar el modelo. Puedes usar cualquiera de ellas. (1) Modelscope, (2) Alibaba Cloud DashScope.

(1) Versión de Modelscope

Necesitas solicitar una key de API-inference de Modelscope, https://www.modelscope.cn/docs/model-service/API-Inference/intro Luego puedes usar la siguiente configuración:

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

Lee nuestra descripción del modelo para más detalles.

(2) Versión de Dashscope

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

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

Te enviaremos una key according to your email. And you can fill the key en el archivo yml. La key expirará en 1 mes o 200 consultas u otras restricciones legales.

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

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

(3) Versión Local

Alternativamente, también puedes desplegar el modelo XiYanSQL-qwencoder-32B en tu propio servidor. Ver Modelo Local para más detalles.

Configuración de Base de Datos

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

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

MySQL

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

PostgreSQL

Paso 1: Instala los paquetes de Python

pip install psycopg2

Paso 2: prepara el config.yml así:

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

Ten en cuenta que dialect should be postgresql para postgresql.

Lanzamiento

Lanzamiento del Servidor

Si deseas lanzar el servidor con sse, debes ejecutar el siguiente comando en una terminal:

YML=path/to/yml python -m xiyan_mcp_server

Luego deberías ver la información en http://localhost:8000/sse en tu navegador. (Por defecto, cámbialo si tu servidor mcp se ejecuta en otro host/puerto)

De lo contrario, si usas el protocolo de transporte stdio, normalmente declaras el comando del servidor mcp en la aplicación mcp específica en lugar de lanzarlo en una terminal. Sin embargo, aún puedes depurar con este comando si es necesario.

Configuración del Cliente

Claude Desktop

Agrega esto en tu archivo de configuración de Claude Desktop, ref Ejemplo de configuración de Claude Desktop

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

Ten en cuenta que el comando de Python aquí requiere la ruta completa al ejecutable de Python (/xxx/python); de lo contrario, no se puede encontrar el intérprete de Python. Puedes determinar esta ruta usando el comando which python. Lo mismo aplica para otras aplicaciones.

Claude Desktop actualmente no soporta el protocolo de transporte SSE.

Cline

Prepara la configuración como Claude Desktop

Goose

Si usas stdio, agrega el siguiente comando en la configuración, ref Ejemplo de configuración de Goose

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

De lo contrario, si usas sse, cambia el Tipo a SSE y configura el endpoint a http://127.0.0.1:8000/sse

Cursor

Usa el comando similar como sigue.

Para stdio:

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

Para sse:

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

Witsy

Agrega lo siguiente en el comando:

/xxx/python -m xiyan_mcp_server

Agrega una variable de entorno: la clave es YML y el valor es la ruta a tu archivo yml. Ref Ejemplo de configuración de Witsy

Contáctanos:

Si estás interesado en nuestra investigación o productos, no dudes en contactarnos.

Información de Contacto:

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

Únete a Nuestro Grupo de DingTalk

Ding Group钉钉群

Otros Enlaces Relacionados

MseeP.ai Security Assessment Badge

Citación

Si encuentras nuestro trabajo útil, no dudes en citarnos.

@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}, 
}