lunchmoney-readonly-mcp
Read-only Lunch Money MCP для ChatGPT
Однопользовательский удаленный MCP-сервер для Lunch Money, предназначенный для ChatGPT Business и развернутый на Cloudflare Workers. Он использует Google OAuth только для идентификации разрешенного пользователя; токен API Lunch Money хранится как зашифрованный секрет Cloudflare и никогда не возвращается в ChatGPT или инструмент MCP.
Этот проект изначально был основан на проекте bm1549/lunchmoney-mcp-cloudflare и адаптирован в шаблон read-only Lunch Money MCP для Cloudflare Workers и ChatGPT. Включенная вышестоящая реализация сохранена в vendor-lunchmoney-mcp, включая ее оригинальную лицензию MIT и указание авторства. Спасибо Брайану Марксу за оригинальную работу.
Этот репозиторий является шаблоном. Он не содержит URL действующего развертывания, токена API, секрета Google OAuth, адреса электронной почты или идентификатора ресурса Cloudflare.
Что делает его только для чтения
Сервер обеспечивает доступ только для чтения двумя независимыми уровнями:
createReadonlyServer()предоставляет положительный список разрешенных 25 инструментов извлечения. Инструменты создания, обновления, удаления, загрузки, синхронизации, обновления, разделения, группировки и изменения бюджета не зарегистрированы.runWithReadonlyConfig()отклоняет любой запрос, не являющийсяGET, к API Lunch Money до выполнения сетевого запроса.
Все предоставленные инструменты объявляют readOnlyHint: true, destructiveHint: false и openWorldHint: false.
Требования
Токен API Lunch Money
Учетная запись Cloudflare с доступными Workers и KV
Веб-клиент Google Cloud OAuth 2.0
Рабочее пространство ChatGPT Business, в котором вы являетесь администратором или владельцем
Разверните свою копию
Клонируйте этот репозиторий, затем установите и проверьте зависимости:
npm install npm run typecheck npm run lint npm run test:readonlyВ
wrangler.jsoncвыберите уникальноеnameWorker и создайте пространство имен OAuth KV:npx wrangler kv namespace create OAUTH_KVСкопируйте возвращенный идентификатор пространства имен в
REPLACE_WITH_OAUTH_KV_NAMESPACE_IDвwrangler.jsonc.Разверните один раз, чтобы получить URL вашего Worker:
npx wrangler deployСоздайте веб-приложение Google OAuth 2.0. Добавьте этот URI перенаправления, заменив хост на URL вашего Worker:
https://YOUR-WORKER.YOUR-SUBDOMAIN.workers.dev/authorize/callbackУстановите производственные секреты в интерактивном режиме. Никогда не помещайте их значения в Git:
npx wrangler secret put GOOGLE_CLIENT_ID npx wrangler secret put GOOGLE_CLIENT_SECRET npx wrangler secret put ALLOWED_EMAILS npx wrangler secret put STATE_SECRET npx wrangler secret put LUNCHMONEY_API_TOKENALLOWED_EMAILS— это разделенный запятыми список учетных записей Google, которым разрешено подключаться. Сервер закрывается при ошибке, если этот список пуст.Разверните снова. Ваша конечная точка MCP:
https://YOUR-WORKER.YOUR-SUBDOMAIN.workers.dev/mcp
Подключение ChatGPT Business
В ChatGPT откройте Настройки рабочего пространства → Приложения → Создать.
Введите указанную выше конечную точку
/mcpи выберите аутентификацию OAuth.Просмотрите предупреждение о пользовательском приложении, создайте черновик, затем опубликуйте и включите его.
Каждый пользователь подключается через Настройки → Плагины → [ваше приложение] → Подключить и входит в систему с разрешенной учетной записью Google.
Начните новый рабочий чат, выберите приложение и проверьте список инструментов, прежде чем просить его просмотреть данные Lunch Money.
Перед тем как сделать репозиторий публичным
Выполните:
npm run check:public-releaseТакже проверьте git status, убедитесь, что .dev.vars не отслеживается, и что имя Worker, конечная точка, идентификаторы ресурсов Cloudflare и пример документации не идентифицируют ваше личное развертывание.
Если вы очищаете существующее развертывание, храните его конфигурацию вне репозитория или в файле wrangler.personal.jsonc, игнорируемом git. Разверните эту частную конфигурацию с помощью npx wrangler deploy --config wrangler.personal.jsonc.
Проверка
Целенаправленный тест безопасности проверяет точный список разрешенных, его аннотации, отсутствие представительных инструментов изменения и отклонение исходящих POST-запросов:
npm run test:readonlyСм. THIRD_PARTY_NOTICES.md для получения сведений об авторстве.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Read-only MCP server for ClassQuill, a tutoring-business-management platform.
Hosted remote MCP server for YNAB on Cloudflare Workers with OAuth
Multi-tenant FastMCP server for Charles Schwab brokerage data, monetized via DPYC Tollbooth
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/bhonick/lunchmoney-readonly-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server