WorkforceGPT.AI MCP

Recursos humanos y reclutamiento: evalúa una descripción de puesto o genera un perfil de rol estructurado. Sin clave de API.

Documentación

WorkforceGPT para agentes

Un servidor MCP que permite a cualquier agente compatible puntuar una descripción de puesto y construir un perfil de rol estructurado (responsabilidades, y habilidades con niveles de competencia) en nombre de alguien con una cuenta de WorkforceGPT. Conéctalo en un solo paso, sin clave API. En las aplicaciones de Claude está en el directorio de conectores.

URL del servidor https://workforcegpt.ai/mcp

Inicio rápido

Cuatro pasos, y los tres primeros no implican nada de código. Al final del paso dos ya habrás puntuado una descripción de puesto real pidiéndolo en lenguaje natural. El paso cuatro es para cuando quieras que eso ocurra siempre de la misma manera.

Necesitas dos cosas: una cuenta de WorkforceGPT, que es gratuita de crear y necesita una dirección de correo verificada, y una copia de Claude (o cualquier otro cliente MCP).

1

Conecta Claude al servidor

En las aplicaciones de Claude puedes añadir WorkforceGPT desde el directorio de conectores, es decir, sin pegar nada. En cualquier otro lugar, entrega a tu cliente la URL del recuadro superior. En cualquier caso, no hay clave API ni id de cliente que solicitar de antemano, porque tu cliente se registra solo la primera vez que se conecta.

Claude web, de escritorio o Cowork

WorkforceGPT aparece en el directorio de conectores de Claude. Abre Configuración, ve a Conectores, navega por el directorio y añade WorkforceGPT. No hay URL que copiar en esta ruta.

¿No lo ves? La disponibilidad del directorio depende de tu plan, y siempre puedes usar la ruta manual: elige Añadir conector personalizado, ponle el nombre que quieras y pega la URL del servidor del recuadro superior. Esa también es la ruta a usar si apuntas a tu propio despliegue de este servidor en lugar del nuestro. Ambas terminan en la misma pantalla de inicio de sesión.

Ese menú pertenece a Anthropic y puede moverse. Su guía de conectores es la versión que se mantiene actualizada, incluyendo en qué planes está disponible cada ruta.

Claude Code

Añádelo una vez y luego inicia sesión:

claude mcp add --transport http workforcegpt https://workforcegpt.ai/mcp

Ejecuta /mcp dentro de Claude Code para completar el inicio de sesión, y claude mcp list para confirmar que dice conectado.

Cualquier otro cliente MCP

Dale la URL y nada más. El servidor publica los documentos de descubrimiento estándar, así que un cliente que hable OAuth encuentra el resto por sí mismo. El detalle está en cómo funciona la conexión.

Sea cual sea la ruta que elijas, se abre una ventana del navegador y te pide que inicies sesión en WorkforceGPT y apruebes la conexión. La pantalla nombra la aplicación que solicita, la dirección web a la que se enviará la aprobación y exactamente qué está pidiendo hacer. Lee la del medio: es lo único que una aplicación no puede falsificar sobre sí misma.

A partir de ahí, el agente actúa como tú, contra tu cuenta y tu asignación. Puedes desconectarlo cuando quieras desde tu página de configuración, y eso tiene efecto de inmediato.

Si el navegador no vuelve. Llevarte al navegador es un paso de Claude, no nuestro, y ocurre antes de que este servidor sea contactado en absoluto. Así que si aterrizas en una pantalla de inicio de sesión de Claude en lugar de la de WorkforceGPT, o la aprobación parece haber funcionado y el conector sigue apareciendo como desconectado, comprueba que tu navegador tiene la sesión iniciada con la misma cuenta de Claude que la aplicación desde la que te conectas. Un desajuste ahí detiene la transferencia temprano, y se ve exactamente como un servidor que no te autentica.

2

Pide algo

No hay sintaxis que aprender. Claude lee las descripciones de las herramientas y elige una. Prueba cualquiera de estas:

"Aquí hay una descripción de puesto que vamos a publicar. Puntúala y dime qué corregir." (luego pégala) Llama a assess_job_description y responde al momento, con una puntuación, qué significa esa puntuación y qué hacer al respecto.

"Construye un perfil de rol para un Analista de Datos Senior en Northwind." Llama a generate_role, que inicia el trabajo y devuelve un id, luego vuelve a comprobarlo hasta que termina. Consulta cómo se comporta la generación.

"¿Cuánto me queda en mi cuenta de WorkforceGPT?" Llama a get_account_status. Vale la pena preguntarlo antes de planificar un lote de trabajo, no después.

