关于 Simple MCP Server with upstream auth via local rest endpoint
这是一个通过会话认证限制工具访问的 MCP 服务原型。它使用 Quarkus OIDC 和 GitHub OAuth,并按会话保存用户的 GitHub 访问令牌,适用于 MCP 服务原型开发。
主要功能
- 01基于会话控制工具访问
- 02通过 GitHub OAuth 认证
- 03按会话保存访问令牌
适用场景
- 01构建需认证才能使用的 MCP 工具原型
- 02在列出仓库问题前要求 GitHub 授权
MCP 相关
它提供的 MCP 工具是否可用取决于会话认证。用户通过本地 URL 使用 Quarkus OIDC 和 GitHub OAuth 完成认证。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
通过本地 REST 端点进行上游身份验证的简单 MCP 服务
这是一个原型:MCP 服务提供工具,但会根据内部状态限制其访问权限,要求用户通过外部 URL 进行身份验证。
在此示例中,外部 URL 使用 quarkus oidc 封装,要求通过 github 进行身份验证。
随后,github 的访问令牌会存储在 MCP 中,并与用户使用的 sessionid 关联。
注意:你必须编辑 application.properties,添加 GitHub OAuth 应用的 client-id 和 secret。
要求
- JBang
- GitHub OAuth2 应用
- 类似 claude 的 MCP 客户端
创建 GitHub OAuth2 应用
访问 https://github.com/settings/developers
在左侧导航栏中选择 OAuth Apps
点击“New OAuth App”
填写应用名称,并将回调 URL 设为 http://127.0.0.1:8080/auth
将 client ID 复制到 application.properties 点击“generate a new client secret”,并将 secret 复制到 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 列出某个仓库的问题……
例如,列出 quarkusio 的 quarkus 仓库中的问题
Claude 会请求获得调用 getSessionId 工具的许可 Claude 随后会调用 listIssues 工具,并报告无法使用该工具,因为你需要先通过身份验证;它会提供一个类似 http://127.0.0.1/auth?sessionId= 的链接。点击该链接后,你会被重定向到 github,通过你创建的 OAuthApp 进行授权。完成身份验证后,你可以返回 claude 并重试列出问题的操作 =)
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。