Сервер MCP Календаря Google
Это сервер Model Context Protocol (MCP), который обеспечивает интеграцию с Google Calendar. Он позволяет LLM читать, создавать, обновлять и искать события календаря через стандартизированный интерфейс.
Пример использования
Наряду с обычными возможностями, которые вы ожидаете от интеграции календаря, вы также можете выполнять действительно динамичные, многошаговые процессы, такие как:
Добавьте события из снимков экрана и изображений:
Add this event to my calendar based on the attached screenshot.Поддерживаемые форматы изображений: PNG, JPEG, GIF Изображения могут содержать сведения о событиях, такие как дата, время, место и описание.
Анализ календаря:
What events do I have coming up this week that aren't part of my usual routine?Проверить посещаемость:
Which events tomorrow have attendees who have not accepted the invitation?Автоматическая координация событий:
Here's some available that was provided to me by someone. Take a look at the available times and create an event that is free on my work calendar.Укажите свою доступность:
Please provide availability looking at both my personal and work calendar for this upcoming week. Choose times that work well for normal working hours on the East Coast. Meeting time is 1 hour
Related MCP server: MCP Google Workspace Server
Требования
Node.js (рекомендуется последняя LTS-версия)
TypeScript 5.3 или выше
Проект Google Cloud с включенным API Календаря
Учетные данные OAuth 2.0 (идентификатор клиента и секретный ключ клиента)
Настройка Google Cloud
Перейдите в Google Cloud Console.
Создайте новый проект или выберите существующий.
Включите API Google Calendar для вашего проекта. Убедитесь, что на верхней панели выбран нужный проект, прежде чем включать API.
Создайте учетные данные OAuth 2.0:
Перейти к учетным данным
Нажмите «Создать учетные данные» > «Идентификатор клиента OAuth».
Выберите «Пользовательские данные» для типа данных, к которым приложение будет иметь доступ.
Добавьте название вашего приложения и контактную информацию
Добавьте следующие области (необязательно):
https://www.googleapis.com/auth/calendar.events(или более широкоhttps://www.googleapis.com/auth/calendarпри необходимости)
Выберите «Приложение для ПК» в качестве типа приложения (Важно!)
Добавьте свой адрес электронной почты в качестве тестового пользователя на экране согласия OAuth.
Примечание: добавление тестового пользователя займет несколько минут. Согласие OAuth не позволит вам продолжить, пока тестовый пользователь не распространится.
Примечание о тестовом режиме: пока приложение находится в тестовом режиме, токены аутентификации истекают через 1 неделю и их необходимо обновить, выполнив
npm run auth.
Установка
Клонировать репозиторий
Установка зависимостей (это также собирает js через postinstall):
npm installЗагрузите учетные данные Google OAuth из консоли Google Cloud Console (в разделе «Учетные данные»), переименуйте файл в
gcp-oauth.keys.jsonи поместите его в корневой каталог проекта.Убедитесь, что файл содержит учетные данные для «настольного приложения».
Либо скопируйте предоставленный файл шаблона:
cp gcp-oauth.keys.example.json gcp-oauth.keys.jsonи заполните его своими учетными данными из Google Cloud Console.
Доступные сценарии
npm run build— сборка кода TypeScript (компилируетsrcдляbuild)npm run typecheck— запуск проверки типов TypeScript без компиляцииnpm run start— запуск скомпилированного сервера MCP (используяnode build/index.js)npm run auth— запуск процесса аутентификации Google OAuth вручную.npm test— запуск набора модульных/интеграционных тестов с помощью Vitestnpm run test:watch— запуск тестов в режиме наблюденияnpm run coverage— запуск тестов и создание отчета о покрытии
Аутентификация
Сервер обрабатывает аутентификацию Google OAuth 2.0 для доступа к данным вашего календаря.
Автоматический поток аутентификации (во время запуска сервера)
Убедитесь, что
gcp-oauth.keys.jsonправильно назван и помещен в корень проекта.Запустите сервер MCP:
npm start.Сервер проверит наличие существующих действительных токенов аутентификации в
.gcp-saved-tokens.json.Если найдены действительные токены, сервер запускается в обычном режиме.
Если действительные токены не найдены:
Сервер пытается запустить временный локальный веб-сервер (пробует порты 3000-3004).
Ваш веб-браузер по умолчанию автоматически откроет экран входа в учетную запись Google и согласия.
Следуйте инструкциям в браузере для авторизации приложения.
После успешной авторизации вы будете перенаправлены на локальную страницу (например,
http://localhost:3000/oauth2callback).На этой странице отобразится сообщение об успешном сохранении токенов в файле
.gcp-saved-tokens.json(и будет указан точный путь к файлу).Временный сервер аутентификации автоматически отключается.
Основной сервер MCP продолжает процесс запуска.
Ручной процесс аутентификации
Если вам необходимо пройти повторную аутентификацию или вы предпочитаете выполнять аутентификацию отдельно:
Выполните команду:
npm run authЭтот скрипт выполняет тот же процесс аутентификации на основе браузера, который описан выше.
Откроется ваш браузер, вы авторизуетесь и увидите страницу успешного завершения с указанием места сохранения токенов.
Скрипт автоматически завершит работу после успешной аутентификации.
Управление токенами
Токены аутентификации хранятся в файле
.gcp-saved-tokens.jsonв корне проекта.Этот файл создается автоматически и не должен передаваться в систему контроля версий (он включен в
.gitignore).Сервер пытается автоматически обновить просроченные токены доступа, используя сохраненный токен обновления.
Если срок действия токена обновления истек (например, через 7 дней, если приложение Google Cloud находится в режиме тестирования) или он был отозван, вам потребуется повторно пройти аутентификацию, используя либо автоматический поток (перезапустив сервер), либо ручную команду
npm run auth.
Тестирование
Модульные и интеграционные тесты реализуются с помощью Vitest .
Запуск тестов:
npm testЗапуск тестов в режиме наблюдения:
npm run test:watchСоздать отчет о покрытии:
npm run coverage
Тесты имитируют внешние зависимости (Google API, файловая система) для обеспечения изолированного тестирования логики сервера и обработчиков.
Заметки о безопасности
Сервер работает локально и требует аутентификации OAuth.
Учетные данные OAuth (
gcp-oauth.keys.json) и сохраненные токены (.gcp-saved-tokens.json) никогда не следует передавать в систему контроля версий. Убедитесь, что они добавлены в файл.gitignore.Для использования в производственных целях рассмотрите возможность проверки вашего приложения OAuth в Google.
Использование с Claude Desktop
Добавьте эту конфигурацию в файл конфигурации Claude Desktop. Например
/Users/<user>/Library/Application Support/Claude/claude_desktop_config.json:{ "mcpServers": { "google-calendar": { "command": "node", "args": ["<absolute-path-to-project-folder>/build/index.js"] } } }Примечание: замените
<absolute-path-to-project-folder>фактическим путем к каталогу вашего проекта.Перезагрузить рабочий стол Клода
Разработка
Поиск неисправностей
Ошибки аутентификации/сброс соединения при обратном вызове:
Убедитесь, что
gcp-oauth.keys.jsonсуществует и содержит учетные данные для типа приложения для настольного компьютера .Убедитесь, что ваш адрес электронной почты добавлен в качестве тестового пользователя в настройках экрана согласия Google Cloud OAuth (подождите несколько минут, пока изменения вступят в силу).
Попробуйте удалить
.gcp-saved-tokens.jsonи повторно выполнить аутентификацию (npm run authили restartnpm start).Убедитесь, что никакой другой процесс не блокирует порты 3000–3004, когда требуется аутентификация.
Срок действия токенов истекает еженедельно:
Если ваше приложение Google Cloud находится в режиме тестирования , токены обновления истекают через 7 дней. При необходимости выполните повторную аутентификацию.
Рассмотрите возможность переноса вашего приложения в производственную среду в Google Cloud Console для получения более долговечных токенов обновления (требуется проверка Google).
Ошибки сборки:
Запустите
npm installеще раз.Проверьте версию Node.js (используйте LTS).
Удалите каталог
build/и запуститеnpm run build.
Если вы разработчик и хотите внести свой вклад в этот репозиторий, пожалуйста, ознакомьтесь с Обзором архитектуры перед внесением вклада.
Лицензия
Массачусетский технологический институт