Si algo es rechazado, la respuesta dice qué límite alcanzaste y cuánto le queda a la cuenta, en palabras, en lugar de hacer que el agente adivine a partir de un código de estado.

3

Añade las dos Skills prefabricadas

Una Skill es un archivo Markdown de instrucciones que Claude carga cuando una conversación lo requiere. Incluimos dos. No añaden capacidad: todo lo que hacen, ya lo hiciste sin ellas en el paso dos.

Lo que añaden es criterio, es decir, las partes para las que una descripción de herramienta no tiene espacio. ¿Cuándo vale la pena llamar a una herramienta? ¿Cómo gastas bien una asignación pequeña? ¿Cómo conviertes el título interno de una empresa en uno que el mercado laboral reconozca? ¿Y qué significa importance_to_role: 1? Significa Alto, que es lo contrario de cómo se lee.

assess-job-description

Puntuar una descripción de puesto existente y decidir qué hacer con la puntuación.

build-role-profile

Generar un perfil de rol y acertar con el título para que la coincidencia con el mercado laboral tenga éxito.

En Claude Code

Cada skill es un SKILL.md en una carpeta con su nombre:

SRC=https://workforcegpt.ai/mcp/skills
DEST=~/.claude/skills

for s in assess-job-description build-role-profile; do
  mkdir -p $DEST/$s && curl -s $SRC/$s.md -o $DEST/$s/SKILL.md
done

Usa .claude/skills/ dentro de un proyecto si quieres que viaje con el repositorio en lugar de seguirte a ti.

En las aplicaciones de Claude

Descarga cada archivo de los enlaces anteriores, ponlo en una carpeta con el nombre de la skill como SKILL.md, comprime esa carpeta y súbela en la configuración de Claude. La guía de Agent Skills de Anthropic tiene la ruta actual y qué planes la necesitan.

Nada más las necesita. Un agente que no sea Claude lee la misma guía desde el description y el inputSchema de cada herramienta, que es donde viven las partes no opcionales.

4

Escribe tu propia Skill

No necesitas ser desarrollador para esto ni empezar de cero. Las dos skills anteriores ya manejan los problemas generales difíciles. Lo que no pueden saber es cómo hace tu organización esto: tus familias de puestos, tu nivelación, tu formato interno, el paso de aprobación que quieres antes de que se escriba nada.

Así que la skill que vale la pena escribir es una delgada que envuelva las nuestras. Aquí tienes un ejemplo completo. Guárdalo como SKILL.md en una carpeta llamada northwind-role-profiles, en el mismo lugar donde pusiste las dos anteriores.

---
name: northwind-role-profiles
description: Create a role profile that follows Northwind's job architecture conventions. Use when someone asks for a job profile, role definition, competency model or skills framework for a Northwind position, or wants an existing job description turned into one.
---

# Northwind role profiles

Our job architecture has rules WorkforceGPT does not know about. Apply them
around the tools, not instead of them.

## Before spending anything

