Skip to main content
Glama
bhonick

lunchmoney-readonly-mcp

by bhonick

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.

Что делает его только для чтения

Сервер обеспечивает доступ только для чтения двумя независимыми уровнями:

  1. createReadonlyServer() предоставляет положительный список разрешенных 25 инструментов извлечения. Инструменты создания, обновления, удаления, загрузки, синхронизации, обновления, разделения, группировки и изменения бюджета не зарегистрированы.

  2. runWithReadonlyConfig() отклоняет любой запрос, не являющийся GET, к API Lunch Money до выполнения сетевого запроса.

Все предоставленные инструменты объявляют readOnlyHint: true, destructiveHint: false и openWorldHint: false.

Related MCP server: Monarch Money MCP Server

Требования

  • Токен API Lunch Money

  • Учетная запись Cloudflare с доступными Workers и KV

  • Веб-клиент Google Cloud OAuth 2.0

  • Рабочее пространство ChatGPT Business, в котором вы являетесь администратором или владельцем

Разверните свою копию

  1. Клонируйте этот репозиторий, затем установите и проверьте зависимости:

    npm install
    npm run typecheck
    npm run lint
    npm run test:readonly
  2. В wrangler.jsonc выберите уникальное name Worker и создайте пространство имен OAuth KV:

    npx wrangler kv namespace create OAUTH_KV

    Скопируйте возвращенный идентификатор пространства имен в REPLACE_WITH_OAUTH_KV_NAMESPACE_ID в wrangler.jsonc.

  3. Разверните один раз, чтобы получить URL вашего Worker:

    npx wrangler deploy
  4. Создайте веб-приложение Google OAuth 2.0. Добавьте этот URI перенаправления, заменив хост на URL вашего Worker:

    https://YOUR-WORKER.YOUR-SUBDOMAIN.workers.dev/authorize/callback
  5. Установите производственные секреты в интерактивном режиме. Никогда не помещайте их значения в 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_TOKEN

    ALLOWED_EMAILS — это разделенный запятыми список учетных записей Google, которым разрешено подключаться. Сервер закрывается при ошибке, если этот список пуст.

  6. Разверните снова. Ваша конечная точка MCP:

    https://YOUR-WORKER.YOUR-SUBDOMAIN.workers.dev/mcp

Подключение ChatGPT Business

  1. В ChatGPT откройте Настройки рабочего пространства → Приложения → Создать.

  2. Введите указанную выше конечную точку /mcp и выберите аутентификацию OAuth.

  3. Просмотрите предупреждение о пользовательском приложении, создайте черновик, затем опубликуйте и включите его.

  4. Каждый пользователь подключается через Настройки → Плагины → [ваше приложение] → Подключить и входит в систему с разрешенной учетной записью Google.

  5. Начните новый рабочий чат, выберите приложение и проверьте список инструментов, прежде чем просить его просмотреть данные 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 для получения сведений об авторстве.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    An MCP server providing full integration with the Lunch Money API to manage financial data including transactions, budgets, assets, and categories. It enables AI assistants to perform CRUD operations on financial records through a standardized HTTP interface.
    26
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Read-only MCP and HTTP proxy server for accessing Monarch Money financial data, enabling transaction analysis, budget tracking, and cashflow insights through natural language.
    6
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for programmatic read-only access to RiseUp cashflow data, allowing AI assistants to retrieve budget information via natural language.
    2
    247 npm
    30
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    A read-only MCP server for the Dough personal finance app, enabling assistants to query financial data like balances, transactions, and budgets through natural language.
    8
    MIT