Habr
FreeNot checkedMCP server for career.habr.com — edit your Habr Career profile through Rails forms with a browser cookie
About
MCP server for career.habr.com — edit your Habr Career profile through Rails forms with a browser cookie
README
MCP server for career.habr.com driven by a browser cookie. The official OAuth API is
read-only, so this writes the way a browser does: Rails forms + X-CSRF-Token.
Cookie
DevTools → Application → Cookies → career.habr.com → grab _career_session
(and remember_user_token so the session lasts longer).
cp .env.example .env # put HABR_COOKIE in it
set -a && . ./.env && set +a
uv run --script server.py --check # → "logged in: <login>"
Wiring it up
{"mcpServers": {"habr": {
"command": "uv", "args": ["run", "--script", "/home/kirill/Projects/habr-mcp/server.py"],
"env": {"HABR_COOKIE": "_career_session=...; remember_user_token=..."}
}}}
Tools
habr_whoami— is the cookie still alivehabr_get(path, raw=False)— HTML/JSON of any page; by default strips script/style/svg (−70% of the bytes: fonts and mixpanel). Passraw=Truewhen grepping JS chunks.habr_form(path)— form schema: field names, current values, select options, plus the Vue state fromdata-ssr-state(skills, specializations, languages, dates).habr_submit(path, data)— writes only the fields indataand resends the rest as they are (Rails writes the whole form, so anything omitted gets blanked). Action and method come from the form itself; Vue fields are filled in automatically. The first line of the response isSAVEDorNOT SAVED: <reason>— Rails returns validation failures with HTTP 200, so the status code alone lies.habr_ask(question)— ask the user something (MCP elicitation).
habr_form("/profile/specialization")
# POST /profile/specialization
# _method='patch', user[work_state]='search' of [...], user[salary]='400000', ...
# data-ssr-state: selectedSkills, selectedCategories, selectedLanguages
habr_submit("/profile/specialization", {"user[salary]": "500000"})
# SAVED HTTP 200 PATCH ...
Entry points: /profile/personal/edit, /profile/specialization,
/profile/experiences/new, /profile/university_educations/new,
/profile/additional_educations/new.
There is deliberately no typed create_resume: the page is its own schema.
The cookie lives until roughly September (remember_user_token); after that
habr_whoami reports "anonymous".
Tests
./server.py --check # form parser, Vue fields, verdicts (offline) + live csrf
./test_ask.py # elicitation over stdio
./test_submit_live.py # editing one field must not wipe skills/languages — real profile
./test_tools_live.py # HTML stripping, Vue in habr_form, validation-error parsing
The last three hit the network and edit a live profile (salary there and back),
so they need a working .env.
Installing Habr
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/ll1r1k-1337/habr-mcpFAQ
Is Habr MCP free?
Yes, Habr MCP is free — one-click install via Unyly at no cost.
Does Habr need an API key?
No, Habr runs without API keys or environment variables.
Is Habr hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Habr in Claude Desktop, Claude Code or Cursor?
Open Habr on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
Playwright
Browser automation, scraping, screenshots
by MicrosoftPuppeteer
Browser automation and web scraping.
by modelcontextprotocolopentabs-dev/opentabs
Plugin-based MCP server + Chrome extension that gives AI agents access to web applications through the user's authenticated browser session. 100+ plugins with a
by opentabs-devrobhunter/agentdeals
1,500+ developer infrastructure deals, free tiers, and startup programs across 54 categories. Search deals, compare vendors, plan stacks, and track pricing chan
by robhunterhlydecker/ucsc-genome-mcp
MCP server to interact with the UCSC Genome Browser API, letting you find genomes, chromosomes, and more.
by hlydecker34892002/bilibili-mcp-js
A MCP server that supports searching for Bilibili content. Provides LangChain integration examples and test scripts.
by 34892002achiya-automation/safari-mcp
Native Safari browser automation for AI agents with 80+ tools. No Chrome dependency, optimized for Apple Silicon with 60% less CPU overhead.
by achiya-automationagent-infra/mcp-server-browser
Browser automation capabilities using Puppeteer, both support local and remote browser connection.
by bytedanceaparajithn/agent-scraper-mcp
Web scraping MCP server for AI agents. 6 tools: clean content extraction, structured scraping with CSS selectors, full-page screenshots via Playwright, link ext
by aparajithnapireno/DOMShell
Browse the web using filesystem commands (ls, cd, grep, click). 38 MCP tools map Chrome's Accessibility Tree to a virtual filesystem via a Chrome Extension.
by apirenoCompare Habr with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All browse MCPs
