ipdata MCP by usefulapi
Look up location, network, company and threat data for IP addresses and ASNs in ipdata.
作者による説明(英語の原文)
Occupation classifier: free text to ranked O*NET-SOC codes with tasks, skills and RIASEC. Local.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"onet-match": {
"command": "uvx",
"args": [
"onet-match",
"mcp"
]
}
}
}ターミナルでこれを実行します
claude mcp add onet-match -- uvx onet-match mcpプロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"onet-match": {
"command": "uvx",
"args": [
"onet-match",
"mcp"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"onet-match": {
"type": "stdio",
"command": "uvx",
"args": [
"onet-match",
"mcp"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント Benjamin-V-Chan で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.3.5)がレジストリに届いたのは6 日前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。
同じカテゴリには:ipdata MCP by usefulapi, MaxMind minFraud MCP by usefulapi, Lambda Labs MCP by usefulapi
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
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.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
**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
冒頭だけを表示しています。続きはリポジトリで読めます