Stop a manual deploy from silently blanking analytics - #30
Merged
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
deploy/deploy.shrewrites/etc/mcp-registry.envwholesale, so anything set on the server and not also set indeploy/.envgets blanked. CI deploys only read that file —receive-release.shships 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.shcarries forwardSSA_ACCOUNT_IDandREGISTRY_PUBLISH_TOKENfrom the host when the current run does not set themdeploy/.env.examplenow says what blank actually does, and how to get an account id, instead of leaving both to be discoveredFound while checking whether the newly deployed plug was recording on https://ai.mcpharbor.dev — it is not, because
SSA_ACCOUNT_IDhas 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