Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
GITHUB_REPONoDefault repository name for all operations
GITHUB_OWNERNoDefault repository owner for all operations
GITHUB_TOKENYesGitHub Personal Access Token with repo scope

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
batch_update_issuesA

Update multiple GitHub issues in parallel (max 50 per batch).

Each update object: {issue_number (required), title, body, state, labels, milestone, assignees} Note: labels/assignees replace existing (not append).

Returns: {total, successful, failed, success_rate, execution_time_seconds, results}

batch_add_labelsA

Add labels to multiple issues in parallel. Labels are ADDED (not replaced).

Each operation: {issue_number (required), labels (required)}

Returns: {total, successful, failed, success_rate, execution_time_seconds, results}

batch_link_to_projectA

Link multiple issues to a GitHub Project (v2) board in parallel.

project_id: Project node ID starting with "PVT_" (from GraphQL API, not project number) Requires token with project (write) scope.

Returns: {total, successful, failed, success_rate, execution_time_seconds, results}

check_ci_statusA

Check CI workflow status for a branch. Returns overall and per-workflow status.

Returns: {overall_status, overall_conclusion, branch, workflows: [{name, status, conclusion, url, jobs}]}

If no CI runs found, returns status="no_runs".

get_ci_logsA

Get CI workflow logs for debugging failed jobs.

Provide either branch OR run_id (not both).

Optional filters:

  • job_name: filter by job name (e.g., "test", "lint")

  • status: "failure" (default), "success", or "all"

  • max_lines: tail N lines of logs (default: 200)

Returns: {run_id, run_url, branch, status, conclusion, jobs: [{job_id, name, status, conclusion, logs, log_url}]}

create_issuesA

Create GitHub issues (1 or more). Parallel execution for multiple.

Each issue: {title (required), body, labels, milestone, assignees}

Options:

  • max_workers: parallel workers (default: 5, max: 10)

Returns: {total, successful, failed, results: [{index, success, data/error}]}

get_issueC

Retrieve full GitHub issue details including body content.

Returns: {number, title, body, state, labels, milestone, created_at, updated_at, url}

list_issuesA

List and filter GitHub issues with pagination.

Optional filters:

  • state: "open" (default), "closed", or "all"

  • labels: filter by label names

  • milestone: filter by milestone title (not number)

  • assignee: filter by username, or "none" for unassigned

  • sort: "created" (default), "updated", or "comments"

  • limit: max issues to return (default: 30, max: 100)

Returns: {total, count, issues: [{number, title, state, labels, milestone, assignee, url}]}

close_issueB

Close a GitHub issue with optional comment and reason.

Optional:

  • comment: add closing comment before closing

  • state_reason: "completed" or "not_planned"

Returns: {number, state, state_reason, comment_added, url}

create_milestoneB

Create a GitHub milestone.

Optional:

  • description: markdown description

  • due_date: ISO 8601 format (e.g., "2025-12-31T23:59:59Z")

  • state: "open" (default) or "closed"

Returns: {number, title, description, state, due_on, url}

list_milestonesA

List repository milestones with filtering and sorting.

Options:

  • state: "open" (default), "closed", or "all"

  • sort: "due_on" (default) or "completeness"

  • direction: "asc" (default) or "desc"

Returns: {total, milestones: [{number, title, state, open_issues, closed_issues, due_on, url}]}

create_pr_with_contentA

Create a GitHub PR with structured content. Auto-detects current branch as head.

Required content:

  • problem: why this change is needed (2-4 sentences)

  • solution: how it works (4-8 sentences)

  • key_changes: bulleted markdown list of changes

Optional:

  • issue: GitHub issue number to close (adds "Closes #N" to PR)

Returns: {pr_number, url, state, head, base, created_at}

get_pull_requestB

Get PR details including mergeable status and statistics.

Returns: {number, title, state, merged, mergeable, mergeable_state, draft, head, base, commits, additions, deletions, changed_files, created_at, updated_at, merged_at, url}

mergeable_state: "clean", "dirty", "unstable", "blocked", or "unknown"

update_prA

Update PR metadata. Only provided fields are updated; None values ignored.

Optional updates:

  • title: new PR title

  • body: new PR description

  • base: change base branch

  • state: "open" or "closed"

Returns: {number, title, state, updated_fields, url}

Note: Cannot update merged PRs.

merge_prA

Merge a PR after checking mergeable status.

Options:

  • merge_method: "squash" (default), "merge", or "rebase"

  • commit_title/commit_message: custom merge commit text (squash/merge only)

  • delete_branch: delete head branch after merge (default: True)

Returns: {merged, sha, message, branch_deleted}

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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

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