Naukri MCP Server
Naukri MCP Server
一个由 117 个原子化工具组成的 MCP 服务器,用于自动化 Naukri.com(印度最大的求职门户网站)。搜索职位、批量投递、管理个人资料、跟踪投递记录、调研公司、监控招聘方动态——所有操作都可以在 MCP 客户端中完成。专为 Claude Code 的渐进式 Tool Search 加载(自 2026 年 1 月起默认启用)而设计,因此每个工具都是单一用途,可按需发现。
技术栈: Python 3.10+、FastMCP、Playwright(持久化 Chromium)、aiohttp
关键能力:
搜索与投递 -- 关键词搜索、个性化推荐、单次或批量投递,自动回答筛选问题
投递跟踪 -- 本地 JSON 持久化 + 从 Naukri 后端进行 3 层同步(REST、浏览器拦截、HTML 抓取)
个人资料管理 -- 查看/编辑个人资料(
naukri_get_profile、naukri_update_profile),提升曝光度(naukri_boost_profile)公司调研 --
naukri_research_company加 AmbitionBox 桥接,获取薪资数据与员工评价效果分析 --
naukri_search_impressions、naukri_recruiter_activity、naukri_activity_level智能自动化 --
naukri_auto_hunt(一键求职并带匹配度评分)、naukri_daily_brief(每日晨间面板)、naukri_tailor_resume、naukri_apply_top_fits(自动投递最佳匹配)
架构
naukri.py # Entry point (FastMCP run)
naukri_server/
__init__.py # FastMCP setup + lifespan (browser start/stop)
config.py # Constants, API endpoints, timeouts
browser.py # PagePool (3 tabs) + TokenManager (JWT caching)
api.py # Deduplicated _api_request, @api_tool decorator
cache.py # Answer cache for auto-apply screening questions
scoring.py # Alias-aware fit scoring
validation.py # Response validators (job lists, profiles, etc.)
utils.py # Shared helpers
tools/ # 27 tool modules (117 tools)
auth.py # Login, OTP verification, login status
search.py # Job search, recommendations
jobs.py # Job detail, similar, compare, bulk, report fraud
apply.py # Applications: list, detail, apply, batch, purge, stale, follow-up
tracking.py # Saved jobs: list, save, unsave, sync
smart_apply.py # Smart apply with fit scoring
auto_hunt.py # One-call automated job hunting
profile.py # Profile CRUD, dashboard, boost, audit
resume_photo.py # Resume/photo info, upload, download, delete
resume_builder.py # Resume templates, builder status, tailor
sync.py # Sync applications/saved jobs, export
insights.py # Application insights, salary, match analytics, skill gap, taxonomy
performance.py # Search impressions, recruiter activity
companies.py # Company search, jobs, slug, research, follow/unfollow
ambitionbox.py # Salary data, reviews, interviews (AmbitionBox)
inbox.py # Recruiter messages, NVites, mark_interested
notifications.py # Notification feed, mark read, count, summary
settings.py # Account settings, blocked companies, email, visibility, subscription
alerts.py # Job alert CRUD
early_access.py # Pre-posted roles from top companies
mock_interview.py # AI mock interview topics, sessions, history
reminders.py # Follow-up reminders
daily_brief.py # Morning dashboard summary
health.py # Endpoint validation, browser pool, AmbitionBox checks
debug/ # Multi-action debug tool (16 actions)混合浏览器 + REST 策略
Naukri 的 Akamai CDN 会拦截某些端点的直接 REST 调用。因此这台服务器采用混合策略:
策略 | 使用方 | 原因 |
直接 REST API |
| 速度快,不需要打开浏览器标签页。使用从浏览器 cookie 中提取的 JWT 令牌。 |
浏览器拦截 |
| 直接 REST 请求搜索 API 会返回 406。浏览器导航到页面并拦截 XHR 响应。 |
浏览器 UI 自动化 |
| 需要点击按钮、填写表单、处理 SSO 弹窗。Akamai 会拦截通过 REST 发出的 PUT/DELETE 请求。 |
AmbitionBox 抓取 |
| 从服务端渲染的 Next.js 页面中提取 |
PagePool
服务器维护一个包含 3 个浏览器标签页的池(可通过 NAUKRI_MAX_TABS 配置)。标签页通过信号量借出,崩溃后自动恢复,使用后归还。这使得批量投递等并发操作可以并行运行,而无需打开过多标签页。
TokenManager
JWT 认证令牌(nauk_at cookie)从 Playwright 浏览器上下文中提取并缓存到内存。遇到 401 错误时,单写入者刷新锁可防止并行刷新风暴——一个请求负责刷新,其他请求等待并复用结果。
3 层同步回退
naukri_sync_applications() 会按顺序尝试三种策略:
REST API -- 对历史记录端点进行分页 GET(最快、最可靠)
浏览器拦截 -- 导航到已投递职位页面并捕获 XHR 响应
HTML 抓取 -- 使用自适应 CSS 选择器从服务端渲染的 DOM 中提取职位卡片
Related MCP server: LinkedIn MCP Server
AI 用户快速入门
1. naukri_auth_status() # Check session
naukri_login(method="google") # Authenticate (Google SSO or email)
2. naukri_daily_brief() # Morning dashboard: recommendations + analytics
3. naukri_auto_hunt(keywords="...", location="...") # One-call job hunt with fit scoring
4. naukri_assess_fit(job_id=...) # Pre-flight check before applying
naukri_apply(job_id=...) # Submit application
5. naukri_compare_jobs(job_ids=[id1, id2, id3]) # Side-by-side with fit scores
6. naukri_accept_nvite(nvite_job_id="...") # Respond to recruiter NVites
7. naukri_sync_applications() # Pull latest from Naukri backend
naukri_list_applications() # Query local tracking
8. naukri_research_company(keyword="...") # Unified: Naukri + AmbitionBox data
naukri_company_intel(company="slug", intel_type="interviews") # Interview tips
9. naukri_tailor_resume(job_id=...) # Get tailoring suggestions
naukri_update_profile(...) # Apply them
10. naukri_download_resume(save_path="...") # Download resume**投递流程详情:**如果职位带筛选问题,第一次调用 naukri_apply() 会返回这些问题;在第二次调用时把答案传回。答案键采用模糊匹配——"current ctc" 能够匹配 "What is your current CTC?"。答案会缓存在 questions.json 中,因此每种类型的问题你只需要回答一次。
工具(117 个原子化工具)
几乎所有工具都遵循单一用途原子模式——每个操作对应一个 MCP 工具。只有 naukri_company_intel 和 naukri_debug 保留了 action/intel_type 参数(原因见下方“Dispatcher 工具”小节)。这个目录是为 Claude Code 的渐进式 Tool Search 加载(自 2026 年 1 月起默认)设计的,因此大量专注单一职责的工具在成本上并不比少数多用途工具更高。
认证
naukri_login(method=...)— Google 单点登录或邮箱/密码naukri_verify_otp(otp)— 登录后提交 OTPnaukri_auth_status()— 检查会话是否有有效
职位搜索与发现
naukri_search_jobs— 通过浏览器拦截实现关键词搜索naukri_get_recommendations— 个性化职位推荐naukri_get_job(job_id)— 完整职位详情naukri_similar_jobs(job_id)— 查找类似职位naukri_compare_jobs(job_ids)— 并排比较并附匹配度评分naukri_bulk_fetch_jobs(job_ids)— 一次调用最多获取 20 个职位naukri_job_detail_v1(job_id)— Walk-in 信息、联系方式naukri_report_fraud(job_id, reason)— 举报虚假职位信息naukri_auto_hunt— 一键自动求职并带匹配度评分
投递与跟踪
naukri_apply(job_id, set_reminder_days=...)— 单次投递并自动设置提醒naukri_batch_apply(keywords=...)— 根据搜索条件批量投递naukri_assess_fit(job_id, apply_if_fit=False)— 匹配度评估(可选自动投递)naukri_score_saved_jobs(min_fit_score=60)— 对全部收藏职位评分naukri_apply_top_fits(min_fit_score=70, limit=10)— 评分并自动投递最佳匹配naukri_list_applications(...)— 查询本地投递记录naukri_get_application(job_id)— 详细投递状态naukri_purge_applications(before_date)— 删除旧记录naukri_stale_applications(...)— 检测失效投递naukri_follow_up_priority(...)— 结合收件箱与提醒计算跟进优先级naukri_draft_follow_up(job_id)— 生成跟进消息naukri_recruiter_history()— 按公司的沟通历史
同步与导出
naukri_sync_applications(force_browser=False, days_back=365)— 3 层同步naukri_sync_saved(force_browser=False)— 同步收藏职位naukri_export_data(data_type, export_format="json")— 导出为 JSON/CSV
收藏职位
naukri_list_saved_jobs(limit=50, page=1)— 列出已收藏/书签职位naukri_save_job(job_id, ...)— 收藏职位naukri_unsave_job(job_id)— 取消收藏职位naukri_sync_saved_jobs()— 从 Naukri 服务器拉取
收件箱(招聘方消息)
naukri_list_inbox(limit=20, unread_only=False)— 列出消息naukri_read_message(message_id, vcard_id, unique_id)— 阅读完整消息naukri_mark_interested(mail_id, conversation_id, interested=True)— 标记为感兴趣naukri_accept_nvite(nvite_job_id, ...)— 通过 NVite 投递
通知
naukri_list_notifications(limit=20, page=1, notif_type=None)— 筛选列表naukri_notification_count()— 未读数量naukri_mark_notification_read(notification_id, date)— 标记单个已读naukri_mark_all_notifications_read()— 全部标记为已读naukri_notification_summary()— 统一摘要面板
个人资料
naukri_get_profile()— 完整个人资料naukri_update_profile(fields, ...)— 更新个人资料字段naukri_audit_profile()— 完整度检查与建议naukri_boost_profile(randomize=False)— 重新保存标题以提升可见性naukri_dashboard()— 个人资料面板数据naukri_profile_targeting()— DFP 定向视图
简历与照片
naukri_resume_info()— 简历元数据naukri_upload_resume(file_path)— 上传 PDF/DOC/DOCXnaukri_download_resume(save_path)— 下载到本地文件naukri_photo_info()— 照片元数据naukri_upload_photo(file_path)— 上传 PNG/JPG/JPEG/GIFnaukri_delete_photo()— 删除个人资料照片
洞察与分析
naukri_application_insights(days=30)— 状态细分与节奏naukri_salary_position(designation=...)— 薪资定位naukri_cached_answers(action="list|update|delete", key=..., new_answer=...)— 管理缓存答案naukri_match_analytics(days=30)— 各字段匹配度细分naukri_match_quality(days=30)— 整体匹配质量naukri_skill_gap(...)— 技能与市场需求差距分析naukri_salary_benchmark(keywords, ...)— 市场薪资基准naukri_taxonomy()— Naukri 职位分类体系(37 部门 × 167 类 × 1461 个角色)naukri_profile_prompts()— 待完成的资料完善动作naukri_conversion_funnel(days=30)— 从投递到面试的转化漏斗naukri_status_changes(days=30)— 检测状态变化
效果表现
naukri_search_impressions(days=7)— 搜索结果展示统计naukri_recruiter_activity(page=1, limit=100, filter_by=None)— 招聘方在您资料上的操作naukri_activity_level()— 当前资料活跃度
公司
公司
naukri_search_companies(keyword, page=1, limit=10)— 查找公司naukri_company_jobs(group_id, ...)— 某公司的职位naukri_company_slug(group_id)— AmbitionBox slug(单个或逗号分隔的批量)naukri_research_company(keyword, ...)— Naukri + AmbitionBox 组合调研naukri_follow_company(group_id|group_ids, action="follow|unfollow")— 关注 / 取消关注naukri_follow_status(group_id|group_ids)— 查看关注状态naukri_company_intel(company, intel_type="salary|reviews|interviews")— AmbitionBox 情报
设置
naukri_get_settings()— 当前账号全部设置(求职状态、通知、授权标记)naukri_update_settings(...)— 修改设置(只传要修改的字段)naukri_blocked_companies()— 列出已屏蔽的公司naukri_check_email()— 邮箱/手机验证状态naukri_visibility()— Resdex 可见性开关naukri_notification_prefs()— 邮件/SMS/推送/WhatsApp 偏好naukri_subscription_status()— Naukri 360 订阅与功能
职位提醒
naukri_list_alerts()— 所有已保存搜索的职位提醒naukri_alert_detail(alert_id)— 单个提醒详情naukri_create_alert(name, keywords, ...)— 创建新提醒naukri_update_alert(alert_id, ...)— 编辑提醒字段naukri_delete_alert(alert_id)— 删除提醒
提前开放(预售岗位)
naukri_list_early_access(...)— 浏览顶级公司的预发布岗位naukri_share_early_access(job_id)— 标记兴趣(即时提醒、无初筛)
简历工具
naukri_resume_templates()— 可用模板(免费 + 专业)naukri_resume_builder_status()— 剩余 AI 重写次数与订阅等级naukri_tailor_resume(job_id, ...)— 针对特定投递定制的建议
模拟面试(AI)
naukri_mock_interview_topics()— 可用主题与完成状态naukri_mock_interview_history()— 过往面试记录与评分/反馈naukri_start_mock_interview(job_id)— 根据 JD 开始的模拟面试naukri_answer_mock_interview(test_id, topic_id, question_id, answer)— 提交回答naukri_mock_interview_prep(job_id)— 面试准备资料包
自主代理
以下是翻译后的中文内容:
naukri_agent_status()— 智能体状态 + 最近 5 次运行 + 配置摘要naukri_agent_config()— 完整配置naukri_agent_update_config(updates)— 用 JSON 修改配置naukri_agent_run_now(ctx=None)— 执行一次“观察→决策→行动→学习”循环naukri_agent_approve(cycle_id)— 批准待处理的决策naukri_agent_reject(cycle_id)— 拒绝待处理的决策naukri_agent_history(limit=10)— 最近的运行历史naukri_agent_decisions(cycle_id)— 单次循环中每个职位的决策
后台调度器
naukri_scheduler_status()— 调度器状态 + 每个任务最近运行的信息naukri_enable_task(task_name)— 启用已禁用的任务naukri_disable_task(task_name)— 禁用任务naukri_run_task_now(task_name)— 立即执行任务naukri_task_history(task_name=None, limit=20)— 最近运行历史
提醒与面试
naukri_list_reminders(include_past=True, include_app_status=True)— 所有提醒及到期状态naukri_set_reminder(job_id, days=7, ...)— 创建/更新提醒naukri_interview_prep(job_id)— 面试准备资料包naukri_add_interview_round(job_id, round_type, ...)— 跟踪面试轮次naukri_list_interview_rounds(job_id=None)— 列出面谈轮次naukri_compare_offers(job_ids)— 比较多个职位录用条件
分发工具(仅剩 2 个——按设计保留)
naukri_company_intel(company, intel_type="salary|reviews|interviews")— 三种操作共享同一个company解析和 AmbitionBox 认证流程;拆分会导致编排逻辑重复。naukri_debug(action=...)— 16 个仅限开发环境使用的调试操作,分布在浏览器/API/发现模块;即使使用渐进加载,目录开销仍然真实存在,因为大多数用户不会调用它们。
其他
naukri_daily_brief— 晨间仪表板:16 个数据源 + 推荐操作naukri_health_check— 端点检查 + 浏览器池 + AmbitionBox
设置
前置条件
Python 3.10+
Playwright Chromium(通过
playwright install chromium安装)
安装
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
pip install -e ../jobcore # shared scoring engine - see below
playwright install chromiumjobcore 依赖
技能分类、匹配度评分和薪资解析位于同级包
jobcore 中;naukri_server/scoring.py
和 domain/ 评分模块只是其瘦层再导出。它不在 PyPI 上,因此有两种安装方式,且二者有意加以区分:
环境 | 方式 | 原因 |
本地开发 |
| 可同时修改 jobcore 和 Naukri 代码,无需重新安装 |
CI |
| CI 运行环境没有 |
不要把 git URL 添加到 requirements.txt。 这会破坏可编辑安装:在
pip install -e ../jobcore 之后,后再执行 pip install -r requirements.txt 会卸载可编辑安装包并用 git 检出替换,而且过程是静默的,
因为 pip 不会为直接 URL 依赖打印 “already satisfied”。该行为已在干净的 venv
环境中 2026-08-20 验证并复现两次。这里本地迭代优先于 CI 便利性,
因此 CI 端才从 git 安装依赖。
如果你重建了 venv,或看到 ModuleNotFoundError: jobcore,请在本目录下重新运行
pip install -e ../jobcore。
升级 requirements-ci.txt 中的固定版本是采纳 jobcore 变更的方式——
有意选择一个可见、可审查的提交,而不是指向不特定 @master 的动态引用,
这可能在不修改任何本仓库代码的情况下导致 CI 变红。
首次登录
启动服务器:
python naukri.py然后从 MCP 客户端调用 naukri_login(method="google") 方法。它会打开一个可见的 Chromium 窗口,你可以在其中:
Google SSO(推荐): 点击 “Login with Google” -- 使用 Chrome 配置文件中保存的 Google 会话,无需凭据。
邮箱/密码: 传入
method="email"、email="..."、password="..."。
浏览器会话存储在 chrome-profile/(自动创建,已 gitignore)。该目录与特定机器绑定:它包含 cookies、本地存储和缓存凭据。请勿在不同机器间复制。
会话有效期
会话大约持续 30 天。失效时,服务器会在启动时或首次 API 调用时检测到并返回 "Not logged in" 错误。使用 naukri_login(method="google") 重新身份验证。
MCP 客户端配置
{
"mcpServers": {
"naukri": {
"command": "python",
"args": ["naukri.py"],
"cwd": "/path/to/mcp-servers/naukri"
}
}
}环境变量
所有变量都是可选的。可在 shell 或者 .env 文件中设置。
变量 | 默认值 | 说明 |
|
| Playwright 页面导航超时(毫秒) |
|
| Playwright 元素等待超时(毫秒) |
|
| aiohttp REST API 超时(秒) |
|
| PagePool 中最大并发浏览器标签页数 |
数据文件位置
所有数据文件都位于项目根目录,且已被 gitignore。
文件 | 说明 |
| Playwright 持久化浏览器配置文件。与机器绑定,切勿提交。 |
| 本地职位申请跟踪。由 |
| 本地保存/收藏职位。由 |
| 筛选问题答案缓存。执行申请时自动生成,用于批处理自动答题。 |
| 在任何 JSON 文件写入前自动备份(原子写入:先写入 |
可靠性特性
全局 aiohttp 会话 -- 所有 REST 调用共享一个会话,避免连接开销
API 层去重 -- 通过
@api_tool修饰的_api_request统一所有 REST 交互刷新锁 -- 单写者 JWT 刷新,避免并发的 401 风暴
启动验证 -- 在接收工具调用前验证浏览器和令牌状态
批量申请取消安全 -- 即使批量操作被中断,也会保留部分完成的进度
数据备份 -- 每次 JSON 覆盖前创建
.backup文件缓存 TTL 自动清理 -- 过期答案缓存条目自动失效
原子写入 -- 同步状态通过临时文件 + 重命名写入,避免文件损坏
Profile TTL 缓存 -- 资料数据缓存 30 秒,减少重复 API 调用
已知限制
Akamai CDN 拦截
Naukri 使用 Akamai Bot Manager。当直接通过 REST 调用且没有浏览器会话时,几个端点会返回 406 Not Acceptable 或 403 Forbidden:
搜索 (
naukri_search_jobs) -- 始终使用浏览器拦截;直接 REST 被拦截资料变更 (
naukri_update_profile()) -- PUT/DELETE 被 Akamai 阻止;改用葡萄串浏览器自动化职位提醒 -- CRUD 操作出于同样原因走浏览器 UI 自动化
这是预期行为。需要浏览器与 UI 交互的工具都已相应做过说明。如果你看到本应使用 REST 的工具返回 406 错误,请用 naukri_auth_status() 检查登录状态——过期的令牌会导致 Akamai 将请求归类为僵尸流量。
AmbitionBox 爬取
AmbitionBox 是一个 Next.js SSR 网站。薪资和评论工具会从服务端渲染的页面中提取 __NEXT_DATA__ 数据。如果 AmbitionBox 改变页面结构,这些工具可能返回错误。naukri_health_check 包含 AmbitionBox 检查;那里出现“warn”状态是周期性正常的,且不影响 Naukri 核心功能。
故障排查
问题 | 解决方法 |
“Not logged in” 错误 | 会话已过期(约 30 天)。调用 |
搜索返回空 / 406 | 对直接 REST 调用来说是预期行为。 |
慢连接超时 | 调高 |
速率限制 / 每日申请上限 | Naukri 根据账号类型限制每日申请数。申请响应中的 |
浏览器页面崩溃 | PagePool 会在下一次 |
令牌刷新死循环 | 删除 |
| 通常意味着会话无效。先登录。如果已登录,可传 |
AmbitionBox 薪资/评论失效 | 运行 |
健康检查
运行 naukri_health_check() 一次性验证所有集成。它会测试登录会话、资料 API、搜索 API(此处 406 属正常)、推荐、仪表盘、浏览器池活性,以及 AmbitionBox 爬取。
该函数返回 {summary: {ok: N, warn: N, fail: N}, checks: [...]} 并附带每个检查的耗时。
远程访问
在长期运行的服务器上运行服务,并从任何位置(例如协作环境中的 Web Claude、移动端等)进行连接。支持两种认证模式,且它们可以在同一服务器上同时运行。
快速决策
客户端 | 认证方式 | 原因 |
Claude Code CLI | Bearer ( |
|
Claude Desktop | Bearer ( | 支持 |
Claude.ai 网页 | OAuth ( | Web UI 仅暴露 OAuth |
二者同时 | Bearer + OAuth(同时设置两个环境变量) | 同一个服务器上,OAuth 提供方的 |
Step 1 — 生成密钥
# Bearer secret (for Claude Code / Desktop)
python -c "import secrets; print(secrets.token_urlsafe(48))"
# OAuth client_id + client_secret (for Claude.ai web)
python -c "import secrets; print('client_id=claude-ai-web')"
python -c "import secrets; print('client_secret=' + secrets.token_urlsafe(48))"Step 2 — 配置 .env
MCP_REMOTE=1
MCP_PORT=8321
MCP_PUBLIC_URL=https://naukri.<your-domain>
# Bearer (Claude Code + Desktop)
MCP_SHARED_SECRET=<paste output from token_urlsafe(48)>
# OAuth (claude.ai web)
MCP_OAUTH_ENABLED=1
MCP_OAUTH_CLIENT_ID=claude-ai-web
MCP_OAUTH_CLIENT_SECRET=<paste output from token_urlsafe(48)>
MCP_OAUTH_AUTO_APPROVE=1Step 3 — 公网主机名(推荐 Cloudflare Tunnel)
Cloudflare Tunnel 为您提供一个稳定的公共 HTTPS URL,无需开放防火墙端口。免费方案,不限带宽。
winget install Cloudflare.cloudflared
cloudflared tunnel login
cloudflared tunnel create naukri-mcp
cloudflared tunnel route dns naukri-mcp naukri.<your-domain>编辑 %USERPROFILE%\.cloudflared\config.yml:
tunnel: <UUID-from-create-command>
credentials-file: C:\Users\<you>\.cloudflared\<UUID>.json
ingress:
- hostname: naukri.<your-domain>
service: http://localhost:8321
- service: http_status:404运行隧道:cloudflared tunnel run naukri-mcp(或使用 cloudflared service install 实现开机自启)。
备选方案:Tailscale Funnel(点对点,对受信任设备延迟更低)或 ngrok(更简单,但免费版有限制)。
步骤 4 — 启动服务器
# Load env vars from .env (PowerShell — use a one-liner or a helper script)
Get-Content .env | Where-Object { $_ -match '^[A-Z_]+=.+' } | ForEach-Object {
$name, $val = $_ -split '=', 2
[Environment]::SetEnvironmentVariable($name, $val, "Process")
}
python naukri.py --http日志应显示 Auth: OAuth provider enabled (issuer=https://naukri.<your-domain>, bearer-fallback=yes) 和 HTTP mode: 0.0.0.0:8321。
步骤 5 — 连接客户端
Claude Code CLI(使用 Bearer):
claude mcp add --transport http naukri https://naukri.<your-domain>/mcp `
--header "Authorization: Bearer <MCP_SHARED_SECRET>"Claude Desktop(使用 Bearer):
在 claude_desktop_config.json 中:
{
"mcpServers": {
"naukri": {
"url": "https://naukri.<your-domain>/mcp",
"transport": "http",
"headers": { "Authorization": "Bearer <MCP_SHARED_SECRET>" }
}
}
}Claude.ai 网页版(使用 OAuth):
Settings → Connectors → Add custom connector
URL:
https://naukri.<your-domain>/mcpOAuth Client ID:
claude-ai-web(与MCP_OAUTH_CLIENT_ID一致)OAuth Client Secret:粘贴
MCP_OAUTH_CLIENT_SECRET
Claude.ai 会自动发现 OAuth 元数据(FastMCP 提供 .well-known/oauth-authorization-server 以及 /authorize 和 /token 端点)。
冒烟测试(curl)
# 401 expected — no auth header
curl -i https://naukri.<your-domain>/mcp
# Bearer flow — should return MCP JSON-RPC instead of 401
curl -i -H "Authorization: Bearer <MCP_SHARED_SECRET>" `
https://naukri.<your-domain>/mcp
# OAuth metadata discovery
curl https://naukri.<your-domain>/.well-known/oauth-authorization-server | jq .Windows 主机加固
MCP 需要一个有界面(headed)的 Chrome 会话,因此主机必须保持开机并处于登录状态。
# Disable sleep / hibernate while plugged in
powercfg /change standby-timeout-ac 0
powercfg /change hibernate-timeout-ac 0
# Disable screen-off (optional — Chrome stays alive when display sleeps,
# but this avoids GPU pauses)
powercfg /change monitor-timeout-ac 0Behavior | Result |
锁屏 | Chrome 保持运行,MCP 正常工作 |
注销 | Chrome 退出,MCP 失败 — 请保持用户会话处于活动状态 |
RDP 断开 | 进程在主机上继续运行,MCP 正常工作 |
系统休眠 | Chrome 会恢复,但进行中的调用失败 — 请保留禁用休眠 |
手动使用 Chrome | Windows 上的 Chrome 无法使用不同的 |
监控
Cloudflare 的“tunnel healthy”状态只反映 edge↔cloudflared 链路,不代表源站。请添加一个外部在线监测(例如免费的 UptimeRobot),访问 https://naukri.<your-domain>/.well-known/oauth-authorization-server(预期返回 200),以便在主用主机实际不可届时收到通知。
认证模式参考
环境变量 | 适用场景 | 说明 |
| 公共绑定 | 未设置时,服务保持监听 127.0.0.1 |
| 自定义端口 | 默认 8321 |
| OAuth 签发者 / RS 元数据 | 默认 |
| Bearer 认证 | 至少 32 个字符;改环境变量并重启即可轮换 |
| OAuth 流程 | 启用 |
| OAuth | 为 claude.ai 预先注册的客户端 ID |
| OAuth | 至少 32 个字符 |
| OAuth 体验 |
|
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI-driven job application automation for LinkedIn and SEEK platforms with intelligent cover letter generation, automated application submission, and application tracking management. Supports anti-detection measures and complies with platform usage policies for safe job hunting automation.
- AlicenseAqualityAmaintenanceEnables AI assistants to interact with LinkedIn by scraping profiles, companies, job postings, and getting personalized job recommendations using authenticated browser automation.173,204Apache 2.0
- AlicenseBqualityCmaintenanceProvides tools to search & auto-apply to jobs directly on company websites, generate custom resumes, get contacts of recruiters and referrals and track applications easily3510520MIT
- FlicenseNot gradedqualityDmaintenanceAutomates job application tracking and resume/cover letter generation using AI, integrating with Google Drive, Notion, and Gmail.1
Related MCP Connectors
Give AI agents the LinkedIn tools to find, qualify, engage, and follow up with prospects.
Search AI-native jobs, inspect application forms, and fetch free interview-prep resources.
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Sundeepg98/naukri-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server