GitHub Integration Hub
FreeNot checkedProvides GitHub OAuth authentication and API access through REST endpoints, CLI tools, and MCP server capabilities with SQLite-based token storage.
About
Provides GitHub OAuth authentication and API access through REST endpoints, CLI tools, and MCP server capabilities with SQLite-based token storage.
README
Built by Cristian to demonstrate OAuth orchestration, secure token storage, SDK/CLI tooling, and MCP servers in TypeScript.
Why this project exists
I wanted a hands-on showcase proving I can:
- Design an OAuth flow (GitHub) with state handling and token persistence.
- Build a lightweight data layer on SQLite using TypeScript.
- Expose the same business logic via HTTP routes, an SDK, a CLI, and an MCP server for AI agents.
Everything runs on Node.js LTS with Express, better-sqlite3, and TypeScript.
Feature highlights
- (OAuth)
/auth/github/startand/auth/github/callbackwrap the GitHub dance. - (Storage) Automatic SQLite table creation plus refresh scaffolding and repository helpers.
- (Services) Shared orchestration reused by HTTP routes, the CLI, the SDK, and MCP tools.
- (Tooling) Type-safe
IntegrationHubClientSDK together with thegithub-integration-hubCLI. - (Agents) MCP tools
github_start_auth,github_list_repos, andgithub_create_issue.
Getting started
1. Install dependencies
npm install
2. Configure environment
Copy .env.example to .env and set your GitHub OAuth credentials:
PORT=3000
DATABASE_FILE=./github-integration-hub.db
GITHUB_CLIENT_ID=your-client-id
GITHUB_CLIENT_SECRET=your-client-secret
GITHUB_OAUTH_AUTHORIZE_URL=https://github.com/login/oauth/authorize
GITHUB_OAUTH_TOKEN_URL=https://github.com/login/oauth/access_token
GITHUB_API_BASE_URL=https://api.github.com
GITHUB_REDIRECT_URI=http://localhost:3000/auth/github/callback
GITHUB_INTEGRATION_HUB_BASE_URL=http://localhost:3000
Ensure the GitHub OAuth app redirect matches
GITHUB_REDIRECT_URI.
3. Run the backend
Development mode with hot reload:
npm run dev
Production-style build + run:
npm run build
npm start
The server logs: GitHub Integration Hub listening on port <port>.
MCP server (for AI agents)
Compile once, then launch the stdio server:
npm run build
npm run start:mcp
Tools available:
github_start_auth– returns an authorization URL for auserId.github_list_repos– lists repos for the stored connection.github_create_issue– posts an issue using the saved token.
Point your MCP-aware IDE/CLI (for example Codex) to this stdio process and the tools become callable immediately.
HTTP API reference
| Method | Path | Description |
|---|---|---|
| POST | /auth/github/start |
Returns { authUrl } for userId |
| GET | /auth/github/callback |
Exchanges code + state, saves tokens |
| GET | /connections |
Lists connections (?userId= optional) |
| POST | /actions/github/list-repos |
Lists repos via stored token |
| POST | /actions/github/create-issue |
Creates an issue |
| GET | /health |
Service heartbeat |
CLI (github-integration-hub)
npm run build
npx github-integration-hub connections:list
npx github-integration-hub actions:list-repos --user alice
npx github-integration-hub actions:create-issue --user alice --owner my-org --repo api --title "Hello" --body "Proof from Cristian"
Flags:
--base-urloverridesGITHUB_INTEGRATION_HUB_BASE_URL.connections:list --user <userId>filters entries.
SDK example
import { IntegrationHubClient } from 'github-integration-hub/sdk';
const client = new IntegrationHubClient({ baseUrl: process.env.GITHUB_INTEGRATION_HUB_BASE_URL! });
async function showcase() {
const { authUrl } = await client.startGithubAuth('user-123');
console.log('Send someone to authorize:', authUrl);
const repos = await client.listGithubRepos('user-123');
console.log(repos.map((repo) => repo.full_name));
}
Manual OAuth test plan
POST /auth/github/startwith{ "userId": "demo-user" }.- Visit the returned
authUrl, approve the GitHub app. - Callback stores the connection automatically.
- Trigger actions using HTTP, the CLI, SDK, or MCP tools.
Project structure
.
|-- cli/ # CLI entry point
|-- sdk/ # TypeScript SDK
|-- src/
| |-- config/ # Environment helpers
| |-- db/ # SQLite init + repository
| |-- mcp/ # MCP server
| |-- providers/ # GitHub OAuth + API clients
| |-- routes/ # Express routers
| `-- services/ # Token manager + actions
|-- .env.example
|-- package.json
|-- tsconfig.json
`-- README.md
Made by Cristian. Ping me if you want to talk about backend integrations, OAuth design, or MCP tooling.
Installing GitHub Integration Hub
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/crbatista/mcp-cli-github-integrationFAQ
Is GitHub Integration Hub MCP free?
Yes, GitHub Integration Hub MCP is free — one-click install via Unyly at no cost.
Does GitHub Integration Hub need an API key?
No, GitHub Integration Hub runs without API keys or environment variables.
Is GitHub Integration Hub hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install GitHub Integration Hub in Claude Desktop, Claude Code or Cursor?
Open GitHub Integration Hub on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
wenb1n-dev/SmartDB_MCP
A universal database MCP server supporting simultaneous connections to multiple databases. It provides tools for database operations, health analysis, SQL optim
by wenb1n-devPostgres Server
This server enables interaction with PostgreSQL databases through the Model Context Protocol, optimized for the AWS Bedrock AgentCore Runtime. It provides tools
by madhurprashPostgres
Query your database in natural language
by AnthropicPostgreSQL
Read-only database access with schema inspection.
by modelcontextprotocolCompare GitHub Integration Hub with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All data MCPs
