hotcopper-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@hotcopper-mcpsearch for ASX: BHP threads"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
HotCopper MCP
Unofficial Model Context Protocol server for HotCopper — Australia’s largest ASX share-trading forum.
HotCopper has no public API. This server reverse-engineers the site’s session cookies and HTML pages so agents can search, read threads, and (optionally) reply as a logged-in user.
Not affiliated with HotCopper / Gumtree Australia Markets. Personal use only. Respect HotCopper’s terms of service and rate limits. Never commit session cookies.
Features
Tool | Description |
| Whether a session is loaded ( |
| Live feed ( |
| Discussion threads for an ASX ticker |
| Read posts in a thread |
| Site search |
| Homepage news / opinion |
| Account page + auth summary |
| Post a reply ( |
Related MCP server: mcp-financex
Requirements
Node.js 20+
A HotCopper account
Playwright Chromium (for the one-time login capture)
Install
git clone https://github.com/mKlus/hotcopper-mcp.git
cd hotcopper-mcp
npm install
npx playwright install chromiumAuthenticate (once)
npm run capture
# or use your installed Google Chrome:
npm run capture:chromeA browser window opens on HotCopper.
Log in.
Optionally browse search / a stock / a thread so capture notes the flows.
Press Enter in the terminal (or
touch auth/DONE).
This writes (gitignored):
auth/storage-state.json— Playwright storage state (cookies)auth/cookies.json— cookie jar dumpcaptures/*— optional network HAR / endpoint summary
Re-run capture when the session expires.
Run the MCP server
npm startGrok
[mcp_servers.hotcopper]
command = "node"
args = ["/absolute/path/to/hotcopper-mcp/src/server.js"]
enabled = true
startup_timeout_sec = 30
tool_timeout_sec = 120grok mcp add hotcopper -- node /absolute/path/to/hotcopper-mcp/src/server.jsClaude Desktop / Cursor
Add a stdio MCP server pointing at node + src/server.js (same as above).
Smoke test
With a valid auth/storage-state.json:
npm run smokeArchitecture
capture (Playwright, headed)
→ auth/storage-state.json
↓
MCP tools → HTTP + Cheerio HTML parse
→ latest posts / stock threads / thread body / search / replyReverse-engineered surface
Auth: XenForo-style cookies
xf_user,xf_sessionSearch:
POST /search/search/withkeywords,visitorXfToken,user_idReply:
POST /threads/{slug}.{id}/add-replywithmessage_html,_xfToken,thread_idReads: server-rendered HTML (
/postview/,/asx/{ticker}/,/threads/…)
There is no stable official JSON API for forum content; parsers may need updates if HotCopper changes markup.
Safety
auth/andcaptures/are gitignored — do not commit them.reply_to_threadrefuses to post unlessconfirm=true. Preferdry_run=truefirst.Use your own account; do not mass-scrape or spam.
Development
npm run capture # headed login + network sniff
npm run analyze # summarize latest captures/endpoints-*.json
npm run smoke # exercise read tools
npm start # stdio MCP serverLicense
MIT — see LICENSE.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/mKlus/hotcopper-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server