Skip to main content
Glama
esinecan

instaffo-mcp-server

by esinecan

instaffo-mcp-server

一个 MCP 服务器,让 AI 助手能够访问您自己的 Instaffo 候选人账户,并使用您自己的浏览器会话进行身份验证。个人求职工具。完全本地运行。

Instaffo 是一个双向招聘市场(候选人与公司匹配)。此服务器暴露候选人端:从 MCP 客户端读取您的个人资料、职位建议、对话,并执行可逆的写入操作。

工作原理

Instaffo 没有公开的候选人 API,因此服务器使用真实的已登录会话进行身份验证。其候选人 Web 应用通过 app.instaffo.com/candidate/api/v1/* 下的干净 JSON API 进行通信,仅通过会话 cookie 进行身份验证(无 bearer 令牌)。因此,服务器是一个轻量级的、基于 cookie 认证的 httpx 客户端,而非爬虫。浏览器(通过 patchright)仅用于登录时创建会话的一次性使用。

MCP client ── stdio ──> instaffo-mcp-server ──cookie──> app.instaffo.com JSON API
                              │
                     storage-state.json  (cookies, written 0600, git-ignored)
                              ▲
                     instaffo-mcp --login  (one-time browser sign-in)

Related MCP server: Chrome MCP Server

设置

uv sync
uv run patchright install chromium     # one-time, for login only
uv run instaffo-mcp --login            # opens a browser; sign in once
uv run instaffo-mcp --auth-status      # confirm the session is stored

在您的 MCP 客户端(stdio)中注册它:

{
  "command": "uv",
  "args": ["run", "--directory", "/path/to/instaffo-mcp-server", "instaffo-mcp"]
}

工具

读取(无副作用):

工具

返回内容

instaffo_whoami

您的身份信息(姓名、邮箱、职位)

instaffo_get_profile

您的个人资料:资历、地点、技能、简历摘要

instaffo_list_job_suggestions

您当前的匹配结果,附计数

instaffo_get_job_suggestion

一个职位的完整信息:描述、要求、薪资、筛选问题

instaffo_list_conversations

公司请求(入站兴趣)和您的申请

instaffo_auth_status

是否存在会话(--deep 实时验证)

instaffo_search_skills

在 Instaffo 的封闭词汇表中查找技能 UUID

写入(每个写入工具都接受 confirm 参数;没有它不会发起网络请求,您将收到将要发送的确切载荷):

工具

效果

端点

instaffo_save_job / instaffo_unsave_job

收藏/取消收藏一个职位建议

POST|DELETE .../job_suggestions/{uuid}/favorite

instaffo_set_about

替换“关于我”文本

POST .../profile/about

instaffo_set_skills

替换技能集

POST .../profile/skills

instaffo_set_languages

替换语言列表

POST .../profile/languages

instaffo_set_industries

替换行业经验

POST .../profile/industries

instaffo_set_links

替换社交链接

POST .../profile/links

instaffo_set_seniority

设置工作经验级别

POST .../profile/professional_background

instaffo_set_salary

年薪资期望

PATCH .../factors/salary

instaffo_set_job_roles

目标职位(驱动匹配)

PATCH .../factors/job_roles

instaffo_set_job_seeking_activity

活跃/被动状态

PATCH .../factors/job_seeking_activity

instaffo_add_cv_station

添加工作或教育经历

POST .../cv

instaffo_update_cv_station

原地编辑一条经历

PATCH .../cv/{uuid}

instaffo_delete_cv_station

删除一条经历(不可逆)

DELETE .../cv/{uuid}

instaffo_set_skill_experience

每项技能的经验年数

POST .../experience_durations/bulk_save

所有端点均通过观察得到,而非猜测。构建这些端点所依据的契约记录在 docs/API.md 中,带有日期,源自录制的捕获数据。

为什么每次写入后都要重新读取

此 API 对每次写入都返回裸 {"success": true},且仅进行部分验证——即使 PATCH 请求缺少必填字段或包含错误类型的值,也会返回 {"success": true}。因此,响应无法告诉您实际存储了什么。每个写入工具都会重新读取 GET /profile 并报告 verifiedvalue_now;请相信这些,而不是响应。

在调用任何工具之前,有两个字段陷阱值得了解:

  • instaffo_set_skills 会重新在服务端推导 topSkills 没有可发送的 topSkills 字段,也没有 UI 控件。即使技能集未更改,保存操作仍会移动前三项。

  • 技能上限为 23 个skills 20 个 + topSkills 3 个)。超过此限制会返回 "maximum is 20 characters"——消息说的是字符,但单位是项。

有监督的,故意为之:申请和消息

有两个操作被故意未实现为即发即弃的工具:申请职位和给招聘人员发送消息。

申请并非单个请求。它是一个多步骤向导,在提交之前会先对您的真实个人资料进行持久的自我展示写入:

  1. 技能自我评估(每项所需技能的年数滑块,例如 0-5),通过 experience_durations/bulk_save 自动保存到您的个人资料,

  2. 您的薪资期望(从您的个人资料预填),

  3. “您使用的 AI 工具”和“AI 技能”多选,

  4. 最终提交,创建申请并打开与招聘人员的聊天。

因为这些是真实、面向外部的、关于您如何展示自己的选择,并且最终提交的端点只有在整个流程完成后才会出现,所以申请和消息工具留给了有监督的会话,由账户所有者批准输入。它们不是基于猜测的端点构建的。观察到的子步骤和向导形态已记录在此,以便该会话能够快速进行。

命令

instaffo-mcp                 # run the MCP server (stdio)
instaffo-mcp --login         # headed manual login, persist the session
instaffo-mcp --capture       # record app API traffic to a JSONL (diagnostics)
instaffo-mcp --auth-status [--deep]

安全与隐私

  • 会话材料(profile/storage-state.jsoncaptures/.env)位于 ~/.instaffo-mcp 下,权限为 0600,并被 git 忽略。永远不会被提交。

  • 写入工具有确认限制,且仅影响可逆的表面。

  • 这是仅供您自己账户使用的个人本地工具。它不存储任何其他人的数据,并且仅使用您自己的会话与 Instaffo 通信。

先前的作品

会话捕获和浏览器模式在精神上改编自 stickerdaniel/linkedin-mcp-server(Apache-2.0),该作品以相同方式对个人 LinkedIn 会话进行身份验证。

Install Server
A
license - permissive license
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to control and automate your Chrome browser directly, leveraging existing login states and configurations for tasks like content analysis, semantic search across tabs, screenshots, network monitoring, and interactive operations.
    10
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Lets AI assistants control your real Chrome browser to perform web tasks like reading pages, taking screenshots, clicking, and typing, using your existing logged-in sessions.
    131
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to access and search local browser history, bookmarks, open tabs, and downloads for personalized context.
    MIT

View all related MCP servers

Related MCP Connectors

  • Give AI agents the LinkedIn tools to find, qualify, engage, and follow up with prospects.

  • Run LinkedIn outreach from your AI chat: find leads, launch campaigns, send, and reply.

  • Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.

View all MCP Connectors

Latest Blog Posts

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/esinecan/instaffo-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server