CodeQR远程MCP服务器
远程MCP服务器 二维码 使用OAuth 2.0身份验证。兼容ChatGPT、OpenAI代理SDK、Grok(xAI)和任何支持流式HTTP传输的MCP客户端。
运作原理
┌──────────┐ ┌─────────────────────┐ ┌──────────┐
│ ChatGPT │ │ CodeQR MCP Remote │ │ CodeQR │
│ or any │─────▶│ │─────▶│ API │
│ MCP │◀─────│ OAuth 2.0 + MCP │◀─────│ │
│ client │ │ Streamable HTTP │ │ │
└──────────┘ └─────────────────────┘ └──────────┘- 客户端通过以下方式发现身份验证端点
/.well-known/oauth-protected-resource - 客户端通过以下方式动态注册
POST /oauth/register - 用户通过输入CodeQR API密钥进行授权
- 客户端交换访问令牌的授权码(PKCE)
- 客户端使用Bearer令牌向发送MCP工具调用
POST /mcp
快速开始
# Install dependencies
npm install
# Set environment variables
cp .env.example .env
# Edit .env with your SERVER_URL
# Development
npm run dev
# Production
npm run build
npm start部署
Vercel(推荐)
该项目已配置为Vercel无服务器功能:
# Install Vercel CLI
npm i -g vercel
# Deploy
vercel
# Set environment variables in Vercel dashboard:
# - SERVER_URL — Your public server URL (e.g., https://mcp.codeqr.io)
# - UPSTASH_REDIS_REST_URL — From your Upstash Redis database (REST API)
# - UPSTASH_REDIS_REST_TOKEN — From your Upstash Redis database
# - STAINLESS_API_KEY — Optional Stainless API key
# - LOG_LEVEL — Log level (default: info)该应用程序将在 https://your-project.vercel.app所有路由均由位于的无服务器功能处理 api/server.ts.
OAuth存储: 集 升级Redis (UPSTASH_REDIS_REST_URL 和 UPSTASH_REDIS_REST_TOKEN)因此,授权码、访问令牌和注册客户端在无服务器调用中持续存在。如果省略这些变量,服务器将回退到内存中的存储(仅适用于本地开发)。
码头工人
docker build -t codeqr-mcp-remote .
docker run -p 3000:3000 -e SERVER_URL=https://mcp.codeqr.io codeqr-mcp-remote铁路/渲染/Fly.io
设置环境变量:
SERVER_URL--您的公共服务器URL(例如。,https://mcp.codeqr.io)UPSTASH_REDIS_REST_URL/UPSTASH_REDIS_REST_TOKEN--建议用于多实例或重启PORT--端口(通常由平台自动设置)
连接到ChatGPT
- 将此服务器部署到公共URL
- 在ChatGPT中,转到 设置>高级>开发人员模式
- 去 连接器 标签
- 点击 添加连接器
- 输入您的服务器URL(例如。,
https://mcp.codeqr.io/mcp) - ChatGPT将自动发现OAuth端点并提示您授权
连接到OpenAI代理SDK
from openai import OpenAI
client = OpenAI()
response = client.responses.create(
model="gpt-4o",
tools=[{
"type": "mcp",
"server_label": "codeqr",
"server_url": "https://mcp.codeqr.io/mcp",
"require_approval": "never",
}],
input="Create a short link for https://example.com",
)可用工具
| 工具 | 说明 |
|---|---|
create_link | 创建缩短的链接 |
list_links | 列出所有短链接 |
get_link_info | 获取链接详细信息 |
update_link | 更新链接 |
delete_link | 删除链接 |
create_qrcode | 生成二维码 |
list_qrcodes | 列出所有二维码 |
get_analytics | 查询点击分析 |
list_domains | 列出自定义域 |
list_tags | 列表标签 |
create_tag | 创建标签 |
track_lead | 追踪潜在客户转化 |
track_sale | 跟踪销售转化 |
API终点
| 方法 | 路径 | 身份验证 | 描述 |
|---|---|---|---|
| 得到 | /health | 否 | 健康检查 |
| 得到 | /.well-known/oauth-protected-resource | 否 | OAuth资源元数据(RFC 9728) |
| 得到 | /.well-known/oauth-authorization-server | 否 | OAuth服务器元数据(RFC 8414) |
| 职位 | /oauth/register | 否 | 动态客户端注册(RFC 7591) |
| 得到 | /oauth/authorize | 否 | 授权页面 |
| 职位 | /oauth/authorize | 否 | 授权书提交 |
| 职位 | /oauth/token | 否 | 代币兑换 |
| 职位 | /mcp | 承载 | MCP可流式HTTP端点 |
建筑
src/
├── index.ts # Express app & server startup
├── config.ts # Environment configuration
├── oauth/
│ ├── store.ts # OAuth state: Upstash Redis or in-memory fallback
│ └── pkce.ts # PKCE S256 verification
├── middleware/
│ └── auth.ts # Bearer token validation middleware
└── routes/
├── well-known.ts # OAuth discovery metadata endpoints
├── oauth.ts # Authorization & token endpoints
└── mcp.ts # MCP tool definitions & handlers生产注意事项
- OAuth持久性: 配置 升级Redis (参见
.env.example)用于无服务器和多实例部署。如果没有它,则使用内存中的存储(仅限单个进程)。 - 添加速率限制 到OAuth和MCP端点
- 添加HTTPS (通常由您的反向代理/平台处理)
- 添加监控 (the
/health端点已准备好进行探测) - 考虑代币轮换 用于长期会话
许可证
麻省理工学院-- 二维码
