Token导航 LogoToken导航TokenDH.com
Nextmcp Client Auth logo
安全风控未说明官方级别未说明来源级核验

Nextmcp Client Auth

MCP Server

一个为MCP主机提供的OAuth客户端认证库,简化与NextMCP服务器的认证流程,无需编写任何OAuth代码。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
TypeScriptClaude安全Claude DesktopClaudeCursorWindsurf

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

KeshavVarad

提供方

KeshavVarad

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

nextmcp客户端身份验证

MCP主机的OAuth客户端库 -“MCP生态系统的Passport.js”

一个主机端助手库,用于与NextMCP服务器进行OAuth身份验证 琐碎的这是一个缺失的部分,它允许Claude Desktop、Cursor、Windsurf等主机集成身份验证,而无需编写一行OAuth代码。

](https://www.npmjs.com/package/nextmcp-client-auth) ![License: MIT](https://opensource.org/licenses/MIT)

为什么这个图书馆存在

MCP主机不想学习您的身份验证系统。 他们想要一个可以导入的“正常工作”的小助手。

这个库只提供了一个函数调用来处理:

  • ✓ 正在读取服务器身份验证元数据
  • ✓ PKCE OAuth流
  • ✓ 重定向/回调处理
  • ✓ 令牌存储
  • ✓ 自动令牌刷新
  • ✓ 身份验证头注入

把它想象成: “一个函数调用=经过身份验证的MCP连接”

安装

npm install nextmcp-client-auth

快速开始

Node.js(带自动环回服务器)

import { connectWithNextMCPAuth } from "nextmcp-client-auth";

const connection = await connectWithNextMCPAuth({
  serverUrl: "http://localhost:8000",
  onAuthStart(url) {
    console.log("Please visit:", url);
    // Opens browser automatically in most terminals
  },
});

// Use the authenticated connection
const response = await connection.transport.send({
  method: "tools/list",
});

console.log("Tools:", response.result);

浏览器

import { connectWithNextMCPAuth } from "nextmcp-client-auth";

const connection = await connectWithNextMCPAuth({
  serverUrl: "https://api.example.com",
  onAuthStart(authUrl) {
    // Redirect user to auth URL
    window.location.href = authUrl;
  },
});

// Make authenticated requests
const response = await connection.transport.send({
  method: "tools/list",
});

就这样 无需OAuth代码。

特性

🔐 完整的OAuth 2.0支持

  • PKCE流程 -对公共客户端(浏览器、移动设备、台式机)安全
  • GitHub和谷歌 -与标准OAuth提供程序配合使用
  • 自动发现 -从服务器获取身份验证元数据
  • 状态验证 -内置CSRF保护

💾 智能令牌管理

  • 自动存储 -本地存储(浏览器)或 ~/.nextmcp/ (Node.js)
  • 自动刷新 -令牌在到期前透明刷新
  • 多服务器 -不同服务器的不同令牌

🚀 开发者体验

  • TypeScript -全型安全
  • 交叉平台的 -适用于浏览器、Node.js、Electron
  • 调试模式 -设置 NEXTMCP_AUTH_DEBUG=1 查看详细日志
  • 零依赖 -使用内置的Web Crypto API

🎯 生产就绪

  • 错误处理 -清除所有故障模式的错误类型
  • 超时保护 -身份验证流的可配置超时
  • 线程安全 -处理并发令牌刷新
  • 内存安全 -日志中没有令牌泄漏

API 参考

connectWithNextMCPAuth(config)

建立经过身份验证的MCP连接的主要功能。

参数:

interface ConnectConfig {
  serverUrl: string;                              // MCP server URL
  onAuthStart?: (authUrl: string) => void;        // Called when auth flow starts
  redirectUri?: string;                           // Custom redirect (optional)
  tokenStore?: TokenStore;                        // Custom token storage (optional)
  debug?: boolean;                                // Enable debug logs
  loopbackPort?: number;                          // Port for callback server (Node.js)
}

退货:

interface AuthenticatedConnection {
  transport: MCPTransport;       // Use this to send MCP requests
  tokens: OAuthTokens;           // Current access/refresh tokens
  metadata: AuthMetadata;        // Server's auth requirements
  disconnect(): Promise;   // Clean up and remove tokens
}

例子:

const connection = await connectWithNextMCPAuth({
  serverUrl: "http://localhost:8000",
  debug: true,
  onAuthStart(url) {
    console.log("Auth URL:", url);
  },
});

// Make authenticated requests
await connection.transport.send({ method: "tools/list" });

// Disconnect when done
await connection.disconnect();

令牌存储

默认情况下,令牌存储在:

  • 浏览器: localStorage
  • Node.js: ~/.nextmcp/sessions/{host}.json

您可以提供自定义商店:

import { TokenStore, OAuthTokens } from "nextmcp-client-auth";

class CustomTokenStore implements TokenStore {
  async saveTokens(serverUrl: string, tokens: OAuthTokens): Promise {
    // Your storage logic
  }

  async getTokens(serverUrl: string): Promise {
    // Your retrieval logic
  }

  async deleteTokens(serverUrl: string): Promise {
    // Your deletion logic
  }

  async clear(): Promise {
    // Clear all tokens
  }
}

const connection = await connectWithNextMCPAuth({
  serverUrl: "http://localhost:8000",
  tokenStore: new CustomTokenStore(),
});

错误处理

库抛出特定的错误类型:

import {
  OAuthError,
  PKCEError,
  TokenRefreshError,
  CallbackTimeoutError,
  AuthMetadataError,
} from "nextmcp-client-auth";

try {
  const connection = await connectWithNextMCPAuth({
    serverUrl: "http://localhost:8000",
  });
} catch (error) {
  if (error instanceof OAuthError) {
    console.error("OAuth failed:", error.message, error.code);
  } else if (error instanceof CallbackTimeoutError) {
    console.error("User didn't complete auth in time");
  } else if (error instanceof AuthMetadataError) {
    console.error("Server doesn't support OAuth");
  }
}

高级用法

自定义重定向URI

const connection = await connectWithNextMCPAuth({
  serverUrl: "http://localhost:8000",
  redirectUri: "http://localhost:3000/oauth/callback",
  onAuthStart(authUrl) {
    // Your app should handle the callback at /oauth/callback
    window.location.href = authUrl;
  },
});

手动令牌刷新

import { refreshAccessToken } from "nextmcp-client-auth";

const newTokens = await refreshAccessToken({
  provider: metadata.providers[0],
  refreshToken: currentTokens.refresh_token,
});

PKCE挑战生成

import { generateVerifier, generatePKCE } from "nextmcp-client-auth";

const verifier = generateVerifier();
const pkce = await generatePKCE(verifier);

console.log("Challenge:", pkce.challenge);
console.log("Verifier:", pkce.verifier);

运作原理

┌─────────────┐
│   Host App  │
│ (Cursor,etc)│
└──────┬──────┘
       │
       │ 1. connectWithNextMCPAuth()
       ▼
┌─────────────────────────────────────────────────┐
│         nextmcp-client-auth Library             │
│                                                 │
│  2. Fetch /.well-known/mcp-auth                │
│  3. Generate PKCE challenge                     │
│  4. Open auth URL                               │
│  5. Listen for callback                         │
│  6. Exchange code → tokens                      │
│  7. Store tokens                                │
│  8. Return authenticated transport              │
└──────┬──────────────────────────────────────────┘
       │
       │ 9. transport.send() + auto refresh
       ▼
┌─────────────┐
│ NextMCP     │
│ Server      │
└─────────────┘

示例

请参阅 examples/ 完整示例目录:

需求

  • Node.js 18+或具有Web Crypto API的现代浏览器
  • 配置了OAuth身份验证的NextMCP服务器

发展

# Install dependencies
npm install

# Build
npm run build

# Run tests
npm test

# Run examples
cd examples/node
npm install
npm run simple

常见问题解答

Q: 我需要了解OAuth吗?

A. 不,这就是这个图书馆的意义所在。只需拨打电话 connectWithNextMCPAuth().

Q: 这适用于所有OAuth提供商吗?

A. 是的,NextMCP服务器支持的任何OAuth 2.0提供程序(GitHub、Google等)

Q: 安全怎么办?

A. 该库使用PKCE(代码交换证明密钥),这是公共客户端的推荐流程。令牌被安全地存储(建议在浏览器生产环境中使用httpOnly Cookie)。

Q: 我可以在Electron中使用这个吗?

A. 对!它在主进程和渲染进程中都有效。

Q: 我该如何处理注销?

A. 呼叫 await connection.disconnect() 删除令牌并关闭连接。

Q: 这支持DPoP吗?

A. 还没有,但它在路线图上。

贡献

欢迎投稿!请看 贡献.md.

许可证

麻省理工学院© NextMCP 贡献者

相关项目

______________________________________________________________________

由以下材料制成❤️ 对于MCP生态系统

目录标签

目录标签

TypeScriptClaude安全OAuth认证本地部署客户端库MCP生态系统PKCE流程自动令牌管理

支持客户端

Claude DesktopClaudeCursorWindsurf

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

oauth

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明oauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP