SUNGMYEONGGI/ninehire-mcp-server
If you are the rightful owner of ninehire-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The NineHire MCP server is designed to automate HR workflows using natural language processing.
ninehire_get_jobs
Retrieve a list of job postings with various filtering options.
ninehire_get_job_detail
Fetch detailed information about a specific job posting.
ninehire_search_jobs
Search job postings using keywords and other criteria.
λμΈνμ΄μ΄ MCP μλ²
λμΈνμ΄μ΄(NineHire) HR μλν νλ«νΌμ μν MCP(Model Context Protocol) μλ²μ λλ€. μ΄ μλ²λ₯Ό ν΅ν΄ μμ°μ΄λ‘ μ±μ© μν¬νλ‘μ°λ₯Ό μλνν μ μμ΅λλ€.
π μ£Όμ κΈ°λ₯
- μ±μ© κ³΅κ³ κ΄λ¦¬: μ±μ© κ³΅κ³ λͺ©λ‘ μ‘°ν, κ²μ, μμΈ μ 보 μ‘°ν
- μμ°μ΄ μΈν°νμ΄μ€: MCPλ₯Ό ν΅ν μμ°μ΄ κΈ°λ° μνΈμμ©
- μ€μκ° API μ°λ: λμΈνμ΄μ΄ 곡μ APIμ μ€μκ° μ°λ
- μ μ°ν νν°λ§: μ§κ΅°, κ³ μ©νν, νκ·Έ λ± λ€μν 쑰건μΌλ‘ κ²μ
- λΉλκΈ° μ²λ¦¬: κ³ μ±λ₯ λΉλκΈ° API νΈμΆ
π μꡬμ¬ν
- Python: 3.8 μ΄μ
- λμΈνμ΄μ΄ API ν€: μν°νλΌμ΄μ¦ μκΈμ νμ
- μ΄μ체μ : Windows, macOS, Linux μ§μ
π οΈ μ€μΉ λ° μ€μ
1. νλ‘μ νΈ ν΄λ‘
git clone <repository-url>
cd ninehire-mcp
2. ν¨ν€μ§ μ€μΉ
# pip μ¬μ©
pip install -e .
# λλ κ°λ° μμ‘΄μ±κΉμ§ μ€μΉ
pip install -e ".[dev]"
3. νκ²½ λ³μ μ€μ
.env
νμΌμ μμ±νκ³ λμΈνμ΄μ΄ API ν€λ₯Ό μ€μ ν©λλ€:
cp env.example .env
.env
νμΌ λ΄μ©:
# λμΈνμ΄μ΄ API μ€μ (νμ)
NINEHIRE_API_KEY=your_ninehire_api_key_here
NINEHIRE_API_BASE_URL=https://api.ninehire.com/api/v1
# MCP μλ² μ€μ (μ νμ¬ν)
MCP_SERVER_NAME=ninehire-mcp-server
MCP_SERVER_VERSION=1.0.0
# λ‘κΉ
μ€μ (μ νμ¬ν)
LOG_LEVEL=INFO
DEBUG=False
4. API μ°κ²° ν μ€νΈ
python test_client.py
μ±κ³΅ μ λ€μκ³Ό κ°μ μΆλ ₯μ νμΈν μ μμ΅λλ€:
π λμΈνμ΄μ΄ MCP μλ² ν
μ€νΈ μμ
π§ μ€μ μ 보:
- API λ² μ΄μ€ URL: https://api.ninehire.com/api/v1
- λλ²κ·Έ λͺ¨λ: False
βΆοΈ API μ°κ²° ν
μ€νΈ μμ
π λμΈνμ΄μ΄ API μ°κ²° ν
μ€νΈ μ€...
β
API μ°κ²° μ±κ³΅!
β
API μ°κ²° ν
μ€νΈ μλ£
π ν
μ€νΈ κ²°κ³Ό: 4/4 ν΅κ³Ό
π λͺ¨λ ν
μ€νΈκ° μ±κ³΅νμ΅λλ€!
π― MCP μλ² μ€ν
μ§μ μ€ν
python -m ninehire_mcp.server
CLI λͺ λ Ήμ΄ μ€ν
ninehire-mcp-server
μ€ν¬λ¦½νΈ μ€ν
# κ°λ° λͺ¨λλ‘ μ€ν
DEBUG=True python -m ninehire_mcp.server
# λ‘κ·Έ λ 벨 λ³κ²½νμ¬ μ€ν
LOG_LEVEL=DEBUG python -m ninehire_mcp.server
μλ²κ° μ±κ³΅μ μΌλ‘ μμλλ©΄ λ€μκ³Ό κ°μ λ©μμ§κ° μΆλ ₯λ©λλ€:
INFO - λμΈνμ΄μ΄ MCP μλ² μ΄κΈ°ν μμ
INFO - λμΈνμ΄μ΄ API μ°κ²° ν
μ€νΈ μ±κ³΅
INFO - λμΈνμ΄μ΄ MCP μλ² μ΄κΈ°ν μλ£
INFO - λμΈνμ΄μ΄ MCP μλ² μμ: ninehire-mcp-server v1.0.0
π§ μ¬μ© κ°λ₯ν MCP λꡬ
1. ninehire_get_jobs
- μ±μ© κ³΅κ³ λͺ©λ‘ μ‘°ν
μ±μ© κ³΅κ³ λͺ©λ‘μ μ‘°νν©λλ€.
νλΌλ―Έν°:
page
(μ νμ¬ν): νμ΄μ§ λ²νΈ (κΈ°λ³Έκ°: 1)limit
(μ νμ¬ν): νμ΄μ§λΉ κ²°κ³Ό μ (κΈ°λ³Έκ°: 10, μ΅λ: 100)title
(μ νμ¬ν): μ±μ© κ³΅κ³ μ λͺ©μΌλ‘ κ²μtags
(μ νμ¬ν): νκ·Έ λͺ©λ‘μΌλ‘ νν°λ§job_group
(μ νμ¬ν): μ§κ΅°μΌλ‘ νν°λ§employment_type
(μ νμ¬ν): κ³ μ© ννλ‘ νν°λ§include_unpublished
(μ νμ¬ν): λ§κ°λ κ³΅κ³ ν¬ν¨ μ¬λΆinclude_private
(μ νμ¬ν): λΉκ³΅κ° κ³΅κ³ ν¬ν¨ μ¬λΆ
μ¬μ© μμ:
{
"page": 1,
"limit": 20,
"job_group": "κ°λ°",
"employment_type": "full_time"
}
2. ninehire_get_job_detail
- μ±μ© κ³΅κ³ μμΈ μ‘°ν
νΉμ μ±μ© κ³΅κ³ μ μμΈ μ 보λ₯Ό μ‘°νν©λλ€.
νλΌλ―Έν°:
job_id
(νμ): μ‘°νν μ±μ© κ³΅κ³ IDlanguage
(μ νμ¬ν): μΈμ΄ μ€μ ("korean" λλ "english")
μ¬μ© μμ:
{
"job_id": "job_12345",
"language": "korean"
}
3. ninehire_search_jobs
- μ±μ© κ³΅κ³ κ²μ
ν€μλμ 쑰건μΌλ‘ μ±μ© κ³΅κ³ λ₯Ό κ²μν©λλ€.
νλΌλ―Έν°:
keyword
(μ νμ¬ν): κ²μ ν€μλjob_group
(μ νμ¬ν): μ§κ΅°employment_type
(μ νμ¬ν): κ³ μ© ννtags
(μ νμ¬ν): νκ·Έ λͺ©λ‘affiliation
(μ νμ¬ν): μμpage
(μ νμ¬ν): νμ΄μ§ λ²νΈlimit
(μ νμ¬ν): κ²°κ³Ό μ μ ν
μ¬μ© μμ:
{
"keyword": "λ°±μλ κ°λ°μ",
"job_group": "κ°λ°",
"employment_type": "full_time",
"tags": ["Python", "Django"],
"limit": 10
}
πͺ μμ°μ΄ μ¬μ© μμ
MCP ν΄λΌμ΄μΈνΈ(Claude, ChatGPT λ±)μμ λ€μκ³Ό κ°μ΄ μμ°μ΄λ‘ μμ²ν μ μμ΅λλ€:
μ±μ© κ³΅κ³ μ‘°ν
- "λμΈνμ΄μ΄μμ μ΅μ μ±μ© κ³΅κ³ 10κ°λ₯Ό 보μ¬μ€"
- "κ°λ° μ§κ΅°μ μ κ·μ§ μ±μ© κ³΅κ³ λ₯Ό μ°Ύμμ€"
- "Python νκ·Έκ° μλ μ±μ© κ³΅κ³ λ₯Ό κ²μν΄μ€"
μμΈ μ 보 μ‘°ν
- "μ±μ© κ³΅κ³ ID job_12345μ μμΈ μ 보λ₯Ό μλ €μ€"
- "첫 λ²μ§Έ μ±μ© κ³΅κ³ μ μμΈν λ΄μ©μ 보μ¬μ€"
μ‘°κ±΄λ³ κ²μ
- "λ°±μλ κ°λ°μ μ±μ© κ³΅κ³ λ₯Ό μ°Ύμμ€"
- "μ€ννΈμ μμ ν리λμλ‘ μΌν μ μλ κ³΅κ³ κ° μλ?"
- "λ§κ°μΌμ΄ μλ°ν μ±μ© κ³΅κ³ λ₯Ό 보μ¬μ€"
π λ¬Έμ ν΄κ²°
API ν€ κ΄λ ¨ μ€λ₯
β λμΈνμ΄μ΄ API ν€κ° μ€μ λμ§ μμμ΅λλ€.
ν΄κ²°λ°©λ²:
.env
νμΌμNINEHIRE_API_KEY
μ€μ νμΈ- λμΈνμ΄μ΄ κ΄λ¦¬μ νμ΄μ§μμ API ν€ λ°κΈ νμΈ
- μν°νλΌμ΄μ¦ μκΈμ κ°μ μ¬λΆ νμΈ
API μ°κ²° μ€ν¨
β λμΈνμ΄μ΄ API μ°κ²° μ€ν¨!
ν΄κ²°λ°©λ²:
- μΈν°λ· μ°κ²° μν νμΈ
- API ν€ μ ν¨μ± νμΈ
- λ°©νλ²½ μ€μ νμΈ
- API λ² μ΄μ€ URL νμΈ (
https://api.ninehire.com/api/v1
)
μμ‘΄μ± μ€λ₯
ModuleNotFoundError: No module named 'mcp'
ν΄κ²°λ°©λ²:
pip install -e ".[dev]"
π κ°λ°μ κ°μ΄λ
μ½λ ꡬ쑰
ninehire_mcp/
βββ __init__.py # ν¨ν€μ§ μ΄κΈ°ν
βββ config.py # μ€μ κ΄λ¦¬
βββ server.py # MCP μλ² λ©μΈ μ½λ
βββ api/ # API ν΄λΌμ΄μΈνΈ
β βββ __init__.py
β βββ client.py # λμΈνμ΄μ΄ API ν΄λΌμ΄μΈνΈ
β βββ types.py # API νμ
μ μ
βββ tools/ # MCP λꡬλ€
βββ __init__.py
βββ base.py # λꡬ λ² μ΄μ€ ν΄λμ€
βββ jobs.py # μ±μ© κ³΅κ³ κ΄λ ¨ λꡬ
μλ‘μ΄ λꡬ μΆκ°
ninehire_mcp/tools/
λλ ν 리μ μ νμΌ μμ±BaseTool
ν΄λμ€λ₯Ό μμλ°λ λꡬ ν΄λμ€ κ΅¬νschema
μμ±κ³Όexecute
λ©μλ ꡬνtools/__init__.py
μ μ λꡬ μΆκ°
ν μ€νΈ μ€ν
# κΈ°λ³Έ ν
μ€νΈ
python test_client.py
# νΉμ κΈ°λ₯λ§ ν
μ€νΈ
python -c "
import asyncio
from test_client import test_api_connection
asyncio.run(test_api_connection())
"
λ‘κΉ μ€μ
import logging
# λλ²κ·Έ λͺ¨λ νμ±ν
logging.getLogger('ninehire_mcp').setLevel(logging.DEBUG)
# λλ νκ²½λ³μλ‘ μ€μ
DEBUG=True LOG_LEVEL=DEBUG python -m ninehire_mcp.server
π WebHook μ°λ (ν₯ν μμ )
λμΈνμ΄μ΄ μΉν μ΄λ²€νΈλ₯Ό μ²λ¦¬νμ¬ μ€μκ° μν¬νλ‘μ° μλνλ₯Ό μ§μν μμ μ λλ€.
μ§μ μμ μ΄λ²€νΈ:
- μ§μμ ν©κ²©/λΆν©κ²© μν λ³κ²½
- μλ‘μ΄ μ§μμ μ μ
- λ©΄μ μΌμ λ³κ²½
- μ±μ© κ³΅κ³ μν λ³κ²½
π λΌμ΄μ μ€
MIT License
π€ κΈ°μ¬νκΈ°
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
π μ§μ
- μ΄μ 리ν¬νΈ: GitHub Issues
- λ¬Έμμ¬ν: []
- λμΈνμ΄μ΄ λ¬Έμ: https://guide.ninehire.com
Happy Hiring with NineHire MCP! π