HTTP和OAuth保护的MCP服务器

一个演示MCP服务器,提供姜饼主题工具、提示和资源,支持HTTP和OAuth保护。

  • by Feridum
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 Feridum/gigerbread-mcp-server

使用说明

姜饼mcp服务器

演示MCP服务器(HTTP+OAuth保护),它公开了一些姜饼主题的工具、提示和资源。

需求

  • Node.js(ESM)+npm

安装

npm install

所需的环境变量

此服务器使用Auth0风格的JWT验证(远程JWKS)和演示OAuth外观。

创建 .env repo根目录中的文件:

AUTH0_DOMAIN="https://YOUR_AUTH0_TENANT"
CLIENT_ID="your_client_id"
CLIENT_SECRET="your_client_secret"
变量 必需 示例 用于
AUTH0_DOMAIN 是的 https://example.eu.auth0.com JWKS+发行商+代币交易所
CLIENT_ID 是的 abc123 /register + /token (基本身份验证到Auth0)
CLIENT_SECRET 是的 xyz789 /token (基本身份验证到Auth0)

运行(HTTP/流式传输)

在端口上启动HTTP服务器 3000 并在以下位置为MCP端点提供服务 /mcp.

npm run dev

终点:

  • GET /mcp (以及 POST /mcp)–MCP可流式HTTP传输
  • GET /logo 和 GET /logo.png –服务器图标
  • GET /.well-known/oauth-protected-resource/mcp –受保护的资源元数据
  • GET /.well-known/oauth-authorization-server –OAuth服务器元数据代理
  • POST /register –演示动态客户端注册响应
  • POST /token –令牌交换代理 AUTH0_DOMAIN
  • GET /confirm-sending?elicitation=... 和 POST /do-confirm-sending –URL启发使用的确认UI

注: /mcp 受JWT中间件保护(预期 Authorization: Bearer <token>).

MCP检查员

npm run inspector

暴露的MCP表面

工具

工具名称 标题 输入 输出 注释 使用的MCP功能
bakeCookies 烘焙饼干 quantity (1..100) success, message 启用 decorateCookies 烘焙并记录调试消息后 记录;动态工具启用
decorateCookies 装饰饼干 quantity (1..100), color (red|blue|green|yellow) success, message 最初被禁用。如果 color=red,进行形式启发以选择替代方案;还更新其架构以删除 red 激励(形式);工具模式更新
createWishes 创造圣诞愿望 forWho (字符串) message 通过以下方式使用客户端采样 createMessage 生成愿望 采样
metadata Metada工具 type (addresses|other) metadata (object) 返回演示地址ID;标记的 readOnlyHint 工具注释
sendTo 将Cookie发送到地址 to (地址ID), sendDate (预计 DDMMYYYY) success, result 需要通过URL引导和本地确认页面进行确认(/confirm-sending) 引用(url);登录中;外部确认回路

提示

提示名称 标题 参数 返回内容
christmasWishes 圣诞愿望 无 一条要求“创建圣诞愿望”的单用户消息
christmasWishesFor 圣诞祝福 recipientName, senderName 一条单用户消息,要求指定发件人为指定收件人许愿

资源

资源名称 URI 标题 MIME 内容
cookie-recipe gingerbread://cookie-recipe 饼干食谱 text/plain 姜饼饼干食谱(配料+说明)

使用的MCP协议功能

  • 工具:注册工具+动态启用/禁用和模式更新
  • 提示:已注册的提示模板
  • 资源:已注册的静态文本资源
  • 日志记录:服务器发出关键步骤的日志消息
  • 引出: elicitInput 在 form 模式和 url 模式
  • 采样:服务器调用 createMessage 要求客户/模型生成文本