From 3f057af3b0a2eef68a1e211d949a97f1bd115c7b Mon Sep 17 00:00:00 2001 From: Franco Zalamena Date: Wed, 15 Jul 2026 14:34:27 +0100 Subject: [PATCH] Claim Context7 library + fix MCP config for both assistants MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Claim the Context7 library: add `url` + `public_key` to context7.json. This is the `pk_` claim key, which Context7's claim flow explicitly has you commit and push to the default branch for ownership verification. Make the bundled MCP config keyless in both mcp.json (Cursor) and .mcp.json (Claude Code), and correct the README key note. The files previously forwarded the key with `${env:CONTEXT7_API_KEY}`, which is Cursor-only syntax. Claude Code doesn't parse the `env:` prefix — it would send the literal `${env:CONTEXT7_API_KEY}` string as the header and warn on every startup. The validate-plugins gate also requires the two files to be byte-identical, which per-tool key syntax makes impossible. Keyless is correct in both tools, satisfies the byte-identical gate, and drops the warning. The rate-limit key (ctx7sk-, a secret, not committable) has no effect until Context7 fetching goes live, so it's wired via env var later, alongside the .context7-library-id flip. Co-Authored-By: Claude Opus 4.8 --- .mcp.json | 5 +---- README.md | 8 +++++--- context7.json | 2 ++ mcp.json | 5 +---- 4 files changed, 9 insertions(+), 11 deletions(-) diff --git a/.mcp.json b/.mcp.json index 1c0b2d3..c5280c5 100644 --- a/.mcp.json +++ b/.mcp.json @@ -2,10 +2,7 @@ "mcpServers": { "context7": { "type": "http", - "url": "https://mcp.context7.com/mcp", - "headers": { - "CONTEXT7_API_KEY": "${env:CONTEXT7_API_KEY}" - } + "url": "https://mcp.context7.com/mcp" } } } diff --git a/README.md b/README.md index c443419..993604d 100644 --- a/README.md +++ b/README.md @@ -62,9 +62,11 @@ Iterable's curated library is published there; once it is, the skill fetches the latest docs live, with the snapshot as its fallback. No reinstall needed when that happens. -> Context7 works without an API key at a lower rate limit. To raise it, get a -> free key at [context7.com](https://context7.com) and set the `CONTEXT7_API_KEY` -> environment variable — the bundled MCP config forwards it automatically. +> Context7 works without an API key at a lower rate limit, which is how the +> bundled config ships. To raise the limit, get a free key at +> [context7.com](https://context7.com) and add it as a `CONTEXT7_API_KEY` header +> on the `context7` MCP server, using your assistant's env-var syntax +> (`${CONTEXT7_API_KEY}` in Claude Code, `${env:CONTEXT7_API_KEY}` in Cursor). ## What it covers diff --git a/context7.json b/context7.json index ecdad93..7893c4d 100644 --- a/context7.json +++ b/context7.json @@ -2,6 +2,8 @@ "$schema": "https://context7.com/schema/context7.json", "projectTitle": "Iterable Mobile SDKs", "description": "Agent-facing reference for Iterable's mobile SDKs. Polished from Iterable's canonical docs with version-pinned snippets, decision tiers, and Kotlin-preferred Android examples. Covers push notifications, in-app messages, mobile inbox, embedded messaging, deep linking, JWT authentication, event tracking, user profiles, and unknown user activation.", + "url": "https://context7.com/iterable/iterable-sdk-skill", + "public_key": "pk_JMMoVfKCtHoC5E3alGPcX", "folders": [ "polished" ], diff --git a/mcp.json b/mcp.json index 1c0b2d3..c5280c5 100644 --- a/mcp.json +++ b/mcp.json @@ -2,10 +2,7 @@ "mcpServers": { "context7": { "type": "http", - "url": "https://mcp.context7.com/mcp", - "headers": { - "CONTEXT7_API_KEY": "${env:CONTEXT7_API_KEY}" - } + "url": "https://mcp.context7.com/mcp" } } }