返回 MCP 目录
public公开dns本地运行

ozzynet-mcp-server

一个基于MCP服务器的原型项目,通过外部REST端点进行上游认证,使用GitHub OAuth进行用户身份验证,并集成Quarkus OIDC实现访问控制。

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 应用

  1. 导航到 https://github.com/settings/developers
  2. 从左侧菜单中选择 “OAuth Apps”。
  3. 点击 “新建 OAuth App”。
  4. 为应用命名,并将回调 URL 设置为 http://127.0.0.1:8080/auth
  5. 复制客户端 ID 到 application.properties 文件。
  6. 点击 “生成新客户端秘密”,并将生成的秘密复制到 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,例如列出 quarkusioquarkus 仓库的问题:

  1. Claude 会要求权限以调用 getSessionId 工具。
  2. Claude 接着会调用 listIssues 工具,并提示无法使用该工具,因为需要进行身份验证,同时会提供一个链接,格式为 http://127.0.0.1/auth?sessionId=<UUID>
  3. 点击该链接,将会被重定向到 GitHub,通过之前创建的 OAuthApp 进行授权。
  4. 授权完成后,返回 claude 并重新尝试列出操作即可。
help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端