A side-by-side look at the Github MCP and Okffs MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Github MCP for version control work as a local process; choose Okffs for version control as a local process. You can also run both side by side in one mcpServers block.
GITHUB_MCP_ENABLE_WRITE, GITHUB_TOKEN.get_repo, list_issues, get_issue.create_issue, create_issues_from_list, plan.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Version Control | Version Control |
| Quality signal | 49/100 · Fair | 56/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Not declared |
| Required env vars | GITHUB_MCP_ENABLE_WRITEGITHUB_TOKEN | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 0 | 2 |
| Directory activity | 3 views 0 installs 0 upvotes | 1 views 0 installs 0 upvotes |
| Tools | 14 | 23 |
| Full listing | View Github MCP | View Okffs |
get_repoRepo metadata (stars, language, license, default branch, archived flag...)list_issuesList issues on a repo (PRs filtered out)get_issueFetch a single issuelist_pull_requestsList pull requests on a repoget_pull_requestFetch a single pull requestget_file_contentRead a repo file's content (base64-decoded, binary detected not decoded)search_reposSearch public repositoriesget_userPublic user/org profilelist_commitsList commits on a branch/refcreate_issueOpen an issuecomment_on_issueComment on an issue/PRupdate_issue_stateOpen/close an issuecreate_issueCreates an issue and a matching branch (an **Epic** gets no branch or draft PR — work lands on its children). Infers labels, a board `priority`/`effort`, and a native Issue Type from the task (toggle with `OKFFS_INFER_PRIORITY`/`OKFFS_INFER_EFFORT`/`OKFFS_INFER_TYPE`). Optional `assignees`, `labels…create_issues_from_listCreates many issues + branches from a task list in one shot. Confirms first. Per-task `labels`, `assignees`, `milestone`, `priority`, `effort`, `type`.planGive it a free-text description plus the breakdown Claude generates (titles, descriptions, labels, priority/effort/type, relationships); it creates every issue + branch, wires up relationships, and opens draft PRs when `OKFFS_AUTO_PR=true`. Confirms first.list_issuesLists open issues with branch, linked PR, board column, `priority:`/`effort:`, native `type:`, and relationships as a tree — ordered by priority so the most important work is on top.get_issueFull details for one issue: title, body, labels, assignees, branch, status.comment_issuePosts a comment — handy for logging what a branch did.link_issuesLinks two issues (`blocked_by`, `blocking`, `parent`), stored under a `## Relationships` section.close_issueCloses an issue and tips you to `/clear` before the next one.create_pull_requestOpens a PR for an issue branch — generates the title/body, pushes the branch, always includes `Closes #N`, and comments back. Can write changelog fragments when `OKFFS_UPDATE_DOCS=true`. Pass `allow_empty: true` to backfill a **draft** tracking PR on a branch with no commits (pushes an empty init c…commit_and_updateStages tracked changes (untracked need `include_untracked: true`), commits (your `message` verbatim, or an auto-generated one), pushes, and posts a progress comment to the issue. Refuses secret-looking files.merge_pull_requestAutonomously merges a green, review-resolved issue PR into the **base** branch (e.g. `develop`) using `OKFFS_BASE_MERGE_METHOD`, then closes the issue. Opt-in (`OKFFS_AUTO_MERGE_BASE=true`) and heavily gated — never touches `OKFFS_PROTECTED_BRANCH`, independently verifies checks/mergeability/thread…fix_into_baseOpens (and, under the same `OKFFS_AUTO_MERGE_BASE` gates, merges) an **issue-less** fix PR into the base branch — for small cleanups such as review-comment fixes. Never targets `OKFFS_PROTECTED_BRANCH`.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"github-mcp": {
"command": "uvx",
"args": [
"jaimenbell-github-mcp"
],
"env": {
"GITHUB_MCP_ENABLE_WRITE": "YOUR_GITHUB_MCP_ENABLE_WRITE_HERE",
"GITHUB_TOKEN": "YOUR_GITHUB_TOKEN_HERE"
}
}
}
}
{
"mcpServers": {
"okffs": {
"command": "npx",
"args": [
"-y",
"@neturely/okffs"
]
}
}
}