Skip to main content
Glama
InstallButtons.vue3.56 kB
<script setup lang="ts"> import {onBeforeUnmount, onMounted, ref} from 'vue' const open = ref(false) const container = ref<HTMLElement | null>(null) const toggle = (e: MouseEvent) => { e.stopPropagation() open.value = !open.value } const onClickOutside = (e: MouseEvent) => { if (!container.value) return if (!container.value.contains(e.target as Node)) { open.value = false } } onMounted(() => document.addEventListener('click', onClickOutside)) onBeforeUnmount(() => document.removeEventListener('click', onClickOutside)) const cursorUrl = 'https://cursor.com/en/install-mcp?name=prometheus-mcp&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22--rm%22%2C%22-i%22%2C%22brenoepics%2Fprometheus-mcp%3Alatest%22%2C%22--mcp%22%2C%22--prometheus-url%22%2C%22http%3A%2F%2Fhost.docker.internal%3A9090%22%5D%7D' const vscodeUrl = 'https://insiders.vscode.dev/redirect/mcp/install?name=prometheus%20mcp%20server&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22--rm%22%2C%22-i%22%2C%22brenoepics%2Fprometheus-mcp%3Alatest%22%2C%22--mcp%22%2C%22--prometheus-url%22%2C%22http%3A%2F%2Fhost.docker.internal%3A9090%22%5D%7D' </script> <template> <div ref="container" class="install-buttons"> <button class="add-ide" @click="toggle"> Add to IDE <svg class="caret" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"> <path fill="currentColor" d="M4.427 6.427a.75.75 0 0 1 1.146-.976L8 8.243l2.427-2.792a.75.75 0 0 1 1.146.976l-3 3.455a.75.75 0 0 1-1.146 0z"/> </svg> </button> <div v-show="open" class="dropdown" @click.stop> <a class="item" :href="vscodeUrl" target="_blank" rel="noopener noreferrer"> <span class="dot vscode" aria-hidden="true"></span> <span class="text">Install for VS Code</span> </a> <a class="item" :href="cursorUrl" target="_blank" rel="noopener noreferrer"> <span class="dot cursor" aria-hidden="true"></span> <span class="text">Install for Cursor</span> </a> </div> </div> </template> <style scoped> .install-buttons { position: relative; display: none; } @media (min-width: 1060px) { .install-buttons { display: inline-block; } } .add-ide { text-decoration: none; padding: 2px 6px; color: #fff; font-size: 14px; text-align: center; border-radius: 5px; background-color: #00863f; border: 1px solid #1A9B57; transition: background-color 0.2s ease, box-shadow 0.2s ease; line-height: 1.4; white-space: nowrap; font-family: inherit; font-weight: 600; display: inline-flex; align-items: center; gap: 6px; } .add-ide:hover { background-color: #009044; } .add-ide:active { background-color: #29903B; } .add-ide .caret { opacity: 0.85; } .dropdown { position: absolute; right: 0; top: calc(100% + 6px); min-width: 240px; padding: 8px; border-radius: 8px; background: var(--vp-c-bg); border: 1px solid var(--vp-c-divider); box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08); z-index: 1000; } .item { display: flex; align-items: center; gap: 10px; text-decoration: none; font-weight: 600; padding: 10px 12px; border-radius: 6px; color: var(--vp-c-text-1); border: 1px solid transparent; } .item:hover { background: var(--vp-c-bg-alt); border-color: var(--vp-c-divider); } .dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; } .dot.vscode { background: #007ACC; } .dot.cursor { background: #111; } .text { line-height: 1; } </style>

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/brenoepics/prometheus-rs'

If you have feedback or need assistance with the MCP directory API, please join our Discord server