hf-mcp
hf-mcp is a standalone MCP server package for the Hack Forums API v2.
Current release line: 0.3.1.
Install
pip install hf-mcp
Entrypoints
hf-mcp(aliaseshf-mcp serve)python -m hf_mcphf-mcp setup inithf-mcp auth bootstraphf-mcp doctorhf-mcp serve
Desktop MCP clients
Desktop client wiring is first-class and documented in
docs/client_integration.md, including:
- direct command launch (
hf-mcp serve) - module launch (
python -m hf_mcp serve) - virtualenv/conda launch forms
- native Windows Python launch
- Windows desktop client to WSL bridge examples (including Claude Desktop style)
Default local paths
- config:
~/.config/hf_mcp/config.yaml - token store:
~/.config/hf_mcp/token.json
Path overrides:
HF_MCP_CONFIGfor config pathHF_MCP_ENV_FILEfor explicit.envpathHF_MCP_TOKEN_PATHfor token path (unless YAMLtoken_pathis set)
Full precedence and policy split are documented in docs/configuration.md.
Read output defaults
Read tools default to human-readable content while keeping canonical JSON for scripts.
- default mode:
readable - per-call override:
output_mode(readable,structured,raw) - additive raw payload toggle:
include_raw_payload
Compatibility contract for read tools:
structuredContentalways carries normalized/canonical JSON for automation.output_mode="readable"is the human surface; for thread reads it includes the formatted thread body plus useful thread and first-post fields.output_mode="structured"keeps script-friendlystructuredContentwith terse text.- raw payload remains available as an additive JSON resource when
output_mode="raw"orinclude_raw_payload=true.
See docs/configuration.md for read_output_defaults config and
docs/examples.md for concrete request/response examples.
Compounding flow discovery
Use forums.index (alias forums_index) for root discovery when you do not yet
have IDs. This tool is backed by maintained package catalog data and can drift
from live Hack Forums state between package updates.
Concrete exploration path:
forums.index->forums.read->threads.read->posts.readforums.readstill requiresfid; it is not root discovery._hf_flowis the machine-readable flow envelope key._hf_flow.next_actionsis the communication layer that lets one tool result feed the next tool call without an agent guessing selectors._hf_flowcurrently ships onforums.index, core reads, supported extended reads (bytes.read,contracts.read,disputes.read,bratings.read,sigmarket.market.read, andsigmarket.order.read), local draft/preflight tools, and successful results from existing guarded write helpers after confirmed or stubbed execution.
Automation usage
For automated clients, call read tools with output_mode="structured" when you only
need normalized fields, or output_mode="raw" / include_raw_payload=true when
you also need the exact upstream HF API payload as an additive MCP resource.
Example:
{
"tool": "posts.read",
"arguments": {
"tid": 6324346,
"per_page": 1,
"include_post_body": true,
"output_mode": "raw",
"include_raw_payload": true
}
}
Expected protocol shape:
{
"content": [
{"type": "text", "text": "posts.read returned 1 row(s)."},
{"type": "resource", "resource": {"uri": "hf-mcp://raw/posts.read", "mimeType": "application/json"}}
],
"structuredContent": {
"posts": [
{
"pid": "62946370",
"tid": "6324346",
"subject": "The HF API MCP server",
"message": "[size=xx-large][align=center][css=68]HF MCP Is Live..."
}
]
}
}
Quick start
pip install hf-mcp
hf-mcp setup init
hf-mcp auth bootstrap
hf-mcp doctor
hf-mcp serve
Before auth bootstrap, create your own Hack Forums API developer app in the HF
user control panel. You can use the hosted callback
https://cortalabs.github.io/hf_mcp/oauth_callback.html for
HF_MCP_EXTERNAL_REDIRECT_URI, or host docs/oauth_callback.html yourself and
use that HTTPS URL instead.
Module launch equivalent:
python -m hf_mcp serve
Safety and release posture
- Read paths and guarded writes are documented publicly, with fail-closed behavior for concrete writes via
confirm_live=true. - Concrete write helpers currently exposed are
threads.create,posts.reply, and Bytes write helpers (bytes.transfer,bytes.deposit,bytes.withdraw,bytes.bump) with repaired argument contracts. scheduled_aton draft artifacts is metadata for operator workflow only;hf-mcpdoes not ship a scheduler/queue that auto-executes future writes.- HF API quote/entity canonicalization on live writes is treated as expected security/sanitization behavior, not a bypass target.
- Manual live validation in this wave is intentionally narrower: replies only on
TID 6083735plus at most onethreads.createinFID 375; no Bytes live writes. contracts.writeis not exposed in this release because operator-approved sandbox proof is unavailable.- Signature Market write operations and admin-only high-risk write operations are unsupported and unexposed.
- PM counters (
unreadpms,totalpms) are available throughme.readwhen Advanced Info fields are enabled; direct PM content operations are unsupported. - Detailed release-boundary and limitation truth is owned by
docs/export_boundary.md.
Docs map
Metadata
Release files for hf-mcp 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| hf_mcp-0.3.1.tar.gz | 126.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hf_mcp-0.3.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 223.0 kB
Release files / hf_mcp-0.3.1.tar.gz
| Download URL | hf_mcp-0.3.1.tar.gz |
|---|---|
| Size | 126.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d01cf3055075b1391d8773bfa6f8c1eb605ea5d0ea69df27c39bbd001930ca91
|
|
BLAKE2b-256 checksum How to use checksums |
09e2b8cfe13d29296176e2d8a3dc9b40c15532c9f87ff32191de70e52c853442
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 27, 2026.
Transparency logRelease files / hf_mcp-0.3.1-py3-none-any.whl
| Download URL | hf_mcp-0.3.1-py3-none-any.whl |
|---|---|
| Size | 96.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
87563eba3ffae10c89208dd9df371010f9a1980eac75aec09945b73feb1bf2af
|
|
BLAKE2b-256 checksum How to use checksums |
fc457bcd27fbe568218b8a94a62ae33503a8d58e3506d0280d1bb2059a1568ff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 27, 2026.
Transparency log