Skip to main content
Glama

Vercel MCP Server

by Quegenx
resources.ts12.3 kB
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js"; import { BASE_URL, DEFAULT_ACCESS_TOKEN, handleResponse } from "./index.js"; export function registerResources(server: McpServer) { // Project resource server.resource( "project", new ResourceTemplate("projects://{projectId}", { list: undefined }), async (uri, variables) => { const response = await fetch(`${BASE_URL}/v9/projects/${variables.projectId}`, { headers: { Authorization: `Bearer ${DEFAULT_ACCESS_TOKEN}` } }); const data = await handleResponse(response); return { contents: [{ uri: uri.href, text: JSON.stringify(data, null, 2) }] }; } ); // Team resource server.resource( "team", new ResourceTemplate("teams://{teamId}", { list: undefined }), async (uri, variables) => { const response = await fetch(`${BASE_URL}/v2/teams/${variables.teamId}`, { headers: { Authorization: `Bearer ${DEFAULT_ACCESS_TOKEN}` } }); const data = await handleResponse(response); return { contents: [{ uri: uri.href, text: JSON.stringify(data, null, 2) }] }; } ); // Deployment resource server.resource( "deployment", new ResourceTemplate("deployments://{deploymentId}", { list: undefined }), async (uri, variables) => { const response = await fetch(`${BASE_URL}/v13/deployments/${variables.deploymentId}`, { headers: { Authorization: `Bearer ${DEFAULT_ACCESS_TOKEN}` } }); const data = await handleResponse(response); return { contents: [{ uri: uri.href, text: JSON.stringify(data, null, 2) }] }; } ); // Environment Variables resource server.resource( "env-vars", new ResourceTemplate("env://{projectId}", { list: undefined }), async (uri, variables) => { const response = await fetch(`${BASE_URL}/v9/projects/${variables.projectId}/env`, { headers: { Authorization: `Bearer ${DEFAULT_ACCESS_TOKEN}` } }); const data = await handleResponse(response); return { contents: [{ uri: uri.href, text: JSON.stringify(data, null, 2) }] }; } ); // Domains resource server.resource( "domains", new ResourceTemplate("domains://{domain}", { list: undefined }), async (uri, variables) => { const response = await fetch(`${BASE_URL}/v5/domains/${variables.domain}`, { headers: { Authorization: `Bearer ${DEFAULT_ACCESS_TOKEN}` } }); const data = await handleResponse(response); return { contents: [{ uri: uri.href, text: JSON.stringify(data, null, 2) }] }; } ); // Webhook resource server.resource( "webhook", new ResourceTemplate("webhooks://{webhookId}", { list: undefined }), async (uri, variables) => { const response = await fetch(`${BASE_URL}/v1/webhooks/${variables.webhookId}`, { headers: { Authorization: `Bearer ${DEFAULT_ACCESS_TOKEN}` } }); const data = await handleResponse(response); return { contents: [{ uri: uri.href, text: JSON.stringify(data, null, 2) }] }; } ); // User resource server.resource( "user", new ResourceTemplate("users://{userId}", { list: undefined }), async (uri, variables) => { const response = await fetch(`${BASE_URL}/v2/user`, { headers: { Authorization: `Bearer ${DEFAULT_ACCESS_TOKEN}` } }); const data = await handleResponse(response); return { contents: [{ uri: uri.href, text: JSON.stringify(data, null, 2) }] }; } ); // Integration resource server.resource( "integration", new ResourceTemplate("integrations://{integrationId}", { list: undefined }), async (uri, variables) => { const response = await fetch(`${BASE_URL}/v1/integrations/${variables.integrationId}`, { headers: { Authorization: `Bearer ${DEFAULT_ACCESS_TOKEN}` } }); const data = await handleResponse(response); return { contents: [{ uri: uri.href, text: JSON.stringify(data, null, 2) }] }; } ); // Project Member resource server.resource( "project-member", new ResourceTemplate("project-members://{projectId}/{userId}", { list: undefined }), async (uri, variables) => { const response = await fetch(`${BASE_URL}/v9/projects/${variables.projectId}/members/${variables.userId}`, { headers: { Authorization: `Bearer ${DEFAULT_ACCESS_TOKEN}` } }); const data = await handleResponse(response); return { contents: [{ uri: uri.href, text: JSON.stringify(data, null, 2) }] }; } ); // Access Group resource server.resource( "access-group", new ResourceTemplate("access-groups://{groupId}", { list: undefined }), async (uri, variables) => { const response = await fetch(`${BASE_URL}/v1/access-groups/${variables.groupId}`, { headers: { Authorization: `Bearer ${DEFAULT_ACCESS_TOKEN}` } }); const data = await handleResponse(response); return { contents: [{ uri: uri.href, text: JSON.stringify(data, null, 2) }] }; } ); // Log Drain resource server.resource( "log-drain", new ResourceTemplate("log-drains://{drainId}", { list: undefined }), async (uri, variables) => { const response = await fetch(`${BASE_URL}/v1/log-drains/${variables.drainId}`, { headers: { Authorization: `Bearer ${DEFAULT_ACCESS_TOKEN}` } }); const data = await handleResponse(response); return { contents: [{ uri: uri.href, text: JSON.stringify(data, null, 2) }] }; } ); // Secret resource server.resource( "secret", new ResourceTemplate("secrets://{projectId}/{name}", { list: undefined }), async (uri, variables) => { const response = await fetch(`${BASE_URL}/v9/projects/${variables.projectId}/env/${variables.name}`, { headers: { Authorization: `Bearer ${DEFAULT_ACCESS_TOKEN}` } }); const data = await handleResponse(response); return { contents: [{ uri: uri.href, text: JSON.stringify(data, null, 2) }] }; } ); // Alias resource server.resource( "alias", new ResourceTemplate("aliases://{aliasId}", { list: undefined }), async (uri, variables) => { const response = await fetch(`${BASE_URL}/v2/aliases/${variables.aliasId}`, { headers: { Authorization: `Bearer ${DEFAULT_ACCESS_TOKEN}` } }); const data = await handleResponse(response); return { contents: [{ uri: uri.href, text: JSON.stringify(data, null, 2) }] }; } ); // Artifact resource server.resource( "artifact", new ResourceTemplate("artifacts://{projectId}/{artifactId}", { list: undefined }), async (uri, variables) => { const response = await fetch(`${BASE_URL}/v8/artifacts/${variables.projectId}/${variables.artifactId}`, { headers: { Authorization: `Bearer ${DEFAULT_ACCESS_TOKEN}` } }); const data = await handleResponse(response); return { contents: [{ uri: uri.href, text: JSON.stringify(data, null, 2) }] }; } ); // Certificate resource server.resource( "certificate", new ResourceTemplate("certs://{certId}", { list: undefined }), async (uri, variables) => { const response = await fetch(`${BASE_URL}/v5/now/certs/${variables.certId}`, { headers: { Authorization: `Bearer ${DEFAULT_ACCESS_TOKEN}` } }); const data = await handleResponse(response); return { contents: [{ uri: uri.href, text: JSON.stringify(data, null, 2) }] }; } ); // DNS resource server.resource( "dns", new ResourceTemplate("dns://{domain}/{recordId}", { list: undefined }), async (uri, variables) => { const response = await fetch(`${BASE_URL}/v2/domains/${variables.domain}/records/${variables.recordId}`, { headers: { Authorization: `Bearer ${DEFAULT_ACCESS_TOKEN}` } }); const data = await handleResponse(response); return { contents: [{ uri: uri.href, text: JSON.stringify(data, null, 2) }] }; } ); // Marketplace resource server.resource( "marketplace", new ResourceTemplate("marketplace://{integration}", { list: undefined }), async (uri, variables) => { const response = await fetch(`${BASE_URL}/v1/marketplace/integrations/${variables.integration}`, { headers: { Authorization: `Bearer ${DEFAULT_ACCESS_TOKEN}` } }); const data = await handleResponse(response); return { contents: [{ uri: uri.href, text: JSON.stringify(data, null, 2) }] }; } ); // Edge Config resource server.resource( "edge-config", new ResourceTemplate("edge-config://{configId}", { list: undefined }), async (uri, variables) => { const response = await fetch(`${BASE_URL}/v1/edge-config/${variables.configId}`, { headers: { Authorization: `Bearer ${DEFAULT_ACCESS_TOKEN}` } }); const data = await handleResponse(response); return { contents: [{ uri: uri.href, text: JSON.stringify(data, null, 2) }] }; } ); // Speed Insights resource server.resource( "speed-insights", new ResourceTemplate("speed-insights://{projectId}", { list: undefined }), async (uri, variables) => { const response = await fetch(`${BASE_URL}/v1/speed-insights/${variables.projectId}`, { headers: { Authorization: `Bearer ${DEFAULT_ACCESS_TOKEN}` } }); const data = await handleResponse(response); return { contents: [{ uri: uri.href, text: JSON.stringify(data, null, 2) }] }; } ); // Security resource server.resource( "security", new ResourceTemplate("security://{projectId}", { list: undefined }), async (uri, variables) => { const response = await fetch(`${BASE_URL}/v1/security/projects/${variables.projectId}`, { headers: { Authorization: `Bearer ${DEFAULT_ACCESS_TOKEN}` } }); const data = await handleResponse(response); return { contents: [{ uri: uri.href, text: JSON.stringify(data, null, 2) }] }; } ); // Auth resource server.resource( "auth", new ResourceTemplate("auth://{token}", { list: undefined }), async (uri, variables) => { const response = await fetch(`${BASE_URL}/v2/user/tokens/${variables.token}`, { headers: { Authorization: `Bearer ${DEFAULT_ACCESS_TOKEN}` } }); const data = await handleResponse(response); return { contents: [{ uri: uri.href, text: JSON.stringify(data, null, 2) }] }; } ); // Static configuration resource server.resource( "config", "config://vercel", async (uri) => ({ contents: [{ uri: uri.href, text: JSON.stringify({ apiVersion: "v9", baseUrl: BASE_URL, defaultTeam: null, features: { deployments: true, teams: true, domains: true, envVars: true, analytics: true, webhooks: true, users: true, integrations: true, projectMembers: true, accessGroups: true, logDrains: true, secrets: true, aliases: true, artifacts: true, certificates: true, dns: true, marketplace: true, edgeConfig: true, speedInsights: true, security: true, auth: true } }, null, 2) }] }) ); }

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/Quegenx/vercel-mcp-server'

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