splitwise-chatgpt-mcp
Коннектор Splitwise для ChatGPT
Сервер MCP только для данных, который подключает ChatGPT к официальному API Splitwise. Поддерживает:
list_groupslist_friends(включая балансы)list_expensesget_expensecreate_expense(равное разделение по группе или явные доли)
Сервер использует Streamable HTTP по адресу /mcp. Он также выступает в роли небольшого моста авторизации OAuth 2.1: ChatGPT выполняет PKCE с этим сервером, а этот сервер выполняет OAuth Splitwise и не допускает токен Splitwise до ChatGPT.
Предварительные требования
Node.js 20 или новее
Стабильный публичный HTTPS-адрес для развертывания (или туннель для разработки во время тестирования)
Учетная запись Splitwise и OAuth-приложение Splitwise
1. Регистрация приложения Splitwise
Откройте https://secure.splitwise.com/apps и создайте OAuth-приложение.
Укажите его URL обратного вызова как
https://YOUR-CONNECTOR-HOST/oauth/splitwise/callback.Скопируйте идентификатор клиента и секрет клиента. Никогда не сохраняйте их в репозитории.
Splitwise должен перенаправлять на коннектор, а не напрямую в ChatGPT. Коннектор возобновляет отдельный поток PKCE ChatGPT после этого.
2. Настройка и запуск
cp .env.example .env
# Fill in .env, then:
npm install
npm run devОбязательные переменные:
Переменная | Назначение |
| Публичный HTTPS-источник, без завершающего слэша |
| Идентификатор клиента OAuth-приложения Splitwise |
| Секрет OAuth-приложения Splitwise |
| Стабильный случайный секрет, не менее 32 символов, используется для аутентификации и шифрования артефактов OAuth |
Необязательные переменные: PORT, SPLITWISE_AUTHORIZE_URL, SPLITWISE_TOKEN_URL и SPLITWISE_API_BASE_URL.
Сгенерируйте секрет сессии с помощью openssl rand -hex 32. Для контейнера:
docker build -t splitwise-mcp .
docker run --env-file .env -p 3000:3000 splitwise-mcp3. Поток OAuth
ChatGPT обнаруживает
/.well-known/oauth-protected-resourceна MCP-сервере.Он обнаруживает метаданные OAuth этого коннектора по адресу
/.well-known/oauth-authorization-serverи динамически регистрирует публичного клиента по адресу/register.ChatGPT запускает authorization-code + PKCE по адресу
/authorize, включая значениеresourceMCP.Коннектор перенаправляет пользователя в Splitwise и получает результат по адресу
/oauth/splitwise/callback.Коннектор обменивает код Splitwise на стороне сервера, создает пятиминутный зашифрованный код коннектора и перенаправляет в ChatGPT.
ChatGPT обменивает этот код по адресу
/token, используя свой PKCE-верификатор. Коннектор возвращает аутентифицированный зашифрованный токен доступа, содержащий минимальный контекст сессии.Каждый запрос
/mcpрасшифровывает и проверяет токен, срок действия, контекст области действия и ресурс перед вызовом Splitwise.
Динамические регистрации клиентов, коды коннектора и 30-дневные токены доступа — это конверты AES-256-GCM без сохранения состояния, производные от SESSION_SECRET. Они переживают сон, перезапуски, повторные развертывания и несколько реплик, если каждый экземпляр сохраняет один и тот же секрет. Ротация SESSION_SECRET намеренно аннулирует все существующие регистрации и подключения. Этот пример не выпускает токены обновления, поэтому повторное связывание требуется через 30 дней.
4. Тестирование и подключение к ChatGPT
Запустите:
npm run build
npm test
npx @modelcontextprotocol/inspector@latestВ Inspector выберите Streamable HTTP и используйте https://YOUR-CONNECTOR-HOST/mcp.
В ChatGPT включите режим разработчика в разделе Settings → Security and login. На странице Plugins добавьте подключение, выберите вариант публичной конечной точки и введите https://YOUR-CONNECTOR-HOST/mcp. Просмотрите пять обнаруженных инструментов, затем вызовите инструмент чтения, чтобы начать связывание учетной записи.
Предлагаемые проверки:
«Список моих групп Splitwise».
«Показать балансы с моими друзьями Splitwise».
«Список последних пяти расходов в группе 123».
«Получить полные сведения о расходе 456».
«Создать расход на ужин в размере 24 долларов США в группе 123, разделив поровну».
Заметки о продакшене
Исполняемый сервер не хранит состояние сессии OAuth. Перед более крупным многопользовательским развертыванием:
Держите
SESSION_SECRETстабильным, секретным и одинаковым во всех репликах. Для более надежного управления ключами извлекайте или получайте ключ шифрования из управляемого KMS; никогда не логируйте токены или секреты.Коды авторизации без состояния не могут быть помечены как использованные без хранилища. PKCE, точная привязка клиента/перенаправления/ресурса, аутентифицированное шифрование и пятиминутный срок действия ограничивают риск повторного воспроизведения. Если требуется строгое однократное использование, добавьте кратковременный общий кэш повторного воспроизведения, ключом которого является идентификатор кода.
Ограничьте URI перенаправления динамической регистрации точными URL обратного вызова ChatGPT, показанными на странице управления приложением (плюс явно настроенные обратные вызовы для разработки).
Добавьте ограничение скорости, структурированные журналы безопасности, ротацию секретов, политику конфиденциальности и отзыв токенов/отвязку учетной записи.
Сохраняйте привязку
resource, проверку PKCE, короткий срок действия кода и точное соответствие URI перенаправления.Работайте за HTTPS. Не открывайте этот сервер разработки напрямую в интернет.
Инструмент create_expense помечен как неидемпотентная запись. Его инструкции предписывают модели резюмировать точную сумму, валюту, группу, плательщика и доли перед вызовом. Splitwise может вернуть HTTP 200 с объектом errors на уровне приложения, поэтому коннектор проверяет этот объект перед сообщением об успехе.
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
Hosted MCP server exposing US hospital procedure cost data to AI assistants
MCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2
Hosted MCP server for LLM cost estimation, model comparison, and budget-aware routing.
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/preethamd98/splitwise-chatgpt-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server