article
README
🚀 简单的 MCP 服务器,通过本地 REST 端点进行上游身份验证
本项目是一个原型,其中 MCP 服务器提供工具,但会根据内部状态限制对这些工具的访问权限,同时要求用户通过外部 URL 进行身份验证。在当前场景下,外部 URL 使用 Quarkus OIDC 包装,需通过 GitHub 完成身份验证。GitHub 返回的访问令牌会存储在 MCP 中,与用户使用的会话 ID 关联。
⚠️ 重要提示
您必须编辑
application.properties文件,添加您的 GitHub OAuth 应用的客户端 ID 和客户端密钥。
🚀 快速开始
✨ 主要特性
- 提供 MCP 服务器工具。
- 根据内部状态限制工具访问权限。
- 通过外部 URL(基于 Quarkus OIDC 包装)实现 GitHub 身份验证。
- 存储 GitHub 访问令牌与用户会话 ID 关联。
📦 安装指南
环境要求
- JBang
- 具有 GitHub 的 OAuth2 应用
- MCP 客户端,如 claude
创建具有 GitHub 的 OAuth2 应用
- 导航到 https://github.com/settings/developers。
- 从左侧菜单中选择 “OAuth Apps”。
- 点击 “新建 OAuth App”。
- 为应用命名,并将回调 URL 设置为
http://127.0.0.1:8080/auth。 - 复制客户端 ID 到
application.properties文件。 - 点击 “生成新客户端秘密”,并将生成的秘密复制到
application.properties文件。
更新 claude 桌面配置 JSON
Windows 系统
{
"mcpServers": {
"ozzynet": {
"command": "cmd",
"args": [
"/c",
"C:\\Users\\YOURUSERNAME\\.jbang\\bin\\jbang.cmd",
"--quiet",
"org.ozzy:stiletto:1.0.0-SNAPSHOT:runner"
]
}
}
}
Mac 系统
{
"mcpServers": {
"ozzynet": {
"command": "jbang",
"args": [
"--quiet",
"org.ozzy:stiletto:1.0.0-SNAPSHOT:runner"
]
}
}
}
💻 使用示例
测试操作
让 claude 列出仓库的 issue,例如列出 quarkusio 的 quarkus 仓库的问题:
- Claude 会要求权限以调用
getSessionId工具。 - Claude 接着会调用
listIssues工具,并提示无法使用该工具,因为需要进行身份验证,同时会提供一个链接,格式为http://127.0.0.1/auth?sessionId=<UUID>。 - 点击该链接,将会被重定向到 GitHub,通过之前创建的 OAuthApp 进行授权。
- 授权完成后,返回 claude 并重新尝试列出操作即可。
微信扫一扫