GitHub的MCP OAuth客户端
OAuth 2.0身份验证和服务器发送事件(SSE)客户端的强大C#实现,用于连接到GitHub的模型上下文协议(MCP)服务器。
特性
- ✅ OAuth 2.0流程:使用GitHub完成授权代码流
- ✅ SSE 连接:与GitHub的MCP服务器实时双向通信
- ✅ 配置管理:中的安全凭据存储
appsettings.json - ✅ 自动浏览器启动:自动打开OAuth授权页面
- ✅ JSON-RPC 2.0:MCP协议消息处理
- ✅ 错误处理:强大的错误处理和资源清理
先决条件
- .NET 9.0 SDK
- GitHub OAuth应用程序(客户端ID和密码)
设置
- 创建GitHub OAuth应用程序:
- 首选https://github.com/settings/applications/new - 集 授权回调URL 致: http://localhost:8080/callback - 复制您的客户端ID和客户端密码
- 配置应用程序:
- 更新 MCPHostApp/appsettings.json 使用您的凭据:
{
"GitHub": {
"ClientId": "YOUR_CLIENT_ID",
"ClientSecret": "YOUR_CLIENT_SECRET",
"McpServerUrl": "https://api.githubcopilot.com/mcp/"
},
"OAuth": {
"CallbackUrl": "http://localhost:8080/callback",
"Scope": "read:user user:email"
}
}用法
- 构建项目:
dotnet build- 运行应用程序:
dotnet run --project MCPHostApp- OAuth流:
- 浏览器打开GitHub授权页面 - 点击“授权”以授予权限 - 应用程序自动捕获授权码 - 交换并显示访问令牌
- MCP连接:
- 应用程序连接到GitHub的MCP SSE服务器 - 接收实时JSON-RPC 2.0消息 - 显示来自服务器的传入ping消息
输出示例
=== MCP OAuth Setup ===
Using Client ID: Ov23liKEq1iuwRuRcLwt
Starting OAuth flow...
Listening for callback on http://localhost:8080/callback
Opening browser to: https://github.com/login/oauth/authorize?...
🎉 OAuth Flow Successful!
===============================
✅ Access Token: gho_xxxxxxxxxxxxxxxxxxxxxxxxxxxx
📅 Token obtained at: 2025-07-05 12:38:19
🔑 Token length: 40 characters
🏷️ Token type: GitHub Personal Access Token
===============================
Connecting to GitHub MCP server...
✅ Successfully connected to GitHub MCP SSE server!
📡 Listening for SSE events...
🎯 Event type: message
📨 Received MCP message: {"jsonrpc":"2.0","id":1,"method":"ping"}项目结构
MCP/
├── MCP.sln
├── MCPHostApp/
│ ├── MCPHostApp.csproj
│ ├── Program.cs # Main application entry point
│ ├── OAuthHelper.cs # OAuth 2.0 flow implementation
│ └── appsettings.json # Configuration file
└── README.md关键组件
- OAuthHelper.cs:使用本地HTTP侦听器处理OAuth 2.0授权代码流
- 程序cs:主应用程序逻辑、SSE连接和MCP消息处理
- 应用程序参数:OAuth凭据的安全配置存储
卷曲测试
您还可以使用curl直接测试GitHub API:
# Get user info
curl -H "Authorization: Bearer YOUR_TOKEN" https://api.github.com/user
# Connect to MCP SSE server
curl -H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: text/event-stream" \
https://api.githubcopilot.com/mcp/sse许可证
这个项目是开源的,可以在MIT许可证下使用。
