ipdata MCP by usefulapi
Look up location, network, company and threat data for IP addresses and ASNs in ipdata.
Descripción del creador (original en inglés)
Occupation classifier: free text to ranked O*NET-SOC codes with tasks, skills and RIASEC. Local.
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
Elige la app de IA que usas y copia la configuración.
Necesitas
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json
{
"mcpServers": {
"onet-match": {
"command": "uvx",
"args": [
"onet-match",
"mcp"
]
}
}
}Ejecuta esto en tu terminal
claude mcp add onet-match -- uvx onet-match mcpPégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"onet-match": {
"command": "uvx",
"args": [
"onet-match",
"mcp"
]
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"onet-match": {
"type": "stdio",
"command": "uvx",
"args": [
"onet-match",
"mcp"
]
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 7 nov 2026
El nombre en el registro se verificó con la cuenta de GitHub Benjamin-V-Chan, dueña del repo
Todavía no hemos leído este repo en GitHub
Todavía no hemos leído este repo en GitHub
Este se ejecuta en tu computadora; no hay endpoint en internet
Se ejecuta en tu computadora y usa ajustes locales en su lugar
Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.
Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).
El repo de GitHub cambió por última vez –, y la última versión (0.3.5) llegó al registro hace 6 días.
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Python (uv) en tu computadora.
En la misma categoría: ipdata MCP by usefulapi, MaxMind minFraud MCP by usefulapi, Lambda Labs MCP by usefulapi
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
Look up location, network, company and threat data for IP addresses and ASNs in ipdata.
MCP server for MaxMind minFraud — score transactions for fraud risk from your AI assistant.
Read GPU instances, types, images, filesystems and firewall rules; launch and terminate instances.
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
**Occupation classification and job-title normalization against the O\*NET-SOC taxonomy.** onet-match turns messy, unstructured text about work (job titles, resume bullets, job postings, project descriptions, interest statements, skill lists) into standardized SOC codes with a fine-tuned retrieve-and-rerank transformer pipeline. On held-out O\*NET text it ranks the right occupation first 51% of the time, against 21% for a TF-IDF baseline, and 65% vs 17% on messy, human-style inputs. Each result is enriched with O\*NET tasks, skills, knowledge and RIASEC interests, and comes with a calibrated confidence. Use it from Python, the command line, a REST API or any MCP-compatible agent, with no API keys.
| use case | input | top match (confidence) |
|---|---|---|
| Career exploration | designed our robot in CAD and wired its circuits for my high school robotics team | Robotics Engineers, 17-2199.08 (0.38); #2 Robotics Technicians |
| Career exploration | I love weather, maps and tracking storms | Atmospheric and Space Scientists, 19-2021.00 (0.87) |
| Skills-based hiring | Must know survival analysis, R, SAS and clinical trial data | Biostatisticians, 15-2041.01 (0.60) |
| Skills-based hiring | Must know Solidity, smart contracts and Ethereum | Blockchain Engineers, 15-1299.07 (0.81) |
| Resume parsing | Led a team of 12 nurses on a cardiac ICU night shift | Critical Care Nurses, 29-1141.03 (0.42); #2 Acute Care Nurses |
| Resume parsing | Excel, QuickBooks, payroll, AP/AR | Payroll and Timekeeping Clerks, 43-3051.00 (0.49) |
| Career counseling | skills: Python, SQL, Tableau; interests: sports statistics | Statisticians, 15-2041.00 (0.59) |
| Job-posting normalization | {"title": "Wind Turbine Tech", "requirements": ["climbing", "hydraulics", "electrical troubleshooting"]} | Wind Turbine Service Technicians, 49-9081.00 (0.81) |
Real outputs of the served model, saved in outputs/examples/readme_examples.json.
pip install "onet-match[matching]"
from onet_match import match
result = match("Must know survival analysis, R, SAS and clinical trial data", top_k=5) for m in result.matches: print(m.soc, m.title, m.confidence) print(result.profile["riasec_code"]) # aggregate interest code, e.g. "ICS"
The package imports as onet_match and provides the onet-match command. The first call downloads the pretrained model bundle (about 0.5 GB) from the Hugging Face Hub (BenjaminChan12/onet-match) and caches it.
onet-match match "Excel, QuickBooks, payroll, AP/AR" # CLI (add --json for JSON)
pip install "onet-match[matching,serve]" onet-match serve --port 8000 # REST API curl -s localhost:8000/match -H 'content-type: application/json' \ -d '{"text": "I love weather, maps and tracking storms", "top_k": 3}'
REST routes: POST /match, POST /match/batch, GET /occupation/{soc} and GET /health. The full request and response contract and the Docker setup are in docs/API.md.
For coding agents: llms.txt is a one-page summary, and AGENTS.md covers usage from another project and work inside this repo.
onet-match mcp runs a Model Context Protocol server with two read-only tools: match_occupations(text, top_k) and get_occupation(soc). Add it to any MCP client (Claude Desktop, Cursor, VS Code and others):
{
"mcpServers": { "onet-match": { "command": "uvx", "args": ["--from", "onet-match[mcp]", "onet-match", "mcp"] } } }
Without uv, run pip install "onet-match[mcp]" and use "command": "onet-match", "args": ["mcp"]. For a remote server, use onet-match mcp --transport streamable-http --port 8001 (served at /mcp). Tool arguments and return fields are in docs/API.md. Listed in the MCP Registry as io.github.Benjamin-V-Chan/onet-match, on Glama and on mcpservers.org.
soc, title, confidence (calibrated, 0–1), score, major_group and its title, job_zone, riasec_code, description, top_tasks, top_skills and top_knowledge (with O\*NET importance and level). Each result also carries a profile that aggregates skills, knowledge and all six RIASEC interests across the matches, weighted by confidence.
llms.txt).Worked example: onet-match-job-postings codes 3,000 LinkedIn job postings and compares pay by occupation group.
Details and integration patterns: docs/APPLICATIONS.md.
All models are evaluated on the same held-out splits. Every number traces to a saved run in outputs/runs/.
| model | O\*NET test top-1 | O\*NET test top-5 | messy-text test top-1 | messy-text test top-5 | p50 latency |
|---|---|---|---|---|---|
| TF-IDF baseline | 20.5% | 40.5% | 17.4% | 39.2% | 0.5 ms |
| BM25 | 20.7% | 40.1% | 24.1% | 45.2% | 0.2 ms |
| bge-base-en-v1.5, off the shelf | 36.1% | 64.3% | 45.4% | 77.6% | 6.9 ms |
| fine-tuned bge-base | 50.2% | 78.2% | 65.2% | 92.6% | 6.8 ms |
| fine-tuned bge-base + reranker (served) | 51.1% | 79.1% | 65.4% | 92.9% | 46.7 ms |
flowchart LR
B["O*NET 31.0 database (bulk download)"] --> C["Occupation catalog 923 occupations"] C --> P["Labeled pairs titles · tasks · activities"] C --> S["LLM-written messy text train: model A · test: model B"] P --> T["Fine-tune bi-encoder
(Hugging Face Hub)"] BU --> API["match() · onet-match CLI · REST API"]
The validation and test tasks are removed from the occupation documents the models search, so no test text leaks into retrieval. Synthetic training and test text come from different LLMs.
The demo Space runs the same pipeline client-side with transformers.js: both models are exported to ONNX and quantized to int8 (about 130 MB, cached after the first visit). demo/build.py builds it from a bundle. Quantization and the browser runtime shift results slightly: on 800 test queries the browser picks the same top match as the Python package 95% of the time, with top-1 accuracy 61.5% vs 62.6% (outputs/demo/browser_parity.json). Use the Python package for anything that matters.
The onet_data_collector package (onet-collect) downloads and verifies O\*NET database releases, which needs no credentials. It also wraps O\*NET Web Services: keyword search, occupation details and flattened profiles. See docs/COLLECTOR.md.
onet-collect bulk download # download + verify the latest O*NET database
onet-match collect "healthcare" "technology" # Web Services search (free O*NET account, see .env.example) onet-match eda | keywords | cluster # classic analysis: coverage, keyword attribution, TF-IDF clusters
git clone https://github.com/Benjamin-V-Chan/onet-match && cd onet-match
pip install -e ".[dev]" onet-match matching build-data # O*NET catalog, labeled pairs, splits scripts/matching/reproduce.sh # every model, ablation and the results report onet-match matching bundle " " --run # package a model for serving
WITH_SYNTH=1 TRAIN_LLM= EVAL_PROVIDER= EVAL_LLM= scripts/matching/reproduce.sh also generates the messy training and test text, using a different LLM for each. It needs LLM API keys in environment variables.scripts/matching/.pytest runs fully offline, using tiny local models and a mocked LLM.Set ONET_MATCH_BUNDLE=/path/to/bundle to serve your own model, or ONET_MATCH_HF_REPO=owner/repo to load one from the Hub.
This project was originally built in 2024 as an open-source edtech tool for analyzing O*NET occupational data at scale, and as part of my capstone project for an engineering course. Its analytics pipeline (EDA, occupation clustering, and keyword attribution) was later integrated into production products at Project Leo, and has inspired related work at other companies and projects.
In 2026 it was rebuilt around semantic occupation
Solo se muestra el principio; lee el resto en el repo