Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Habr

FreeNot checked

MCP server for career.habr.com — edit your Habr Career profile through Rails forms with a browser cookie

GitHubEmbed

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 alive
  • habr_get(path, raw=False) — HTML/JSON of any page; by default strips script/style/svg (−70% of the bytes: fonts and mixpanel). Pass raw=True when grepping JS chunks.
  • habr_form(path) — form schema: field names, current values, select options, plus the Vue state from data-ssr-state (skills, specializations, languages, dates).
  • habr_submit(path, data) — writes only the fields in data and 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 is SAVED or NOT 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.

from github.com/ll1r1k-1337/habr-mcp

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-mcp

FAQ

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

Microsoftby Microsoft

Puppeteer

Browser automation and web scraping.

modelcontextprotocolby modelcontextprotocol

opentabs-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

opentabs-devby opentabs-dev

robhunter/agentdeals

1,500+ developer infrastructure deals, free tiers, and startup programs across 54 categories. Search deals, compare vendors, plan stacks, and track pricing chan

robhunterby robhunter

hlydecker/ucsc-genome-mcp

MCP server to interact with the UCSC Genome Browser API, letting you find genomes, chromosomes, and more.

hlydeckerby hlydecker

34892002/bilibili-mcp-js

A MCP server that supports searching for Bilibili content. Provides LangChain integration examples and test scripts.

34892002by 34892002

achiya-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.

achiya-automationby achiya-automation

agent-infra/mcp-server-browser

Browser automation capabilities using Puppeteer, both support local and remote browser connection.

bytedanceby bytedance

aparajithn/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

aparajithnby aparajithn

apireno/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.

apirenoby apireno

Compare Habr with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All browse MCPs