mcp-trellis
mcp-trellis
Не зависящие от хоста MCP + OAuth порты — вы выбираете рантайм и IdP, а библиотека отвечает за протокол коннектора.
Веб‑стандартные Request → Response. Один и тот же обработчик работает на Cloudflare Workers, в Next.js App Router, Deno, Bun и Node HTTP через mcp-trellis/node. Ноль зависимостей рантайма.
Почему mcp-trellis
Весь стек коннектора в одном пакете — обработчик MCP и авторизационный сервер OAuth 2.1 — без базы данных и без регистрации у вендора. Вы владеете логином, выпуском токенов и хранилищем; библиотека владеет протоколом.
mcp-trellis | Официальный MCP SDK |
|
| 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":""}}Клименты
Климент | Регистрация | Аутентификация на токен-эндпоинте | Примечания |
| Динамическая (DCR), публичный + PKCE |
| Колбэки Claude Custom Connectors в allowlist |
| Предзарегистрированный, конфиденциальный |
| Применкие |
| OAuth 2.1 в соответствии со спецификацией MCP auth, публичный + PKCE |
| ChatGPT / Codex используют один контракт |
Предзарегистрированные клиенты, принудительный DCR и подключение clientStore: docs/guide.md#clients.
Архитектура
createMcpApp связывает MCP и OAuth и маршрутизирует между ними:
Рецепты хостов, порты, инструменты и мультитенантность: docs/guide.md.
Документация
Doc | Contents |
Архитектура, клиенты, рецепты, порты, инструменты, мультитенантность | |
Роутери, методы, коды статусов, параметры, экспорт | |
Обещания протокола, модель угроз, вне рамок | |
Что дальше |
Примеры: examples/ — HTTP-сервис, Worker, мультитенант, хранилища, аудит.
Участие
PR приветствуются — см. CONTRIBUTING.md.
npm test
npm run build
npm run typecheckЛицензия
MIT
This server cannot be installed
Maintenance
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables 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.
- FlicenseNot gradedqualityCmaintenanceEnables 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.
- AlicenseNot gradedqualityDmaintenanceA 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.16138ISC
- AlicenseNot gradedqualityDmaintenanceEnables developers to build OAuth-protected MCP servers on Cloudflare Workers with pluggable authentication adapters, allowing user-specific access control and secure token exchange.1326MIT
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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