关于 OAHelper
OAHelper 是面向公司在线测评和面试备考者的本地 MCP 服务,可读取用户 OAHelper Pro 账户内容并将资料保存为 Markdown,供离线使用;另含九项备考技能。
主要功能
- 01搜索并同步公司在线测评题集
- 02获取题目、选择题答案和解答
- 03查看公司面试经历
- 04将获取的资料保存为 Markdown
- 05无需会话即可访问已保存资料
- 06提供九项练习与学习规划技能
适用场景
- 01建立公司的在线测评题目离线资料集
- 02根据往年题目进行限时模拟测评
- 03练习选择题并查看答案解析
- 04生成面试概要或间隔复习计划
MCP 相关
通过本地 stdio MCP 服务提供搜索、同步和读取用户 OAHelper 账户的工具。随附技能可将这些工具组合为备考工作流。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
8收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| company | string | 是 |
详细介绍
oahelper-mcp
由 Sirjan Singh 构建
一个 MCP 服务,可让 Claude Code、Claude Desktop、Cursor、Codex 或任何其他 MCP 客户端读取你自己的 OAHelper Pro 账户内容:公司 OA 题集、完整题目描述、MCQ 答案、官方解答和面试经验。它获取的所有内容也会以纯 Markdown 格式保存到你的磁盘上,方便你离线备考、在 Obsidian 中学习,或交给一个此后不再联网的 Agent 使用。
它还附带 9 个技能,用于模拟 OA、MCQ 练习、基于提示的辅导、面试简报、学习计划和间隔复习。
该服务是一个小型 Python 包,仅依赖一项内容(官方 mcp SDK)。HTTP 使用标准库。
快速安装
| 你使用的工具 | 一条命令 |
|---|---|
| Claude Code(服务 + 全部 9 个技能) | /plugin marketplace add SirjanSingh/oahelper-mcp 然后 /plugin install oahelper@oahelper-mcp |
| 仅安装技能,适用于任何 Agent | npx skills add SirjanSingh/oahelper-mcp |
| 仅安装服务,适用于任何 MCP 客户端 | uvx oahelper-mcp(参见将其连接到你的 Agent) |
Claude Code 插件会在启用时询问你的 OAHelper Cookie,并将其安全保存。其技能会显示为 /oahelper:oa-mock、/oahelper:mcq-drill 等。
请先阅读此内容。 OAHelper 的服务条款禁止自动访问和抓取,违规处罚可能包括失去 Pro 账户。此工具的设计使用方式与用户浏览网站相同:一次只访问一家公司,仅在你提出请求时访问,间隔 2 秒发送请求,设定硬性每日上限(默认 300 次),并使用磁盘缓存,避免重复获取内容。它使用你自己已登录的浏览器会话,不会传输任何内容,也不会提供超出你订阅计划范围的信息。是否运行此工具由你自行决定,风险也由你承担。请勿用它抓取整个网站,也绝不要发布或分享它保存的内容。
你将获得
| 工具 | 功能 | 网络请求 |
|---|---|---|
oahelper_search(company) | 列出公司的 OA 题集及其日期、数量和引用 | 1 次请求(缓存 1 天) |
oahelper_sync(company, max_items=20) | 将公司的题集、问题、选择题答案和面试记录下载到资料库中,按最新顺序排列。达到 max_items 次请求后停止,并告知剩余数量 | 最多 max_items 次 |
oahelper_company(slug_or_url) | 根据 slug 或 .../company-questions/<slug> URL 获取一个题集页面 | 1 次请求 |
oahelper_question(ref_or_url) | 获取一个问题:题目、附带解释的选择题答案、可选图片和社区解答 | 1 到 4 次请求 |
oahelper_solution(ref_or_url, language) | 获取官方解答(cpp、python、java)。使用你套餐的解答配额 | 1 次请求 |
oahelper_interviews(company) | 获取公司的面试经历,并保存完整文本 | 1 到 2 次请求 |
oahelper_offline(company="") | 查看已保存的内容。完全无需会话即可使用 | 无 |
oahelper_status(online=False) | 查看是否已配置会话、今日已用请求数,以及可选的 Pro 状态 | 无或 1 次 |
资料库的布局:
library/<company>/
index.md sets, interviews and counts, with links
sets/<ref>-<name>.md
questions/<ref>-<title>.md
interviews/<id>-<role>.md
images/ only when you ask for them
所有内容都保存在你的数据文件夹中:默认为 ~/.oahelper,从克隆的仓库运行时则位于仓库文件夹中,或者保存在 OAHELPER_HOME 指定的位置。在克隆的仓库中,library/、cache/ 和 .env 已加入 gitignore。请保持此设置。
要求
- uv(推荐),或安装了 pip 的 Python 3.10+
- OAHelper 账号(大多数内容需要 Pro)
- 能启动本地 stdio 服务的任意 MCP 客户端
添加会话
-
登录后,在浏览器中打开 https://www.oahelper.in。
-
按 F12,打开 Network 选项卡,重新加载页面,然后点击任意 URL 中包含
/api/proxy/的请求。 -
在 Request Headers 下,复制完整的
cookie值。 -
将其作为单独一行放入
~/.oahelper/.env(创建此文件夹和文件):OAHELPER_COOKIE=<paste here>.env.example列出了其他可选设置。你也可以在客户端配置中将OAHELPER_COOKIE设置为环境变量;启用 Claude Code 插件时,它会提示你输入此值。
会话会持续有效,直到你在网站上退出登录。当工具开始返回 session rejected 时,请重复这些步骤。请像对待密码一样保护 cookie:不要将其粘贴到与任何 AI 的聊天中,也不要提交它。
然后让你的 Agent 运行 oahelper_status,并设置 online=true。你应该会看到
session valid | Pro: yes。
将其连接到你的 Agent
安装 uv 后,所有客户端都运行同一条命令,其他内容由 uv 获取:
uvx oahelper-mcp
Claude Code
claude mcp add oahelper -s user -- uvx oahelper-mcp
-s user 会让它在每个项目中都可用;仅用于当前项目时,使用 -s local。运行 claude mcp list 确认它显示为已连接,或在会话中运行 /mcp。也可以跳过这些步骤,安装插件,它还会附带技能。
Claude Desktop
编辑 claude_desktop_config.json(Settings、Developer、Edit Config):
{
"mcpServers": {
"oahelper": {
"command": "uvx",
"args": ["oahelper-mcp"]
}
}
}
重启 Claude Desktop。
Cursor
与 Claude Desktop 使用相同的 JSON,放在 ~/.cursor/mcp.json(适用于所有项目)或 .cursor/mcp.json(适用于单个项目)中。
VS Code(Copilot Agent 模式)
.vscode/mcp.json 使用 servers 键:
{
"servers": {
"oahelper": {
"type": "stdio",
"command": "uvx",
"args": ["oahelper-mcp"]
}
}
}
OpenAI Codex CLI
codex mcp add oahelper -- uvx oahelper-mcp
或在 ~/.codex/config.toml 中:
[mcp_servers.oahelper]
command = "uvx"
args = ["oahelper-mcp"]
Gemini CLI、Windsurf、Cline 等
任何可读取 mcpServers JSON 块的客户端,都可以直接使用 Claude Desktop 的配置片段。请查阅客户端文档,了解其配置文件的位置。
其他运行方式
- pip:
pip install oahelper-mcp,然后将oahelper-mcp用作命令。 - 最新的未发布代码:
uvx --from git+https://github.com/SirjanSingh/oahelper-mcp oahelper-mcp。
不使用 uv(从克隆的仓库运行)
git clone https://github.com/SirjanSingh/oahelper-mcp.git
cd oahelper-mcp
python -m venv .venv
.venv/bin/pip install -r requirements.txt # Windows: .venv\Scripts\pip
然后,在上述任意配置中,将 /path/to/oahelper-mcp/.venv/bin/python /path/to/oahelper-mcp/server.py 用作命令。此模式下,.env、library/ 和 cache/ 都保存在克隆的仓库中。
使用方法
使用日常语言提问。以下是一些效果不错的提示:
- “OAHelper 为 Juspay 提供了哪些 OA 题集?”
- “从 OAHelper 同步 Amazon,然后告诉我他们最近三场 OA 的题目类型分布。”
- “给我看题目
MjM3OHww和对应的 MCQ 答案。” - “获取这道题的官方 C++ 解法。”
- “今年大家对 Atlassian 的面试轮次有什么评价?”
- “我已经保存了哪些内容供离线使用?”
典型的备考流程:对某家公司运行 oahelper_sync(显示 NOT DONE 时再次调用),
然后让 Agent 阅读 library/<company>/index.md 及其链接的文件。阅读
资料库不会消耗请求次数。
技能
skills/ 文件夹中包含现成的 Agent Skills:
普通的 SKILL.md 文件,用于告诉 Agent 如何将工具串联成工作流。你只需使用日常语言提问,
匹配的技能就会自动启动。
| 技能 | 可以这样提问 | 功能 |
|---|---|---|
oa-prep | “帮我准备 Juspay 的 OA” | 完整的备考指南:同步公司数据、阅读每套已保存的题集、补充公开来源,并将每道往年题对应到最接近的 LeetCode 题目 |
oa-mock | “给我出一套 Amazon 的模拟 OA” | 使用真实格式和往年真题进行限时模拟,然后通过边界情况追踪进行评分 |
mcq-drill | “用 Infosys 的 DBMS MCQ 考考我” | 每次一道题,题目来自真实答案集,并提供评分和解析 |
solve-coach | “我卡在这道题上了,给我个提示” | 分级提示(观察、模式、思路、伪代码、代码)和代码审查;只有在你要求时才提供官方解法 |
interview-insights | “Atlassian 的面试轮次有哪些?” | 根据面试经验分享,逐轮总结常见题目、面试者失利原因和备考清单 |
oa-compare | “比较 Uber、Juspay 和 Atlassian 的 OA” | 并列比较 OA 模式,并指出值得优先学习的共通主题 |
study-plan | “我的 OA 在 11 月 3 日,帮我制定计划” | 制定逐日备考计划,直到截止日期;根据公司的考查主题和你过去的错题分配学习重点 |
revise-mistakes | “帮我复习错题” | 对答错或需要提示的题目进行间隔重复测试 |
oahelper-setup | “oahelper 连不上” | 分步排查安装、客户端配置和会话问题 |
oa-mock、mcq-drill 和 solve-coach 会将每次尝试记录到 library/_progress.md,
study-plan 和 revise-mistakes 会读取该文件。它和 library/ 中的其他内容一样,
会保留在你的设备上。
安装技能
对于 Claude Code、Codex、Cursor 和其他支持技能的 Agent,最简单的方法是:
npx skills add SirjanSingh/oahelper-mcp
添加 --list 可先查看技能,添加 --skill oa-mock 可指定某个技能。在 Claude Code 中,
插件会将技能和服务一起安装。
也可以手动为 Claude Code 的所有项目安装:
cp -r skills/* ~/.claude/skills/
在 Windows PowerShell 中:Copy-Item -Recurse skills\* $HOME\.claude\skills\
若只用于一个项目,请将技能复制到该项目的 .claude/skills/ 文件夹中。重启会话后,
它们会显示为 /oa-prep、/oa-mock 等命令,也可以根据你的提问自动触发。
其他 Agent:这些文件是普通 Markdown,因此任何支持 Agent Skills 的 Agent 都能从其技能文件夹中
加载。对于不支持 Agent Skills 的 Agent,可将相关的 SKILL.md 内容粘贴到其规则或自定义指令中。
配置
在数据文件夹中的 .env 文件内配置,或设置同名环境变量
(环境变量优先):
| 键 | 默认值 | 含义 |
|---|---|---|
OAHELPER_HOME | ~/.oahelper(或克隆目录) | .env、cache/ 和 library/ 所在的数据文件夹。仅限环境变量配置 |
OAHELPER_COOKIE | 已登录会话的浏览器 cookie 标头 | |
OAHELPER_BEARER | 网站发送该标头时使用的 authorization 标头 | |
OAHELPER_USER_AGENT | generic | 你的浏览器 user agent,以便请求与当前会话匹配 |
OAHELPER_DAILY_CAP | 300 | 服务拒绝请求前的每日实时请求数 |
请求之间的 2 秒间隔由 oahelper_mcp/server.py 中的 MIN_GAP 控制。
故障排查
| 症状 | 解决方法 |
|---|---|
session rejected / HTTP 401 或 403 | Cookie 已过期。将新的 Cookie 复制到 .env 中(或运行 /plugin configure oahelper@oahelper-mcp) |
Daily cap reached | 等到明天。缓存和离线工具仍可使用 |
| 客户端显示服务失败 | 检查客户端能否在 PATH 中找到 uv(运行 uvx --version)。如果是从克隆版本启动,请使用绝对路径和虚拟环境中的 Python。手动运行命令:它应该会静默等待 stdin 输入 |
ModuleNotFoundError: mcp | 客户端启动了另一个 Python。将 command 指向虚拟环境中的解释器 |
No module named 'mcp.server.fastmcp' | 克隆版本安装了 mcp 2.x。运行 pip install "mcp<2"(PyPI 包已固定该版本) |
| 缺少高级内容 | 你的账号不是 Pro,或缓存副本是在未登录时获取的。传入 refresh=true |
构建方式
该网站没有公开 API。我们通过录制个人账号的正常浏览过程生成 HAR 文件,并用 tools/har_endpoints.py 总结,从而找到这些端点。该脚本会输出路径、参数名称和响应结构,但绝不会输出标头值或响应内容。如果网站发生变化并导致某些功能失效,请重新录制 HAR,运行该脚本,然后进行比较。
发布(维护者)
在 oahelper_mcp/__init__.py、.claude-plugin/plugin.json 和 server.json 中的两个 version 字段更新版本号,提交后推送一个标签:
git tag vX.Y.Z && git push origin vX.Y.Z
.github/workflows/release.yml 会检查版本号是否一致、对 wheel 进行冒烟测试、发布到 PyPI(可信发布,无需令牌),然后发布到 MCP Registry(GitHub OIDC,无需令牌)。
作者
我是 Sirjan Singh。我开发这个项目是为了准备自己的实习 OA。
- GitHub:@SirjanSingh
- LinkedIn:Sirjan Singh
如果这个项目为你节省了准备时间,请为仓库点亮星标。这是我唯一能知道它帮助了别人的方式,也能帮助其他准备 OA 的人找到它。欢迎提交问题和拉取请求。
许可证
MIT,版权 (c) 2026 Sirjan Singh,适用于本仓库中的代码。该许可证不授予对 OAHelper 内容的任何权利;这些内容属于 OAHelper 及其贡献者。
本项目与 OAHelper 无关联,也未获得其认可。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。