@1door/connector
v0.1.1
Published
Publish articles to 1door.cc directly from Claude — an MCP connector backed by the site's moderated publishing pipeline.
Maintainers
Readme
@1door/connector
Publish blog posts to 1door.cc straight from Claude — no GitHub deploy.
This is an MCP server. You add it to Claude Code or Claude Desktop with the key you were given, authorize it against your 1door.cc account, and Claude gets tools to draft, publish, and list your articles. Under the hood it calls the site's own moderated publishing API (it never touches the database directly), so a post you publish here is identical to one written in the website composer — you are always the author, and the 1door editorial team still moderates.
How access works — key + authorization
Everything published on 1door.cc goes out under a real person's name, so setup takes two steps:
- You get a key (
1door_…) from the 1door team. - You authorize it against your 1door.cc account. The key is only a pairing code — on its own it cannot publish. You open an authorize link, sign in to your 1door.cc account (or create one), and click Approve. From then on the same key publishes as you: your byline, your "My posts".
Keep the key secret — once linked, anyone holding it can publish as you. The 1door team can revoke it at any time.
1. Add the connector
Claude Code (one command):
claude mcp add one-door --env ONE_DOOR_TOKEN=1door_xxxxxxxx -- npx -y @1door/connectorClaude Desktop — add to claude_desktop_config.json
(~/Library/Application Support/Claude/ on macOS):
{
"mcpServers": {
"one-door": {
"command": "npx",
"args": ["-y", "@1door/connector"],
"env": { "ONE_DOOR_TOKEN": "1door_xxxxxxxx" }
}
}
}Restart Claude Desktop after editing the config.
2. Authorize your key (once)
Ask Claude: "connect my 1door account". It returns a link like
https://1door.cc/connect?code=1door_xxxxxxxx. Open it — the key is your pass:
- New to 1door? Enter your name + email, type the 6-digit code emailed to you, and click Create account & connect. No invite needed — the key creates your account and links itself in one step.
- Already a member? Choose Sign in, use the email on your 1door account, then Approve.
Check it worked — ask "who am I on 1door?"; it should answer with your real name. Until you finish, every tool politely refuses and repeats the link.
Writing quality articles
The connector ships with the 1door Content Engine — an editorial + humanization
playbook so what you publish reads like a senior practitioner wrote it. When you ask
Claude to write a 1door post, it should follow AUTHORING.md:
- an interactive, step-by-step flow (post type → source → brief → story options → draft → package), never a one-shot dump;
- a live preview of the post rendered in the 1door.cc dark house style in the artifact side panel, updated as you build it — you see the final look before publishing;
- the full palette of editable attributes (headings, quote, link, attach a skill, related services, image, YouTube embed, HTML/widget, hero banner);
- an anti-AI humanization pass (vocabulary blacklist, structural tells) so it doesn't sound generated.
Deep detail is in references/. AUTHORING.md says which file to read
at each step.
3. Use it
Just ask Claude, e.g.:
- "Publish a draft to 1door titled 'Onboarding teardown' with this article: …"
- "List my 1door articles."
- "Take that draft live."
Tools
| Tool | What it does |
| --- | --- |
| connect | Get the link to authorize your key against your 1door.cc account (or confirm it's already linked). Run this at setup. |
| whoami | Verify your key and see which real account it publishes as. |
| publish_article | Create a post from a title + either markdown or structured blocks (text/h2/h3/quote/link/skill/image/embed/html), plus optional services, hero, section, summary. publish:false (default) saves a Draft; publish:true takes it live. |
| list_articles | List your posts with status (Draft / Published / Archived) and public URLs. |
Notes:
- The article is either Markdown (headings, lists, links, images by URL) or a
structured
blocksarray — seeAUTHORING.mdfor the full palette and how each editable attribute maps to the payload. - Video files need Cloudflare R2 (not enabled yet) — use a YouTube/Vimeo
embedblock instead. - A live post by a non-core member is published immediately and sent to the 1door editorial team for moderation (approve / request changes / take down), same as the website.
- The site refreshes from the database roughly every 5 minutes (ISR), so a new or just-published
post can take a few minutes to appear on the public site and in
list_articles.
Configuration
| Env var | Required | Default | Notes |
| --- | --- | --- | --- |
| ONE_DOOR_TOKEN | yes | — | Your personal connector token from the account page. |
| ONE_DOOR_URL | no | https://1door.cc | Override to point at a dev/staging site. |
Develop locally
npm install
npm run build
ONE_DOOR_TOKEN=... ONE_DOOR_URL=http://localhost:3000 node dist/index.jsThe server speaks JSON-RPC over stdio; run it through the MCP Inspector to poke at the tools.
