Skip to main content
Glama

GitHub MCP Server

by renantrendt
api.ts2.5 kB
import fetch from 'node-fetch'; import { handleGitHubResponse } from './errors.js'; // Get the GitHub token from environment variables const GITHUB_TOKEN = process.env.GITHUB_PERSONAL_ACCESS_TOKEN; if (!GITHUB_TOKEN) { console.error('GITHUB_PERSONAL_ACCESS_TOKEN environment variable is required'); process.exit(1); } // Base GitHub API URL export const GITHUB_API_URL = 'https://api.github.com'; // Headers for GitHub API requests export const getHeaders = () => ({ 'Authorization': `token ${GITHUB_TOKEN}`, 'Accept': 'application/vnd.github.v3+json', 'Content-Type': 'application/json', 'User-Agent': 'GitHub-MCP-Server' }); // Generic GET request to GitHub API export async function githubGet(endpoint: string, params: Record<string, any> = {}) { // Build query string from params const queryParams = Object.entries(params) .filter(([, value]) => value !== undefined && value !== null) .map(([key, value]) => { if (Array.isArray(value)) { return `${key}=${value.join(',')}`; } return `${key}=${encodeURIComponent(String(value))}`; }) .join('&'); const url = `${GITHUB_API_URL}${endpoint}${queryParams ? `?${queryParams}` : ''}`; const response = await fetch(url, { method: 'GET', headers: getHeaders(), }); return handleGitHubResponse(response); } // Generic POST request to GitHub API export async function githubPost(endpoint: string, data: any) { const response = await fetch(`${GITHUB_API_URL}${endpoint}`, { method: 'POST', headers: getHeaders(), body: JSON.stringify(data), }); return handleGitHubResponse(response); } // Generic PATCH request to GitHub API export async function githubPatch(endpoint: string, data: any) { const response = await fetch(`${GITHUB_API_URL}${endpoint}`, { method: 'PATCH', headers: getHeaders(), body: JSON.stringify(data), }); return handleGitHubResponse(response); } // Generic PUT request to GitHub API export async function githubPut(endpoint: string, data: any) { const response = await fetch(`${GITHUB_API_URL}${endpoint}`, { method: 'PUT', headers: getHeaders(), body: JSON.stringify(data), }); return handleGitHubResponse(response); } // Generic DELETE request to GitHub API export async function githubDelete(endpoint: string) { const response = await fetch(`${GITHUB_API_URL}${endpoint}`, { method: 'DELETE', headers: getHeaders(), }); return handleGitHubResponse(response); }

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/renantrendt/mcp-github'

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