tc-help-mcp
OfficialClick on "Deploy 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., "@tc-help-mcpHow to create a client in the TutorCruncher API?"
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.
tc-help-mcp
A remote MCP server that gives the team's Claude.ai workspace live, always-current access to product documentation across the portfolio — TutorCruncher and Bobbin — with room to add more products by config alone.
It is a general product-docs assistant: the team adds it once as a remote connector and asks questions; Claude calls the tools, the server fetches from source on demand, and Claude reasons over the returned content. There is no local index and no persisted copy of the docs — the docs are the only source of truth, so answers never drift. A short in-memory TTL cache (default 300s) exists purely for latency/rate-limit protection.
Sources at launch:
TutorCruncher help docs — Intercom help centre, via the Intercom Articles API.
Bobbin help docs — Intercom help centre (separate Intercom workspace → separate token).
TutorCruncher API docs — the public
tutorcruncher/tc-api-docsrepo.
Tools
Help tools take an optional product filter ("tutorcruncher" | "bobbin"); unset spans all
configured products. Every result carries its product so answers stay correctly attributed.
Tool | Purpose |
| Lightweight catalogue (product, id, title, description, url, collection). No bodies. |
| Server-side Intercom search across product(s); deduped, ranked, top N |
| Full cleaned article body (markdown, boilerplate stripped) + title and url. |
| All API sections from |
| Keyword filter over section and subsection titles → matching whole sections. |
| Whole section assembled to markdown: endpoints, params, request/response examples, version notes. |
Related MCP server: DevDocs MCP Server
tc-api-docs structure (Outcome B)
pages/api.yml is an index (info_sections + endpoint_sections), each entry pointing to a
layout file (e.g. pages/clients/clients.yml). A layout's sections: list references separate
content files per subsection: description (.md), attributes/filters (.yml), response
(.json), and code (.py) plus code_type/code_url. Paths are repo-absolute under
pages/. get_api_section resolves a section, fetches its layout, fans out over the referenced
files (cached, concurrency-capped) and assembles one clean markdown document.
Configuration
All configuration is via environment variables (see .env.example). Never
commit values. Each Intercom workspace has its own token — one token does not span both products.
Variable | Default | Purpose |
| — | GitHub OAuth App credentials. |
| — | Public HTTPS base URL of this server (callback |
|
| Scopes needed to verify org membership. |
| — | Only active members of this org may use the tools. |
|
| Set |
|
| Permitted OAuth client redirect URIs. |
| — | Signing key for FastMCP-issued JWTs. |
| — | Redis URL for persisting OAuth state across restarts. Required on ephemeral-filesystem hosts (e.g. Heroku, where daily dyno cycling otherwise wipes the on-disk store and expires every connection). Unset = default on-disk store. |
|
| Intercom API host (same for both workspaces). |
| — | TutorCruncher Intercom workspace token. |
| — | Bobbin Intercom workspace token. |
|
| API-docs repo. |
|
| API-docs git ref. |
| — | Optional, raises raw-content fetch rate limits (distinct from the OAuth creds). |
|
| In-memory cache TTL (latency/rate-limit protection only). |
|
| Max |
|
| Bind port (Heroku sets this automatically). |
| — | Optional. When set, traces httpx upstream calls + tool spans to Pydantic Logfire. Unset = fully disabled. |
Observability
Observability is opt-in via LOGFIRE_TOKEN. With it set, the server instruments httpx
(every Intercom and GitHub request traced with status and latency) and wraps each tool
call in a span. With no token, Logfire runs in local-only mode and exports nothing — tests
and local runs are unaffected. httpx instrumentation uses conservative defaults (no header
or body capture), so workspace tokens and credentials are never sent to Logfire.
Adding another product
A product is one line in KNOWN_HELP_PRODUCTS in app/config.py ((product, help_centre_base))
plus an INTERCOM_TOKEN_<PRODUCT> env var. Products whose token is unset are skipped. No tool
changes are needed.
Local development
make install-dev # deps + pre-commit hooks
cp .env.example .env # fill in tokens; set ALLOW_UNGATED=1 for local use
make lint # ruff + ty
make test # pytest -n auto
make run-dev # serve on 0.0.0.0:$PORTDeployment
Built as a single-stage Docker image and released to Heroku (container stack) by
.github/workflows/deploy.yml on push to main. Set secrets via Heroku config, never the repo:
Deploys run via .github/workflows/deploy.yml (GitHub Actions builds the image and
releases it to the container-stack Heroku app help-mcp on push to main). The repo
needs a HEROKU_API_KEY secret; the Heroku app needs its config vars set:
heroku stack:set container -a help-mcp
heroku config:set -a help-mcp \
GITHUB_OAUTH_CLIENT_ID=... GITHUB_OAUTH_CLIENT_SECRET=... \
BASE_URL=https://help-mcp-5710e51f90a5.herokuapp.com \
JWT_SIGNING_KEY="$(openssl rand -hex 32)" \
ALLOWED_GITHUB_ORG=tutorcruncher \
INTERCOM_TOKEN_TUTORCRUNCHER=... INTERCOM_TOKEN_BOBBIN=...Provision Redis so OAuth state survives Heroku's daily dyno cycling — without it every
connected client must re-authenticate each day. The add-on sets REDIS_URL automatically:
heroku addons:create heroku-redis:mini -a help-mcpThen register https://help-mcp-5710e51f90a5.herokuapp.com/mcp as a remote connector in
the team's Claude.ai workspace.
This server cannot be deployed
Maintenance
Related MCP Connectors
Retrieve information from the Medusa documentation to assist you with your Medusa development.
Read-only search and Markdown pages from the OpenPlanr docs, for coding agents.
Connect your team's living knowledge base — docs, data, issues, CRM — to Claude and ChatGPT.
Search the Cerebrium docs: deployment, cerebrium.toml, hardware, endpoints. Also sends feedback.
Related MCP Servers
- FlicenseBqualityDmaintenanceFetches real-time official documentation for LangChain, LlamaIndex, and OpenAI to provide Claude with up-to-date API references and guides for accurate code generation.1-
- FlicenseAqualityDmaintenanceProvides access to 600+ documentation libraries from DevDocs.io including Python, JavaScript, React, Django, and more. Enables searching, browsing, and retrieving documentation content directly through Claude Desktop.55-
- AlicenseNot gradedqualityDmaintenanceProvides real-time access to official LangChain documentation, API references, and GitHub code examples to assist in LangChain-based development. It enables LLMs to search for tutorials, version info, and detailed class specifications directly from live sources.1MIT
- FlicenseNot gradedqualityDmaintenanceProvides real-time retrieval of official documentation for LangChain, LlamaIndex, and OpenAI. It enables context-aware coding by fetching the latest API references and guides directly into Claude via the Model Context Protocol.-