Call \`get_account_status\` and tell the person what the account has left. Do
not guess the allowance, it is configurable and this file will not be updated
when it changes.

## Getting the title right

We title roles internally like "Staff Engineer II, Payments Platform". That
will not match labor-market data and the generation will come back thin. Send
the occupation instead, i.e. "Software Engineer", and keep our internal title
for the heading you write at the end.

If the person insists on the internal title, pass the old job description as
\`job_description\` and set \`use_job_description_if_title_not_found\` to true, so
there is something to build from when the title does not match.

## Generating

Call \`generate_role\` with \`role_title\` and \`company_name\`. It returns a
\`role_id\` rather than a profile. Poll \`check_role_status\` with that id until
\`status\` is no longer \`pending\`.

## Reading the result

\`importance_to_role\` is 1 for High, 2 for Medium and 3 for Low. It reads like
the opposite of what it means, so print the label and never the number.

## What to hand back

A table of responsibility, skill and proficiency level, then ask whether to
add it to the job architecture sheet. Never add it without being asked.

Las cuatro cosas que deciden si funciona

  1. La descripción es el desencadenante. Hasta que Claude decide abrir el archivo, solo puede ver el nombre y la descripción, así que escribe la descripción sobre las situaciones en las que alguien estará, no sobre lo que contiene el archivo. "Úsalo cuando alguien pida un perfil de puesto…" supera a "Herramientas para perfiles de rol".
  2. Nombra las herramientas exactamente. generate_role, no "la herramienta de generación". Los nombres están en la lista de herramientas y son lo que el agente tiene que escribir.
  3. No escribas la asignación en el archivo. Es configurable, y un archivo en tu portátil no se redistribuye cuando cambia. Señala a get_account_status en su lugar, que siempre es correcto.
  4. Di qué hacer con la respuesta. Una puntuación sin interpretación adjunta es una puntuación que un agente interpretará con generosidad. Dile cómo se ve un buen resultado y qué hacer con uno malo.

Comprobar que se cargó

Inicia una conversación nueva y di algo que debería activarla, sin nombrar la skill. Si Claude no la usa, el problema es la descripción, no el cuerpo: tiene que sonar como lo que la persona realmente pidió.

Referencia

El detalle debajo del inicio rápido: cada herramienta y sus argumentos, qué significan los alcances, cómo funcionan los límites y el protocolo en sí.

Herramientas

10 herramientas. El alcance junto a cada una es lo que tu cliente debe tener concedido para llamarla; una llamada sin él devuelve un error de herramienta que nombra el alcance que necesitas.

assess_job_description

assess

Puntúa una descripción de puesto de 0 a 100 según lo limpiamente que pueda convertirse en un perfil de rol estructurado, y di qué falta y qué corregir. Toma la descripción del puesto como texto. Se ejecuta de forma síncrona — la respuesta vuelve en la misma solicitud — así que permite un tiempo de espera generoso del cliente. Medido: consulta get_account_status.

check_role_status

read

Comprueba si una generación de rol ha terminado y devuelve el perfil de rol completo una vez que lo ha hecho. Haz polling después de generate_role.

generate_role

generate

Inicia la generación de un perfil de rol estructurado — descripción, responsabilidades, habilidades con niveles de competencia. Devuelve inmediatamente un role_id; la generación continúa en segundo plano, así que haz polling con check_role_status. Gasta uno de los créditos de generación de rol de esta cuenta. Solo se ejecuta una generación a la vez.

get_account_status

read

Informa a qué cuenta de WorkforceGPT pertenece esta credencial, qué se le permite hacer y cuánto de su cuota queda. Llama a esto primero: así es como descubres si una generación será aceptada antes de construirla.

get_assessment

read

Recupera una evaluación de descripción de puesto ejecutada previamente por id.

get_public_role

sin cuenta necesaria

Recupera un perfil de rol publicado de la biblioteca pública completo. No necesita cuenta.

get_role

read

Recupera un perfil de rol generado completo: descripción, responsabilidades, habilidades con niveles de competencia y los cursos sugeridos por habilidad cuando la generación los pidió.

list_my_assessments

read

Lista las evaluaciones de descripción de puesto recientes de esta cuenta, de más nueva a más antigua, tanto de esta API como de la aplicación web.

list_my_roles

read

Lista los perfiles de rol de esta cuenta, de más nuevo a más antiguo.

search_public_roles

sin cuenta necesaria

Busca en la biblioteca pública de roles de WorkforceGPT — perfiles de rol que sus autores eligieron publicar. No necesita cuenta. Úsala para ejemplos de cómo se ve un perfil generado, o para antecedentes sobre un título.

Cada herramienta declara sus argumentos como JSON Schema, servido tal cual como el inputSchema de MCP, para que tu cliente pueda leer los tipos y los campos obligatorios en lugar de adivinarlos a partir de prosa.

Ejemplos trabajados

Estos son objetos de argumentos, es decir, lo que va en el arguments de un tools/call, o en el cuerpo en la ruta HTTP simple. Si estás manejando a Claude en lugar de escribir un cliente, nunca escribirás estos: están aquí para que puedas ver lo que el agente está enviando realmente.

Puntuar una descripción de puesto

{
  "job_description": "Senior Data Analyst\n\nNorthwind is hiring an analyst to own reporting for the commercial team...",
  "filename": "senior-data-analyst.txt"
}

Iniciar un perfil de rol

{
  "role_title": "Data Analyst",
  "company_name": "Northwind",
  "job_description": "Senior Data Analyst\n\nNorthwind is hiring an analyst to own reporting for the commercial team...",
  "use_job_description_if_title_not_found": true,
  "include_learning_resources": true,
  "learning_resources_source": "Skillsoft"
}

Solo role_title y company_name son obligatorios. El resto se muestran aquí porque son los que vale la pena conocer: la descripción del puesto es lo que salva una generación cuando el título no coincide con los datos del mercado laboral, y los recursos de aprendizaje son el único lugar donde este servidor ofrece una elección de fuente.

Comprobar su estado

{ "role_id": 4812 }

Explorar la biblioteca pública

{ "query": "project manager", "limit": 5 }

Esta y get_public_role leen el corpus publicado en /roles/. No cuestan nada contra la asignación de una cuenta, y en la ruta HTTP simple no necesitan ninguna credencial.

Alcances

Tres, y son lo que la pantalla de consentimiento muestra a la persona que aprueba tu cliente. Pide solo lo que necesitas: un cliente que solicite generate está pidiendo gastar los créditos de alguien, y pueden verlo.

read

Ver tus roles generados y evaluaciones de descripciones de puesto

assess

Puntuar descripciones de puesto en tu nombre

generate

Generar perfiles de rol en tu nombre, usando tus créditos

Cómo se comporta la generación

generate_role no devuelve un perfil de rol. Inicia uno y devuelve un role_id. Haz polling a check_role_status con ese id, aproximadamente cada 30 segundos en lugar de continuamente, hasta que el estado salga de pending.

Cuánto tarda depende del rol y de la carga, y preferimos no darte un número que no podamos cumplir. Lo que sí podemos decirte es el techo: una generación que sigue en marcha después de 60 minutos se marca como fallida, y una generación fallida no gasta un crédito.

Solo se ejecuta una generación por cuenta a la vez. Iniciar una segunda mientras una está en vuelo devuelve generation_in_progress en lugar de ponerla en cola.

Qué devuelve

Una vez que el estado es completed, tanto check_role_status como get_role contienen un arreglo de result. Cada entrada es un perfil de rol, con la descripción, las responsabilidades, las habilidades (cada una con su importancia, su nivel de competencia requerido y los indicadores de comportamiento para cada nivel).

Un aspecto importante sobre ese objeto: es la forma propia del motor de generación, transmitida en lugar de reescrita, con una única excepción. Los cursos sugeridos se normalizan al salir, de modo que un curso se lee aquí igual que desde get_public_role:

result[0].skills[0].learning_resources[0] = {
  "title":       "Analyzing Data with Power BI",
  "provider":    "Skillsoft",
  "year":        "2024",
  "description": "...",
  "url":         "https://..."
}

Están presentes por defecto. Pasa include_learning_resources: false a generate_role para obtener un perfil más corto cuando nadie vaya a actuar sobre las sugerencias de formación, y learning_resources_source para elegir el catálogo. Lee el campo de forma defensiva: una habilidad sin nada que sugerir, o un perfil generado sin ellas, lleva una lista vacía o ninguna clave. Ninguno de los dos es un error.

assess_job_description es al revés: se ejecuta de forma síncrona y responde en la misma solicitud. Hace trabajo real, así que dale a la llamada un tiempo de espera generoso del cliente en lugar de los pocos segundos por defecto.

Límites

Cada rechazo te indica qué límite alcanzaste, qué le queda a la cuenta y dónde obtener más. No deberías tener que deducirlo a partir de un código de estado.

Generaciones de roles

3 por cuenta

Evaluaciones de descripciones de puesto a través de esta API

3 por cuenta

Generaciones concurrentes

1

Las evaluaciones ejecutadas desde la aplicación web son gratuitas y sin medir; solo se cuentan las de la API, porque un agente puede hacer bucles donde una persona que hace clic en un botón no. Publicar un rol generado en la biblioteca pública otorga a la cuenta una generación adicional, pero publicar es una acción de la aplicación web. Consulta lo que no hará.

Llama a get_account_status antes de planificar el trabajo. Devuelve el mismo bloque de cuota que lleva cada rechazo, para que puedas saber si no te queda nada antes de construir una solicitud, en lugar de después.

Cuando una cuenta se agota

Aún no hay recarga de autoservicio. Habla con TalentGuard y lo resolveremos.

Lo que este servidor deliberadamente no hará

Publicar nada. Los roles pueden publicarse en una biblioteca pública indexada por buscadores en /roles/, bajo el nombre del titular de la cuenta si así lo elige. Esa es una decisión sobre la huella pública de alguien, y no es una que un agente pueda tomar de manera significativa en su nombre, por lo que no hay herramienta para ello ni alcance que lo permita. La publicación ocurre en la aplicación web o no ocurre en absoluto.

Tocar una cuenta o los datos de cualquier otra persona. Ninguna herramienta elimina, ninguna herramienta envía correos, ninguna herramienta accede a funciones administrativas. Una credencial se resuelve exactamente a una cuenta y solo ve lo que esa cuenta posee.

Aceptar archivos. Los argumentos de las herramientas MCP son JSON, por lo que una descripción de puesto llega como texto. Si tienes un PDF o un DOCX, envía su texto con cada encabezado y cada elemento de lista en una línea propia. No se necesita Markdown. Lo que importa son los saltos de línea: el texto unido en un solo párrafo se puntúa como un muro de prosa, porque eso es lo que llegó.

Cómo funciona la conexión

El primer paso del inicio rápido es toda la configuración. Esto es lo que ocurre debajo, lo cual importa si estás escribiendo un cliente en lugar de usar uno.

El servidor implementa OAuth 2.1. La primera solicitud de tu cliente es rechazada con un 401 que lleva un encabezado WWW-Authenticate que apunta a https://workforcegpt.ai/.well-known/oauth-protected-resource. Desde allí encuentra el servidor de autorización, se registra (el registro dinámico de clientes RFC 7591 está abierto, por eso no hay clave que pegar) y envía a la persona que lo usa a una pantalla de consentimiento. PKCE es obligatorio para cada cliente, incluidos los confidenciales.

La autenticación es obligatoria para cada mensaje, incluido initialize. Eso es deliberado: el 401 es cómo un cliente que solo recibe una URL encuentra todo lo demás, por lo que tiene que ser lo primero que vea un cliente frío.

La persona que aprueba la pantalla de consentimiento debe tener una cuenta de WorkforceGPT con una dirección de correo verificada. El agente actúa entonces como esa persona, contra su cuota.

Si tu cliente no puede hacer descubrimiento OAuth

Apúntalo directamente a estos:

Protected resource  https://workforcegpt.ai/.well-known/oauth-protected-resource
Authorization server https://workforcegpt.ai/.well-known/oauth-authorization-server
MCP endpoint         https://workforcegpt.ai/mcp  (POST, JSON-RPC 2.0)

Revisiones de protocolo compatibles: 2025-11-25, 2025-06-18, 2025-03-26. Si la tuya es más nueva, initialize negocia en lugar de rechazar: responde con la más reciente que hablamos y tú decides si continuar. Cada otro método responde a un encabezado MCP-Protocol-Version que no conocemos con un 400 que nombra lo que sí conocemos, que es lo que pide la especificación del transporte. ⚠️ El 401 siempre viene primero, para que un cliente con una revisión más avanzada que la nuestra aún pueda descubrir cómo iniciar sesión. El servidor no tiene estado, es decir, no emite Mcp-Session-Id, y no ofrece flujo iniciado por el servidor, por lo que un GET que pida text/event-stream recibe como respuesta 405. Lo mismo ocurre con DELETE, ya que no hay sesión que terminar.

Métodos: initialize, ping, tools/list, tools/call y notifications/*, que se reconocen y no se responden. Solo tools se anuncia bajo capacidades, con listChanged: false, porque el conjunto de herramientas es fijo cuando el servidor se inicia.

Una llamada de herramienta rechazada es un resultado, no un error de protocolo. Una cuota agotada, un id desconocido, un argumento incorrecto o un alcance faltante vuelven como isError: true con la razón en structuredContent, porque el protocolo funcionó y el agente necesita leer el porqué. Solo un nombre de herramienta desconocido o un params malformado es un error JSON-RPC. Trata el primer tipo como una falla de transporte y ocultarás el mensaje que dice qué hacer a continuación.

Sin un cliente MCP

Las mismas herramientas son accesibles a través de HTTP ordinario si estás construyendo algo que no habla MCP. Misma credencial, mismas cuotas, mismas respuestas: POST https://workforcegpt.ai/api/v1/mcp/tools/<name> con un objeto JSON de argumentos.

curl -s https://workforcegpt.ai/api/v1/mcp/tools \
  | jq '.tools[] | {name, scope}'

curl -s -X POST https://workforcegpt.ai/api/v1/mcp/tools/get_account_status \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" -d '{}'

Las dos herramientas de la biblioteca pública (search_public_roles y get_public_role) no necesitan credencial alguna en esta ruta. Leen el mismo corpus que los buscadores ya indexan, para que puedas ver cómo se ve un perfil de rol terminado antes de que alguien se registre en algo. Esta se ejecuta tal como está:

curl -s -X POST https://workforcegpt.ai/api/v1/mcp/tools/search_public_roles \
  -H "Content-Type: application/json" \
  -d '{"query": "project manager", "limit": 5}'

A través de MCP mismo, cada herramienta necesita un token, incluidas esas dos. Eso es lo que mantiene intacto el arranque 401, y un cliente que se ha conectado tiene un token de todos modos.

Una cuenta es gratuita de crear y viene con 3 generaciones de roles.

Privacidad