From e3a47bc9d2bf26ef733fa94e54eba4ae7af56616 Mon Sep 17 00:00:00 2001 From: Yash Date: Fri, 14 Nov 2025 10:12:08 +0530 Subject: [PATCH 1/3] feat: enhance SEO by updating robots.txt, adding sitemap.xml, and improving meta tags across routes --- public/firecrawl-logo.png | Bin 15027 -> 2971 bytes public/robots.txt | 10 +++++++- public/sitemap.xml | 9 +++++++ src/components/AppLogo.tsx | 4 +++ .../landing/AvailableAppsSection.tsx | 3 ++- src/components/landing/HeroSection.tsx | 7 ++++-- src/routes/__root.tsx | 23 +++++++++++++++++- src/routes/_authed/chat.tsx | 22 +++++++++++++++++ src/routes/_authed/runs.tsx | 22 +++++++++++++++++ src/routes/_authed/settings.tsx | 22 +++++++++++++++++ src/routes/index.tsx | 13 ++++++++++ src/routes/login.tsx | 22 +++++++++++++++++ vite.config.ts | 1 + 13 files changed, 153 insertions(+), 5 deletions(-) create mode 100644 public/sitemap.xml diff --git a/public/firecrawl-logo.png b/public/firecrawl-logo.png index 6c2cf36789a0634e3c3cf3cd64c3d9fb0d2f5001..a605a999c05ff8174cc4a12cd41b244340a47e4b 100644 GIT binary patch literal 2971 zcmY*bcQoAF79K>2(TQGyD4Eg169jPy5uzJ4V@Q-JVJ1k7-g`-IqIVL)B+5;ch|vv3 z3vv2T+w?r7*0LJu>%!2p+eP#RYeQ07HybcG+$+)6dRAcRk~hItjDh@PSdeOm+!p6;V|QiA8Tg z0CD~%avWs7=UgM#xu;Vjk3V@u!`@9l59UM3KoZ`Daw{yoPO8ezVN@V$hKD`_^xCIS zR-^OG!_-yZ9a$3-`CmKd|M5+^W!}^Tipkh3%72cABEU*FH z2S+?w%JM&3nD{h1E<3FOlbh`is0>K~l5roDS|v?b@K!*yydo>OVJBXZGu*IHfw~4B zN{06}f)gHHQIU(p+*JnRAGPT>PQtPN!8P25TBbyYxWVyToDjoJ;#!~-!3pvBB7JaN zAE#tGYEVV{`DMwZ$#`+KZN_uMNvj5S4A?-!c7%s$--yaov!T4|e<%vI%mh!ym&2<( zm``owd5+%Cs&AQ0S_O7s^dCOP2*qntflv!7P)Y@KC#}B6LM#KRji|s5&qif_%Y-R! zZQ$#4$px6I!87Ydo`7JRawg}=cxV{0?@GJ>8nbg=OSc_w?QT{UG|XMIDcA*q;^sq& zLlR=<2ds?~zX+J?j>e}RU;Dc8Yvq(Tbm4Qi?v7ysoq5l<0P-sBu5x^=9Ag5V=^Y0q zKIEM~O%yr1{86q;VGDXcIklNf0YGqwxU|EutbEAZPs!QcxVZo_FLg(eSGoB}Mix)q z3!Zd&^x@`~vG5sbpAUJKzX7Ba9NV_!$TZBdic8FKX;b7=01^`HMp&kc%2livGMouL z$Dj5h|9g43U-r`r_3{(M|H5!$e5E9npbvl;Bhm_35h_Q4}x{Jo$2mi&5yq@jY z=t7Itov9?&(4l)inhx13fROf0UJmGE!Zr>zZTNL-HQN^*?9-cmEZ1cG!fItFiyFS~ zO>gFL)iz0z*< zImKoKz&b}3tV-i!N%tPu z0k|_T^-V_Jrk9=<0IO}%6icF0uS+kZ5T~j+w_=*pZZH*2M_4Yc;9F-%8W{k==ZV)R zmAYqrHN}UI8cS?_Z(wJZ+&O;gbj*?&!i4sXF5Y6%t&V8{|%yi7)#CA=@PbiAvQp%!GD_G#-n9CH^_5PZFU!-WxF!L{-dWH`#eWf z>sEtb(7TCR-e;l=^Q76P38lZaSkPk&?wevCM`Rf3il19r@gGIBQSxE!7d{W|Qv^?A zEVlwQ86`)$#v{V;0&8s^3N-MGtBI-vIlk7A{S35afBuonUg->EO{|*0HUd*HEZ35WH87s$nGI zNNCrIK-A*EhF&oF*=gUw__H14hFux<?W+UQ)DxmiP{Dr-R*G#_2c>&e{q==Y@wMZd*um5#DlW%cfjM`WQ8ZN6C z;aMN53QV5H<8awQab`UIFOaE)NiWu%lobHzE(5d0;ylnQPi1p|`RPNJRsd9&(#K}% zn_h4r&(6y40vs9tQhCS;rz2Zd4-$6!>PTtgi({o&5yv?W;N%dm0bbSC^bkUEzdJmX zN?p}{7|hW-2dQ&zss^^u&=llBwJ&;37E#bL_==wFcQYW12iKZ^aPGs4Yt7xwh{j?r zD}9m$X3BF!KPdqP2FO`j>>mQ#rMW59{d}=L6@LJ6iqC5ut|C+SGyYs$bm~b>d_a*S zb6i=dK7G7iSwChPC-`&Ct+&8@fIGZ9%<}MFkg9%sEJk-QlF@|FMt4FRX3v`V z8RQquuIcgoM|6l|+;3ELgX0PthHIlKbSW~NO42IKbimN*)w67hz+{$+Tg;)!C5}!} z+`iMpwsbF*opKARZ!Jj;LFB@0uAtOEF@c?JqSenic-t{F{BK4T!=ghG#q5>xD$_zr zcMa_KOCf)TvRRJALJY02p%R%Etex7>s|#4J+6aKPc{chu?(Hx~mLG=8C{F?NrJDJg zJEs0eWquULuuP|@mNXu`_q7I$Ow^iKz3fB&PZDp^xqN^ny~YHG+hYu^H%PE^bW1ZS z?)$O!{`e(>B@VX^jHqClic7~-LUw6LaUuGveWWT4v3n}&@fN`Yf&ES=?>a;u(IZ|7 zmsMOZF;zm+tOk+m8^Q7@sOM6^s#KsPh6cUO><{*fou{D3cQ@0}oOiyIvju>O3*HBp zofgocCtf!b_odMU@=D*_vd5w>maGPKrD_(pYyoh38s9;a?*V`?sQuH5~(nlB#0 z?i_jVdqt%M;!N6fHv|@A?v_w%KAPR?+Q^M`4{<4DhdYa@z}@H1ao&5E7JH5oUyX~e zmr|N>>S8TDXceUzR*Y@!J`l60@x7)u6q+6#Q2*V48=DGWC=SoiZsb6J~k%5_h Jt)5HFe*tYc%M<_r literal 15027 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 z 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 + + + https://remotemcp.tech/ + 2025-11-14 + weekly + 1.0 + + diff --git a/src/components/AppLogo.tsx b/src/components/AppLogo.tsx index ab77870..3a91d47 100644 --- a/src/components/AppLogo.tsx +++ b/src/components/AppLogo.tsx @@ -21,6 +21,10 @@ export const AppLogo = ({ src={logo.url} alt={appName} className={className} + loading="lazy" + decoding="async" + width="40" + height="40" onError={(e) => { const target = e.target as HTMLImageElement; target.src = "/favicon.ico"; diff --git a/src/components/landing/AvailableAppsSection.tsx b/src/components/landing/AvailableAppsSection.tsx index 00f4c4e..b4eb3d6 100644 --- a/src/components/landing/AvailableAppsSection.tsx +++ b/src/components/landing/AvailableAppsSection.tsx @@ -200,10 +200,11 @@ export function AvailableAppsSection() { duration: 0.5, delay: categoryIndex * 0.1 + appIndex * 0.05, }} - viewport={{ once: true }} + viewport={{ once: true, margin: "100px" }} whileHover={{ scale: 1.05 }} onClick={() => setActive(app)} className="bg-neutral-900 border border-neutral-800 rounded-lg p-6 hover:border-neutral-700 transition-all duration-300 cursor-pointer group relative" + style={{ willChange: "transform" }} >
{/* Logo */} {/* Video Container */}
@@ -188,9 +190,9 @@ export function HeroSection() { {/* Overlay Text */}
-

+

See Remote MCP in Action -

+

Watch how to connect AI agents to external tools in minutes @@ -207,6 +209,7 @@ export function HeroSection() { autoPlay muted playsInline + preload="metadata" title="Demo: See Remote MCP in Action – how to connect AI agents to external tools in minutes" onEnded={() => { setIsVideoPlaying(false); diff --git a/src/routes/__root.tsx b/src/routes/__root.tsx index 76ee84d..17bdc02 100644 --- a/src/routes/__root.tsx +++ b/src/routes/__root.tsx @@ -43,7 +43,20 @@ export const Route = createRootRouteWithContext()({ content: "width=device-width, initial-scale=1", }, { - title: "Remote Mcp", + title: "Remote MCP - Cloud MCP Servers for AI Assistants", + }, + { + name: "description", + content: + "Connect AI assistants like Claude and Cursor to your favorite apps. Create and manage MCP servers in the cloud with 159+ tools across GitHub, Slack, YouTube, PostgreSQL, and more.", + }, + { + name: "robots", + content: "index, follow", + }, + { + name: "theme-color", + content: "#000000", }, ], links: [ @@ -51,6 +64,14 @@ export const Route = createRootRouteWithContext()({ rel: "stylesheet", href: appCss, }, + { + rel: "icon", + href: "/favicon.ico", + }, + { + rel: "canonical", + href: "https://remotemcp.tech", + }, ], }), shellComponent: RootDocument, diff --git a/src/routes/_authed/chat.tsx b/src/routes/_authed/chat.tsx index a9d1654..8fdab73 100644 --- a/src/routes/_authed/chat.tsx +++ b/src/routes/_authed/chat.tsx @@ -5,6 +5,28 @@ import { Suspense } from "react"; export const Route = createFileRoute("/_authed/chat")({ component: ChatLayout, + head: () => ({ + meta: [ + { + title: "Chat - Remote MCP", + }, + { + name: "description", + content: + "Chat with AI assistants powered by Remote MCP servers. Test your MCP integrations with Claude, GPT-4, and other AI models.", + }, + { + name: "robots", + content: "noindex, nofollow", + }, + ], + links: [ + { + rel: "canonical", + href: "https://remotemcp.tech/chat", + }, + ], + }), }); const ChatSkeleton = () => ( diff --git a/src/routes/_authed/runs.tsx b/src/routes/_authed/runs.tsx index 7225927..b65365d 100644 --- a/src/routes/_authed/runs.tsx +++ b/src/routes/_authed/runs.tsx @@ -9,6 +9,28 @@ import { RunsTable } from "./-components/runs-table"; export const Route = createFileRoute("/_authed/runs")({ component: RunsPage, validateSearch: runsSearchSchema, + head: () => ({ + meta: [ + { + title: "Runs - Remote MCP", + }, + { + name: "description", + content: + "View and monitor your MCP server execution logs, track tool invocations, and debug AI assistant interactions.", + }, + { + name: "robots", + content: "noindex, nofollow", + }, + ], + links: [ + { + rel: "canonical", + href: "https://remotemcp.tech/runs", + }, + ], + }), }); function RunsPage() { diff --git a/src/routes/_authed/settings.tsx b/src/routes/_authed/settings.tsx index 3f070c8..99ce042 100644 --- a/src/routes/_authed/settings.tsx +++ b/src/routes/_authed/settings.tsx @@ -44,6 +44,28 @@ import { useLocalStorage } from "usehooks-ts"; export const Route = createFileRoute("/_authed/settings")({ component: RouteComponent, + head: () => ({ + meta: [ + { + title: "Settings - Remote MCP", + }, + { + name: "description", + content: + "Manage your Remote MCP account settings, configure AI providers, adjust MCP server preferences, and customize your experience.", + }, + { + name: "robots", + content: "noindex, nofollow", + }, + ], + links: [ + { + rel: "canonical", + href: "https://remotemcp.tech/settings", + }, + ], + }), }); function RouteComponent() { diff --git a/src/routes/index.tsx b/src/routes/index.tsx index 89fcde5..4723c64 100644 --- a/src/routes/index.tsx +++ b/src/routes/index.tsx @@ -88,6 +88,19 @@ export const Route = createFileRoute("/")({ content: "width=device-width, initial-scale=1", }, ], + links: [ + // Preload critical assets + { + rel: "preload", + href: "/logo512.png", + as: "image", + }, + // Preconnect to external domains + { + rel: "preconnect", + href: "https://github.com", + }, + ], }; }, }); diff --git a/src/routes/login.tsx b/src/routes/login.tsx index 6c3cbfa..ce82aaa 100644 --- a/src/routes/login.tsx +++ b/src/routes/login.tsx @@ -39,6 +39,28 @@ export const Route = createFileRoute("/login")({ validateSearch: z.object({ from: z.string().optional(), }), + head: () => ({ + meta: [ + { + title: "Login - Remote MCP", + }, + { + name: "description", + content: + "Sign in to Remote MCP to manage your cloud MCP servers and connect AI assistants to your favorite apps. Login with GitHub or Google.", + }, + { + name: "robots", + content: "noindex, nofollow", + }, + ], + links: [ + { + rel: "canonical", + href: "https://remotemcp.tech/login", + }, + ], + }), }); // Schema for form validation diff --git a/vite.config.ts b/vite.config.ts index 7cd4e19..b3ca3d1 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -19,6 +19,7 @@ const config = defineConfig({ externals: { inline: ['zod', 'nanoid'], }, + compatibilityDate: '2025-11-13' }), viteReact(), ], From 21111d2ab1cfd3303b53e413b4a27f193aff1edf Mon Sep 17 00:00:00 2001 From: Yash Bajaj Date: Mon, 17 Nov 2025 14:00:38 +0530 Subject: [PATCH 2/3] Update public/sitemap.xml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- public/sitemap.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/sitemap.xml b/public/sitemap.xml index c828659..eb709e2 100644 --- a/public/sitemap.xml +++ b/public/sitemap.xml @@ -2,7 +2,7 @@ https://remotemcp.tech/ - 2025-11-14 + 2024-12-01 weekly 1.0 From 6d2a6890b1ca51cdd47b0b1d5d67ddfe6cf22407 Mon Sep 17 00:00:00 2001 From: Yash Bajaj Date: Mon, 17 Nov 2025 14:07:26 +0530 Subject: [PATCH 3/3] Update src/routes/index.tsx Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/routes/index.tsx | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/routes/index.tsx b/src/routes/index.tsx index 4723c64..0ebb7b5 100644 --- a/src/routes/index.tsx +++ b/src/routes/index.tsx @@ -89,12 +89,6 @@ export const Route = createFileRoute("/")({ }, ], links: [ - // Preload critical assets - { - rel: "preload", - href: "/logo512.png", - as: "image", - }, // Preconnect to external domains { rel: "preconnect",