MCP协议服务器

基于Nitro构建的轻量级MCP协议服务器,支持可插拔身份验证和工具集成。

  • by peterbud
  • TypeScript
  • 本地部署
  • 6 星标
  • 更新于
在 GitHub 查看 peterbud/nitro-mcp-server

使用说明

Nitro MCP服务器

这个项目是一个MCP(模型上下文协议)服务器使用 可流式传输HTTP 交通由 硝基它旨在演示如何实现MCP服务器,包括使用可插拔提供程序进行身份验证。

特性

  • 重量轻、速度快,基于 硝基
  • 工具位于 /tools
  • 输入和输出模式验证 萨德
  • 示例工具包括:
    • echo:回显输入,演示基本工具功能
    • getPostsByUser:使用API获取用户的帖子,演示输出模式验证和 structuredContent
  • 示例资源包括:
    • posts:从API获取帖子,演示资源处理
    • users:从API获取用户,演示资源处理
  • 易于与MCP客户端集成
  • 支持可插拔提供程序的身份验证(Auth0、Microsoft Entra ID)

入门指南

先决条件

安装

  1. 克隆存储库:
    git clone https://github.com/yourusername/nitro-mcp-server.git
    cd nitro-mcp-server
    
  2. 安装依赖项:
    pnpm install
    

运行服务器

使用以下命令启动服务器:

pnpm dev

运行MCP检查器:

pnpm inspect
  1. 打开浏览器并导航到检查器URL,如下所示 http://localhost:6274/?MCP_PROXY_AUTH_TOKEN=<token> 访问MCP检查员。
  2. 在URL字段输入服务器的地址和端口,如 http://localhost:3000/mcp.
  3. 单击“连接”以建立与MCP服务器的连接。
  4. 您可以列出工具并调用它们。

构建服务器

要构建用于生产的服务器,请运行:

pnpm build

这将在中创建一个生产就绪的构建 .output 目录。

配置

配置选项可以在 .env 文件。选项包括:

  • NITRO_MCP_SERVER_HOST:服务器侦听的主机(默认值: localhost)
  • NITRO_MCP_SERVER_PORT:服务器侦听的端口(默认值:3000)

认证

通过可插拔提供程序支持身份验证。目前,Auth0和Microsoft Entra ID可用。您可以通过在服务器设置或本地设置中配置提供程序来启用身份验证 .env 文件正在开发中。

由于许多身份提供者不支持动态客户端注册(DCR),因此此应用程序使用oAuth代理解决方案按照MCP规范的要求提供DCR,但将所有身份验证责任委托给身份提供者。请注意,为防止滥用,应适用适当的费率限制 register 终点。

支持的提供商

  • 身份验证0:使用您的Auth0域、客户端ID和客户端密钥进行配置。
  • Entra(微软Entra ID):使用租户ID、客户端ID和客户端密钥进行配置。

配置示例:

mcpServer: {
  auth: {
    providers: {
      auth0: {
        type: 'auth0',
        domain: '<your-auth0-domain>',
        clientId: '<your-client-id>',
        clientSecret: '<your-client-secret>',
        scope: 'openid profile email',
      },
      entra: {
        type: 'entra',
        tenantId: '<your-tenant-id>',
        clientId: '<your-client-id>',
        clientSecret: '<your-client-secret>',
        scope: 'openid profile email',
      }
    }
  }
}

这些设置可以在.env文件中配置,也可以直接在开发环境中配置,还可以在生产环境中的服务器配置中配置。请参阅 env.example 模板文件。

请参阅中的提供程序文件 lib/auth/ 了解更多详细信息和高级选项。

全部

  • 添加过期授权码的清理任务

贡献

欢迎提交请求和问题!请打开一个问题来讨论您的想法或报告错误。

许可证

该项目根据MIT许可证获得许可。请参阅 许可证 文件以获取详细信息。