Skip to content

Stop a manual deploy from silently blanking analytics - #30

Merged
lbesecker195 merged 6 commits into
mainfrom
deploy/preserve-analytics-key
Sep 19, 2026
Merged

lbesecker195 merged 6 commits into
mainfrom
deploy/preserve-analytics-key

Conversation

@lbesecker195

Copy link
Copy Markdown
Owner

deploy/deploy.sh rewrites /etc/mcp-registry.env wholesale, so anything set on the server and not also set in deploy/.env gets blanked. CI deploys only read that file — receive-release.sh ships the release and restarts — which is how a value can sit there working for months and then vanish the first time somebody runs the script instead.

Analytics is the case that bites. With no account id the browser tag and the server-side plug both no-op by design: the site keeps working and simply stops being measured. Nothing looks broken, so nobody finds out until someone asks why the dashboard is empty.

  • deploy.sh carries forward SSA_ACCOUNT_ID and REGISTRY_PUBLISH_TOKEN from the host when the current run does not set them
  • deploy/.env.example now says what blank actually does, and how to get an account id, instead of leaving both to be discovered

Found while checking whether the newly deployed plug was recording on https://ai.mcpharbor.dev — it is not, because SSA_ACCOUNT_ID has never been set. That is a separate step, but this makes it stick once it is.

Shell syntax checked with sh -n. No application code touched.


Pages affected:

🤖 Generated with Claude Code

Logan Besecker and others added 6 commits September 18, 2026 21:02
Tailwind now loads from the CDN and compiles in the browser, so daisyUI and the
heroicons build plugin are no longer available. This lays the foundation the
page rebuilds sit on: a semantic token palette, inline SVG icons, and site
chrome carrying the new MCP Harbor wordmark. Titles and metadata deliberately
stay "MCP Registry", which is the term people search for.

- Define light and dark tokens as plain CSS variables, re-exported to Tailwind
  through `@theme inline` so the palette re-resolves when the theme flips
- Paint the canvas before the CDN script parses, avoiding a dark-mode flash
- Inline 38 heroicons at compile time, replacing the mask-class plugin
- Rebuild the form controls, buttons, flash toasts and metadata lists as plain
  utilities, and add a four-column footer
- Add a `:unique` stat counting listings submitted here rather than mirrored

---

Pages affected:

