GitHub集成中心

GitHub集成中心是一个基于Node.js和TypeScript的工具,提供OAuth流程管理、安全令牌存储、多接口(HTTP、CLI、SDK、MCP)访问GitHub功能的服务。

  • by CrBatista
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 crbatista/mcp-cli-github-integration

使用说明

# GitHub集成中心

由Cristian构建,用于演示OAuth编排、安全令牌存储、SDK/CLI工具和TypeScript中的MCP服务器。

为什么这个项目存在

我想要一个实践展示,证明我可以:

  • 设计一个具有状态处理和令牌持久性的OAuth流(GitHub)。
  • 使用TypeScript在SQLite上构建一个轻量级数据层。
  • 通过HTTP路由、SDK、CLI和用于AI代理的MCP服务器公开相同的业务逻辑。

所有内容都在Node.js LTS上运行,包括Express、better squelite3和TypeScript。

功能亮点

  • (OAuth) /auth/github/start 和 /auth/github/callback 结束GitHub之舞。
  • (存储)自动创建SQLite表以及刷新脚手架和存储库助手。
  • (服务)HTTP路由、CLI、SDK和MCP工具重用的共享编排。
  • (工具)类型安全 IntegrationHubClient SDK与 github-integration-hub CLI。
  • (代理)MCP工具 github_start_auth, github_list_repos,以及 github_create_issue.

入门

1.安装依赖项

npm install

2.配置环境

复制 .env.example 到 .env 并设置您的GitHub OAuth凭据:

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

确保GitHub OAuth应用程序重定向匹配 GITHUB_REDIRECT_URI.

3.运行后端

热重载开发模式:

npm run dev

生产风格构建+运行:

npm run build
npm start

服务器记录: GitHub Integration Hub listening on port <port>.

MCP服务器(用于AI代理)

编译一次,然后启动stdio服务器:

npm run build
npm run start:mcp

可用工具:

  • github_start_auth –返回一个授权URL userId.
  • github_list_repos –列出存储连接的存储库。
  • github_create_issue –使用保存的令牌发布问题。

将您的MCP感知IDE/CLI(例如Codex)指向此stdio进程,工具将立即可调用。

HTTP API参考

方法 路径 描述
职位 /auth/github/start 退货 { authUrl } 为了 userId
得到 /auth/github/callback 交易所 code + state,保存令牌
得到 /connections 列出连接(?userId= 可选)
职位 /actions/github/list-repos 通过存储的令牌列出存储库
职位 /actions/github/create-issue 产生问题
得到 /health 服务心跳

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"

旗帜:

  • --base-url 覆盖 GITHUB_INTEGRATION_HUB_BASE_URL.
  • connections:list --user <userId> 过滤条目。

SDK示例

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));
}

OAuth手动测试计划

  1. POST /auth/github/start 随着 { "userId": "demo-user" }.
  2. 访问返回 authUrl,批准GitHub应用程序。
  3. 回调会自动存储连接。
  4. 使用HTTP、CLI、SDK或MCP工具触发操作。

项目结构

.
|-- 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

由Cristian制造。 如果你想谈谈后端集成、OAuth设计或MCP工具,请给我打电话。