Skip to main content
Glama
amir1824

mcp-trellis

mcp-trellis

CI License: MIT

Не зависящие от хоста MCP + OAuth порты — вы выбираете рантайм и IdP, а библиотека отвечает за протокол коннектора.

Веб‑стандартные RequestResponse. Один и тот же обработчик работает на Cloudflare Workers, в Next.js App Router, Deno, Bun и Node HTTP через mcp-trellis/node. Ноль зависимостей рантайма.

Почему mcp-trellis

Весь стек коннектора в одном пакете — обработчик MCP и авторизационный сервер OAuth 2.1 — без базы данных и без регистрации у вендора. Вы владеете логином, выпуском токенов и хранилищем; библиотека владеет протоколом.

mcp-trellis

Официальный MCP SDK

workers-oauth-provider

@mcpauth/auth

Auth0 / Clerk / Authlete

Обработчик MCP

Авторизационный сервер OAuth 2.1

✅ используйте свой

Рантайм

любой веб‑стандарный

любой веб-стандартный

только Workers

Node

База данных

нет

KV (опционально)

требуется

Зависимости рантайма

ноль

несколько

несколько

несколько

Self‑hosted

❌ SaaS

Именованные профили коннекторов (Claude / Gemini / Codex) применяются принудительно

Предпочитайте официальный SDK, если у вас уже есть отдельный AS. Предпочитайте workers-oauth-provider, если вам нужна реализация Cloudflare только для Workers. Предпочитайте управляемый IdP, если вы скорее заплатите, чем будете обслуживать его сами.

Именованные альтернативы в том же пространстве задач:

  • @mcpauth/auth / getmcpauth / mcp-auth — OAuth для MCP, обычно с БД или иными допущениями о рантайме/стеке. mcp-trellis — вариант с нулевой зависимостью, который поставляет обработчик MCP и сервер авторизации OAuth 2.1 в одном пакете.

  • fastmcp-oauth — хелперы OAuth для FastMCP. mcp-trellis не зависит от хоста (Request/Response) и не привязан к конкретному MCP-фреймворку.

Related MCP server: Remote MCP Server on Cloudflare

Требования

  • Node ≥ 20 для Node-хостов (глобальный WebCrypto в ESM)

  • Или любой рантайм с WebCrypto + fetch (Workers, Deno, Bun)

Установка

npm install mcp-trellis

Быстрый старт

Один вызов монтирует эндпоинт MCP, авторизационный сервер OAuth и оба discovery-документа:

import { createMcpApp } from "mcp-trellis";

const app = createMcpApp({
  serverInfo: { name: "demo", version: "1.0.0" },
  clients: ["claude"],
  tools: [
    {
      name: "echo",
      description: "Echo text back",
      inputSchema: {
        type: "object",
        properties: { text: { type: "string" } },
        required: ["text"],
      },
      scope: "mcp",
      handler: (_ctx, args) => String(args.text ?? ""),
    },
  ],
  auth: {
    codeSecret: process.env.OAUTH_CODE_SECRET!,
    resolveUser: async (req) => getSession(req),
    loginUrl: (_req, next) => `/login?next=${encodeURIComponent(next)}`,
    mintAccessToken: async ({ userId, scope, resource }) => ({
      // Embed `resource` as the token audience (RFC 8707).
      accessToken: await issueUserToken(userId, { aud: resource, scope }),
      expiresIn: 3600,
    }),
    verifyToken: async (token) => {
      const claims = await readUserToken(token);
      if (!claims) return null;
      return {
        userId: claims.sub,
        scopes: claims.scope.split(" "),
        audience: claims.aud,
      };
    },
  },
});

export default { fetch: (req: Request) => app.fetch(req) };

Вы возвращаете audience токена; библиотека отклоняет токены, выпущенные для другого ресурса, ещё до запуска любого инструмента. Подробнее: docs/security.md.

Реальный путь /authorize включает шаг подтверждения: подтвержденная сессия не перенаправляет сразу с кодом — сначала отображается экран согласия (встроенный или собственный через consent). Интеграторы, проходящие сценарий вручную, должны ожидать HTML-страницу, а не немедленный редирект — см. Consent.

Салмон с curl через initialize:

curl -s http://127.0.0.1:8787/mcp \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18"}}'
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-06-18","capabilities":{"tools":{}},"serverInfo":{"name":"demo","version":"1.0.0"},"instructions":""}}

Клименты

Климент

Регистрация

Аутентификация на токен-эндпоинте

Примечания

claude

Динамическая (DCR), публичный + PKCE

none

Колбэки Claude Custom Connectors в allowlist

gemini

Предзарегистрированный, конфиденциальный

client_secret_basic, client_secret_post

Применкие auth.clientStore

codex

OAuth 2.1 в соответствии со спецификацией MCP auth, публичный + PKCE

none

ChatGPT / Codex используют один контракт

Предзарегистрированные клиенты, принудительный DCR и подключение clientStore: docs/guide.md#clients.

Архитектура

createMcpApp связывает MCP и OAuth и маршрутизирует между ними:

Архитектура: коннектор → периметр → OAuth или MCP → ваши порты

Последовательность: OAuth authorize и token, затем вызов MCP-инструмента

Рецепты хостов, порты, инструменты и мультитенантность: docs/guide.md.

Документация

Doc

Contents

docs/guide.md

Архитектура, клиенты, рецепты, порты, инструменты, мультитенантность

docs/reference.md

Роутери, методы, коды статусов, параметры, экспорт

docs/security.md

Обещания протокола, модель угроз, вне рамок

docs/ROADMAP.md

Что дальше

Примеры: examples/ — HTTP-сервис, Worker, мультитенант, хранилища, аудит.

Участие

PR приветствуются — см. CONTRIBUTING.md.

npm test
npm run build
npm run typecheck

Лицензия

MIT

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
2dRelease cycle
4Releases (12mo)
Commit activity

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables deploying a Model Context Protocol (MCP) server on Cloudflare Workers with built-in OAuth authentication. It allows local clients like Claude Desktop to securely connect to and use remote tools through an HTTP/SSE transport.
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables deploying and running a Model Context Protocol (MCP) server on Cloudflare Workers with built-in OAuth authentication. It allows users to host and access tools remotely via Server-Sent Events (SSE) transport from clients like Claude Desktop.
  • A
    license
    Not graded
    quality
    D
    maintenance
    A dual-runtime template for building Model Context Protocol servers compatible with Node.js and Cloudflare Workers. It features integrated OAuth, encrypted token storage, and multi-tenant session management to simplify the creation of secure tool, resource, and prompt interfaces.
    16
    138
    ISC
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables developers to build OAuth-protected MCP servers on Cloudflare Workers with pluggable authentication adapters, allowing user-specific access control and secure token exchange.
    13
    26
    MIT

View all related MCP servers

Related MCP Connectors

  • Self-hosted federated MCP gateway: one OAuth 2.1 MCP server in front of N apps, user-level scopes.

  • Artifact store for AI agents. Hosted OAuth at mcp.artifacta.io/mcp; local stdio via npm/PyPI.

  • Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/amir1824/mcp-trellis'

If you have feedback or need assistance with the MCP directory API, please join our Discord server