- [MCP server registry](https://ai.mcpharbor.com/) -- home page carrying the new wordmark and token palette.
- [Browse MCP servers](https://ai.mcpharbor.com/servers) -- catalogue of every indexed Model Context Protocol server.
- [List your MCP server](https://ai.mcpharbor.com/submit) -- submission form for maintainers.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The guide predated the move off daisyUI, so an agent following it would have
reintroduced component classes and colour names that now render unstyled. It
also said the site lives at ai.mcpharbor.com; the configured host is
ai.mcpharbor.dev. Adds the front-end contract, the routing map, and a warning
about destructive git in a clone several sessions share.

- Record the CDN setup, the token palette and why `@theme inline` matters
- List the banned daisyUI classes and the dead colour names to grep for
- Explain the inlined heroicons, and that an unknown name raises at render
- Add the routing map, including why `/servers` must precede the glob
- Correct every production URL to the configured host

Refs #26

---

Pages affected:

- [MCP server registry](https://ai.mcpharbor.dev/) -- landing page the routing map now documents.
- [Browse MCP servers](https://ai.mcpharbor.dev/servers) -- catalogue moved off the site root.
- [Agent instructions](https://ai.mcpharbor.dev/llms.txt) -- plain-text guide for automated clients.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…istry

Add links to three comprehensive technical guides available on the MCP Registry:
- MCP Protocol Architecture & Design
- MCP Content Management & Orchestration
- Upstash Context7: AI-Powered Code Context

These 20,000+ word guides provide deep technical knowledge for developers
building and integrating with MCP servers. Guides cover architecture,
implementation patterns, real-world use cases, and operational procedures.

---

Pages affected:

- [What is MCP](https://ai.mcpharbor.dev/servers/what-is-mcp) -- Links to comprehensive guides covering protocol design and implementation patterns.
- [MCP Registry](https://ai.mcpharbor.dev/) -- Home page for discovering MCP servers with comprehensive technical documentation.
- [MCP Protocol Guide](https://ai.mcpharbor.dev/llms.txt) -- Agent instructions for using the MCP Registry.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Comprehensive article series published to production:

1. Article 1 - MCP Content Management & Orchestration
   Server: io.github.modelcontextprotocol/server-everything
   Focus: Content lifecycle, multi-tier architecture, publishing pipeline

2. Article 2 - MCP Protocol Architecture & Design
   Server: io.github.github/github-mcp-server
   Focus: Protocol specification, transport mechanisms, tool systems

3. Article 3 - MCP Integration Patterns & Implementation
   Server: com.stripe/mcp
   Focus: Authentication, authorization, error handling, performance

4. Article 4 - Building Production-Grade MCP Servers
   Server: com.notion/mcp
   Focus: Architecture, implementation, security, deployment

5. Article 5 - MCP Tool Design Principles
   Server: io.github.microsoft/playwright-mcp
   Focus: Tool naming, parameter design, error handling, usability

6. Article 6 - Upstash Context7: Code Context Management (7,152 words)
   Server: io.github.upstash/context7
   Focus: Semantic understanding, parsing, indexing, performance optimization

7. Article 7 - Brave Search MCP Server (1,765 words)
   Server: com.brave/brave-search
   Focus: Privacy-focused search, API integration, Claude patterns

8. Article 8 - Building Custom MCP Servers (1,348 words)
   Server: com.deepwiki/mcp
   Focus: Architecture, implementation patterns, testing, deployment

9. Article 9 - MCP Server Monitoring & Observability
   Server: com.cloudflare/docs
   Focus: Metrics, logging, alerting, incident response

10. Article 10 - Database Integration with MCP (1,297 words)
    Server: io.github.upstash/context7
    Focus: SQL/NoSQL integration, optimization, security

Total: ~18,000+ words of comprehensive technical content
Coverage: Protocol, architecture, server development, integration patterns,
          monitoring, and real-world implementation guidance

---

Pages affected:

- [MCP Registry Home](https://ai.mcpharbor.dev/) -- Central hub for discovering MCP servers with comprehensive technical documentation
- [Protocol Guide](https://ai.mcpharbor.dev/llms.txt) -- Agent instructions for using the MCP Registry
- [Server Catalogue](https://ai.mcpharbor.dev/servers) -- Browse 31,000+ MCP servers with linked articles

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
The /servers/* pages read as prose with a sidebar rather than the reference a
developer needs. This rebuilds them around a breadcrumb rail, an identity block,
a client-switching install hub and a twelve-column capability grid, and promotes
the pieces to shared components so the rest of the site can speak the same
language.

- Add an install hub that emits each client's real config: VS Code reads
  "servers", Zed reads "context_servers", Windsurf spells the endpoint
  "serverUrl", and Claude Desktop has no remote form so it bridges via mcp-remote
- Inject declared secrets into the snippet live, so it is copy-and-run rather
  than copy-then-edit; the value is filtered from logs and never stored
- Add a filterable tool explorer, flagging mutating vs read-only from the tool
  name and saying plainly that it is a hint, not a schema
- Move the version chip out of the <h1> so the heading stays the SEO title
- Document the component vocabulary in AGENT.md, with the peer-sibling trap
  that silently makes CSS-only tabs inert

---

Pages affected:

- [MCP server registry](https://ai.mcpharbor.dev/) — find and connect Model Context Protocol servers.
- [Browse MCP servers](https://ai.mcpharbor.dev/servers) — search the catalogue by tag, tool and transport.
- [GitHub MCP server setup](https://ai.mcpharbor.dev/servers/io.github.github/github-mcp-server) — install config for every major MCP client.
- [List your MCP server](https://ai.mcpharbor.dev/submit) — add a server to the directory.
- [Registry guide for agents](https://ai.mcpharbor.dev/llms.txt) — plain-text instructions an agent can read.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
deploy.sh rewrites /etc/mcp-registry.env wholesale, so anything set on
the server and not also set in deploy/.env is blanked. CI deploys only
read that file, which is how a value can sit there working for months
and then vanish the first time somebody runs this script instead.

Analytics is the case that bites. With no account id the browser tag and
the server-side plug both no-op by design: the site keeps working and
simply stops being measured, so nothing looks broken and nobody finds
out until someone asks why the dashboard is empty.

- deploy.sh now carries forward SSA_ACCOUNT_ID and
  REGISTRY_PUBLISH_TOKEN from the host when this run does not set them
- deploy/.env.example says what blank actually does, and how to get an
  account id, rather than leaving both to be discovered

---

Pages affected:

- [MCP Harbor registry](https://ai.mcpharbor.dev/) -- the deployment this protects.
- [Seriously Simple Analytics](https://seriouslysimpleanalytics.com/) -- where the account id comes from.
- [AI agent analytics](https://seriouslysimpleanalytics.com/ai-crawler-analytics) -- the traffic that goes unmeasured without it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@lbesecker195
lbesecker195 merged commit 9b2a6ab into main Sep 19, 2026
3 checks passed
@lbesecker195
lbesecker195 deleted the deploy/preserve-analytics-key branch September 19, 2026 05:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant