Встраиваемый OAuth-провайдер для персональных FastMCP серверов на всех платформах Claude

Что это решает
Разработчик создал персональный сервер памяти с помощью mem0, к которому Claude может читать и записывать, формируя персональное хранилище знаний. Хотя наладить работу в Claude Code было просто, обеспечить функционирование на всех платформах Claude.ai (веб, мобильных и десктопных) вызвало проблемы с аутентификацией.
Основная проблема: пользовательские коннекторы Claude.ai требуют полного соответствия OAuth 2.1. FastMCP предоставляет либо тестовый провайдер в памяти (не подходит для продакшена), либо прокси, требующий настройки внешних провайдеров идентификации, таких как Google, GitHub или Auth0. Для сервера, предназначенного только для личного использования, настройка Auth0 была нежелательной дополнительной нагрузкой.
Решение
Разработчик создал провайдер аутентификации в одном файле на Python, который обрабатывает весь OAuth-поток без внешних сервисов. Ключевые особенности включают:
- Динамическую регистрацию клиентов (DCR)
- PKCE (Proof Key for Code Exchange)
- Сохранение токенов
- Полную реализацию OAuth 2.1
Провайдер ограничивает URI перенаправления только claude.ai и localhost, предотвращая несанкционированный доступ, даже несмотря на то, что регистрация клиентов остаётся открытой (требование Claude.ai, которое потребовало времени для понимания).
Детали реализации и подводные камни
В процессе реализации разработчик столкнулся с несколькими недокументированными проблемами:
- BaseHTTPMiddleware от FastAPI молча ломает потоковые ответы, требуя обходных путей
- Конфликты имён инструментов: если инструменты названы обобщённо (например, "add_memory" или "search"), Claude будет использовать свои встроенные функции памяти вместо вызова инструментов вашего сервера. Решение — добавлять уникальные префиксы к именам инструментов
- Подключения к бессерверным базам данных: Neon Postgres (и, вероятно, другие бессерверные БД) разрывают неактивные соединения. Создание одного соединения при запуске приводит к случайным сбоям инструментов через несколько минут
- Конфигурация DCR: Динамическая регистрация клиентов по умолчанию отключена в FastMCP. Без её включения эндпоинт /register возвращает 404, и Claude.ai молча не подключается без каких-либо сообщений об ошибках
Доступность
Решение доступно на GitHub по адресу github.com/crumrine/fastmcp-personal-auth в виде одного файла Python под лицензией MIT. Это предоставляет практическую альтернативу для разработчиков, которые хотят, чтобы их персональные серверы FastMCP работали на всех платформах Claude без сложностей внешних провайдеров идентификации.
📖 Read the full source: r/ClaudeAI
👀 Смотрите также

Gemini 3.1 Pro в мультиагентных системах: высокое качество проектирования, 20% частота сбоев при вызове инструментов.
Разработчики Bobr, генератора презентаций на основе ИИ с мультиагентной архитектурой, сообщают, что Gemini 3.1 Pro создаёт впечатляющий дизайн, но страдает от ~20% сбоев при вызове инструментов и повреждения текста в рабочих конвейерах.

Выявлена основная причина повреждения заголовков сессий расширения Claude Code для VS Code
Разработчик определил архитектурную причину коррупции заголовков сессий в расширении Claude Code для VS Code, затрагивающую более 20 проблем на GitHub. Проблема возникает из-за того, что расширение читает заголовки через поиск по сырой строке в файлах сессий, что приводит к трём режимам сбоя.

Результаты A/B-тестирования: хуки oh-my-claudecode демонстрируют минимальное влияние на производительность Claude Code.
Разработчик потратил 7% своих еженедельных Max20 токенов на тестирование хуков oh-my-claudecode с Claude Sonnet 4.6, не обнаружив значительного улучшения качества кода или снижения затрат для задачи кодирования в рамках одной сессии.

Signet: Открытый слой памяти для ИИ-агентов программирования достигает 80% F1 на LoCoMo
Signet — это система памяти с открытым исходным кодом для ИИ-агентов программирования, которая достигает 80% F1 на бенчмарке LoCoMo, по сравнению с 41% у стандартного RAG. Она извлекает воспоминания после каждой сессии и внедряет релевантный контекст перед промптами, работая локально с SQLite.