GW2 MCP Server

Conecta modelos de lenguaje grandes (LLM) con fuentes de datos de Guild Wars 2. Requiere una clave de API de Guild Wars 2 para la funcionalidad de billetera.

Documentación

GW2 MCP Server

Add MCP Server gw2-mcp to LM Studio Add MCP Server gw2-mcp to LM Studio

Un servidor de Model Context Provider (MCP) para Guild Wars 2 que conecta Modelos de Lenguaje de Gran Tamaño (LLMs) con las fuentes de datos de Guild Wars 2.

Características

  • Búsqueda en Wiki: Busca y recupera contenido de la wiki de Guild Wars 2
  • Información de Cartera: Accede a los datos de cartera y monedas del usuario mediante la API de GW2
  • Caché Inteligente: Caché eficiente con TTL apropiado para datos estáticos y dinámicos
  • Límite de Peticiones: Uso respetuoso de la API con límite de peticiones integrado
  • Arquitectura Extensible: Diseño modular para añadir funciones fácilmente

Requisitos

  • Go 1.24 o superior
  • Clave de API de Guild Wars 2 (para la funcionalidad de cartera)

Instalación

  1. Clona el repositorio:
git clone https://github.com/AlyxPink/gw2-mcp.git
cd gw2-mcp
  1. Instala las dependencias:
go mod tidy
  1. Compila el servidor:
go build -o gw2-mcp ./cmd/server

Uso

Ejecutar el Servidor

Add MCP Server gw2-mcp to LM Studio Add MCP Server gw2-mcp to LM Studio

El servidor MCP se comunica mediante stdio (entrada/salida estándar):

./gw2-mcp

Puedes configurar Claude Desktop, LM Studio u otras herramientas de LLM para interactuar con el servidor usando esta configuración:

{
  "mcpServers": {
    "gw2-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "alyxpink/gw2-mcp:v1"
      ]
    }
  }
}

Herramientas MCP

El servidor proporciona las siguientes herramientas para la interacción con LLM:

1. Búsqueda en Wiki (wiki_search)

Busca información en la wiki de Guild Wars 2.

Parámetros:

  • query (obligatorio): Consulta de búsqueda
  • limit (opcional): Número máximo de resultados (por defecto: 5)

Ejemplo:

{
  "tool": "wiki_search",
  "arguments": {
    "query": "Dragon Bash",
    "limit": 3
  }
}

2. Obtener Cartera (get_wallet)

Recupera la información de la cartera del usuario, incluidas todas las monedas.

Parámetros:

  • api_key (obligatorio): Clave de API de Guild Wars 2 con alcance de cuenta

Ejemplo:

{
  "tool": "get_wallet",
  "arguments": {
    "api_key": "YOUR_GW2_API_KEY"
  }
}

3. Obtener Monedas (get_currencies)

Obtén información sobre las monedas de Guild Wars 2.

Parámetros:

  • ids (opcional): Array de IDs de monedas específicas para consultar

Ejemplo:

{
  "tool": "get_currencies",
  "arguments": {
    "ids": [1, 2, 3]
  }
}

Recursos MCP

El servidor proporciona los siguientes recursos:

Lista de Monedas (gw2://currencies)

Lista completa de todas las monedas de Guild Wars 2 con metadatos.

Configuración de la Clave de API

Para usar la funcionalidad de cartera, necesitas una clave de API de Guild Wars 2:

  1. Visita Gestión de Claves de API de Guild Wars 2
  2. Crea una nueva clave de API con los siguientes permisos:
    • account - Requerido para el acceso a la cartera
    • wallet - Requerido para la información de monedas
  3. Copia la clave de API generada

Nota de Seguridad: Las claves de API se procesan mediante hash antes de almacenarse en caché por seguridad. Nunca compartas tu clave de API.

Estrategia de Caché

El servidor implementa caché inteligente:

  • Datos Estáticos (monedas, contenido de wiki): Caché de 24 horas a 1 año
  • Datos Dinámicos (saldos de cartera): Caché de 5 minutos
  • Resultados de Búsqueda: Caché de 24 horas

Arquitectura

El proyecto sigue los principios de Arquitectura Limpia:

internal/
├── server/          # MCP server implementation
├── cache/           # Caching layer
├── gw2api/          # GW2 API client
└── wiki/            # Wiki API client

Desarrollo

Estándares de Código

  • Formatea el código con gofumpt
  • Ejecuta el linter con golangci-lint
  • Escribe pruebas unitarias para la funcionalidad principal
  • Sigue mensajes de commit convencionales

Ejecutar Pruebas

go test ./...

Linting

golangci-lint run

Formateo

gofumpt -w .

Contribuciones

  1. Haz un fork del repositorio
  2. Crea una rama de características
  3. Realiza tus cambios
  4. Añade pruebas si corresponde
  5. Ejecuta el linting y el formateo
  6. Envía un pull request

Licencia

GNU Affero General Public License v3.0 - consulta el archivo LICENSE para más detalles.

Agradecimientos