Garoon MCP Server
A Model Context Protocol (MCP) server that integrates Cybozu's Garoon groupware, enabling schedule management, meeting scheduling, and user search through natural language.
README
Garoon MCP Server
GaroonのREST APIをModel Context Protocol (MCP)サーバとして提供するプロジェクトです。Claude Desktop等のMCPクライアントから、Garoonのスケジュールやメッセージ機能を利用できます。
A Model Context Protocol (MCP) server that provides integration with Garoon (Cybozu's groupware solution).
機能 / Features
- スケジュール管理 / Schedule Management:
- 自分のスケジュールの閲覧・作成
- 他のユーザーのスケジュール閲覧(targetTypeパラメータ対応)
- イベントメニュー(種別)の指定対応
- 会議スケジューラー / Meeting Scheduler:
- 空き時間の自動検索(自分と相手の両方が空いている時間を検出)
- 参加者付きで会議を自動設定
- 営業時間・昼休みの考慮
- ユーザー検索 / User Search:
- 名前やメールアドレスでユーザーを検索
- 他ユーザーのスケジュール確認に必要なユーザーIDの取得
必要要件 / Requirements
- Python 3.10以上
- Garoonアカウント(REST API利用権限が必要)
- Claude Desktop(推奨)またはその他のMCPクライアント
uvパッケージマネージャー(推奨)
セットアップ手順 / Installation
1. リポジトリのクローン / Clone the repository
git clone <repository-url>
cd garoon-mcp-server
2. 依存パッケージのインストール / Install dependencies
推奨: uvを使用(高速で信頼性の高いパッケージマネージャー)
# uvのインストール(まだインストールしていない場合)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 依存パッケージのインストール
uv pip install -e .
または、従来の方法:
# 仮想環境の作成
python3 -m venv .venv
source .venv/bin/activate # Windowsの場合: .venv\Scripts\activate
# 依存パッケージのインストール
pip install -e .
3. 環境変数の設定 / Configure environment variables
.env.exampleをコピーして.envを作成し、自分のGaroon認証情報を設定します。
cp .env.example .env
.envファイルを編集 / Edit .env file:
GAROON_BASE_URL=https://your-subdomain.cybozu.com
GAROON_USERNAME=your.email@company.com
GAROON_PASSWORD=your_password_here
LOG_LEVEL=INFO
4. 認証テスト / Test authentication
python3 test_auth.py
認証が成功すると、以下のようなメッセージが表示されます:
✅ Authentication successful!
✅ API call successful, response: {...}
Claude Desktopでの使用方法 / Using with Claude Desktop
1. Claude Desktop設定ファイルの編集 / Edit Claude Desktop config
以下の場所にある設定ファイルを編集します:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
2. MCPサーバの設定を追加 / Add MCP server configuration
{
"mcpServers": {
"garoon": {
"command": "/path/to/garoon-mcp-server/.venv/bin/python",
"args": ["/path/to/garoon-mcp-server/main.py"],
"env": {
"GAROON_BASE_URL": "https://your-subdomain.cybozu.com",
"GAROON_USERNAME": "your.email@company.com",
"GAROON_PASSWORD": "your_password_here"
}
}
}
}
注意 / Note:
/path/to/garoon-mcp-serverを実際のプロジェクトパスに置き換えてください- Windowsの場合:
C:\\path\\to\\garoon-mcp-server\\.venv\\Scripts\\python.exe
3. Claude Desktopの再起動 / Restart Claude Desktop
設定を反映するため、Claude Desktopを完全に終了して再起動します。
注意: Claude Code(VSCode拡張機能)も同じ設定ファイルを使用するため、Claude Desktop / Claude Code の両方で利用可能です。
4. 使用例 / Usage examples
Claude Desktopで以下のようにGaroon機能を使用できます:
自分のスケジュール確認:
今日のスケジュールを教えて
スケジュール作成:
明日の10時から11時に「会議」という予定を作成して
他のユーザーのスケジュール確認:
山田さんの明日のスケジュールを確認して
ユーザー検索:
「田中」という名前のユーザーを探して
会議の空き時間検索と設定: 🆕
山田さんと明日の午後、1時間会議したい。空いている時間は?
14:00-15:00で「プロジェクト会議」という会議を設定してください
Dockerを使った設定(オプション) / Using Docker (Optional)
Dockerを使ってMCPサーバを実行することもできます。
1. Dockerイメージのビルド / Build Docker image
docker build -t garoon-mcp-server .
2. Claude Desktop設定でDockerを使用 / Use Docker in Claude Desktop config
{
"mcpServers": {
"garoon": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GAROON_BASE_URL",
"-e",
"GAROON_USERNAME",
"-e",
"GAROON_PASSWORD",
"garoon-mcp-server:latest"
],
"env": {
"GAROON_BASE_URL": "https://your-subdomain.cybozu.com",
"GAROON_USERNAME": "your.email@company.com",
"GAROON_PASSWORD": "your_password_here"
}
}
}
}
Docker使用のメリット / Benefits of using Docker
- ✅ Python環境の隔離
- ✅ 依存関係の管理が容易
- ✅ デプロイが簡単
認証方式 / Authentication
このMCPサーバは、Garoon REST APIのX-Cybozu-Authorizationヘッダーを使用して認証します。ユーザー名とパスワードをBase64エンコードして送信します。
This MCP server uses the X-Cybozu-Authorization header for Garoon REST API authentication. Username and password are Base64 encoded.
利用可能なツール / Available Tools
get_schedule
自分または他のユーザーのスケジュールを取得します / Get schedule events from Garoon for yourself or other users.
Parameters:
start_date(required): 開始日 (YYYY-MM-DD形式) / Start date in YYYY-MM-DD formatend_date(required): 終了日 (YYYY-MM-DD形式) / End date in YYYY-MM-DD formatuser_id(optional): ユーザーID(指定すると他ユーザーのスケジュールを取得、省略すると自分のスケジュール) / User ID to get schedule for (if not specified, returns your own schedule)
注意: user_idを指定する場合、内部的にtargetType="user"パラメータが自動的に追加されます。
create_schedule
新しいスケジュールイベントを作成します / Create a new schedule event in Garoon.
Parameters:
subject(required): イベントのタイトル / Event subject/titlestart_datetime(required): 開始日時 (ISO形式) / Start datetime in ISO formatend_datetime(required): 終了日時 (ISO形式) / End datetime in ISO formatdescription(optional): イベントの説明 / Event descriptionevent_menu(optional): イベントメニュー(例: "会議", "外出")/ Event menu/category. Defaults to "-----" if omitted.
注意: ログインユーザー(GAROON_USERNAME)が自動的に参加者として追加されます。
search_users
Garoonのユーザーを名前やその他の条件で検索します / Search for users in Garoon by name or other criteria.
Parameters:
query(required): 検索クエリ(ユーザー名、メールアドレス等) / Search query (user name, email, etc.)limit(optional): 最大取得件数(デフォルト: 20) / Maximum number of results to return (default: 20)
使用例: 他のユーザーのスケジュールを確認する前に、このツールでユーザーIDを検索できます。
find_available_time 🆕
自分と指定ユーザーの両方が空いている時間帯を検索します / Find available time slots for a meeting with another user.
Parameters:
user_id(required): 相手のユーザーID / Other user's Garoon user IDstart_date(required): 検索開始日 (YYYY-MM-DD) / Search start dateend_date(required): 検索終了日 (YYYY-MM-DD) / Search end dateduration_minutes(required): 必要な会議時間(分) / Required meeting duration in minutesstart_time(optional): 営業開始時刻 (HH:MM, デフォルト: 09:00) / Daily start timeend_time(optional): 営業終了時刻 (HH:MM, デフォルト: 18:00) / Daily end timeexclude_lunch(optional): 昼休み除外 (デフォルト: true) / Exclude lunch time 12:00-13:00
戻り値: 最大3件の空き時間候補(開始・終了時刻)
create_meeting
参加者付きで会議スケジュールを作成します / Create a meeting with attendees.
Parameters:
subject(required): 会議のタイトル / Meeting subject/titlestart_datetime(required): 開始日時 (ISO形式) / Start datetime (ISO format)end_datetime(required): 終了日時 (ISO形式) / End datetime (ISO format)attendee_ids(required): 参加者のユーザーIDリスト / List of attendee user IDsdescription(optional): 会議の説明 / Meeting descriptionevent_menu(optional): イベントメニュー(例: "会議", "外出")/ Event menu/category. Defaults to "-----" if omitted.
注意: ログインユーザー(GAROON_USERNAME)が自動的に参加者の先頭に追加されます。attendee_ids に含まれている場合は重複しません。
トラブルシューティング / Troubleshooting
認証エラーが発生する場合 / Authentication errors
- Garoonのユーザー名とパスワードが正しいか確認してください
- GaroonのベースURLが正しいか確認してください(末尾のスラッシュは不要)
- Garoonアカウントが有効で、API利用が許可されているか確認してください
MCPサーバが起動しない場合 / Server won't start
- Pythonのパスが正しいか確認してください
- 仮想環境が有効化されているか確認してください
- 依存パッケージがインストールされているか確認してください
ユーザー検索やスケジュール取得でエラーが発生する場合 / User search or schedule retrieval errors
-
「指定されたURIパスが見つかりません」エラー:
- Garoon APIのバージョンを確認してください(クラウド版またはパッケージ版4.10以降が必要)
- ユーザーアカウントにAPI利用権限があるか確認してください
-
他ユーザーのスケジュールが取得できない:
user_idパラメータとtargetTypeパラメータの両方が必要です(本MCPサーバでは自動的に設定されます)- 閲覧権限がないスケジュールは取得できません
セキュリティに関する注意 / Security Notes
⚠️ 重要 / Important:
.envファイルは絶対にgitにコミットしないでください / Never commit.envfile to git- パスワードやAPIキーを含むファイルは共有しないでください / Don't share files containing passwords or API keys
- 本番環境では、より安全な認証方式(OAuth等)の使用を検討してください / Consider using more secure authentication methods (OAuth, etc.) in production
ファイル構成 / File Structure
garoon-mcp-server/
├── main.py # MCPサーバのメインエントリーポイント
├── garoon_client.py # Garoon APIクライアント
├── tests/
│ ├── test_main.py # MCPツールのユニットテスト
│ └── test_garoon_client.py # Garoon APIクライアントのユニットテスト
├── pyproject.toml # プロジェクト設定と依存関係
├── .env # 環境変数(gitに含めない)
├── .env.example # 環境変数のテンプレート
├── .gitignore # Git除外設定
└── README.md # このファイル
開発 / Development
開発用依存パッケージのインストール / Installing development dependencies
# uvを使用する場合
uv pip install -e ".[dev]"
# または、pipを使用する場合
pip install -e ".[dev]"
コードフォーマット / Code formatting
uv run black .
# または: black .
型チェック / Type checking
uv run mypy main.py garoon_client.py
# または: mypy main.py garoon_client.py
テストの実行 / Running tests
uv run pytest
# または: pytest
変更履歴 / Changelog
v0.3.0
追加された機能:
- ✅
eventMenuパラメーター対応(create_schedule/create_meeting) - ✅ ログインユーザーを自動的に参加者に追加(
GAROON_USERNAMEを使用) - ✅
create_meetingの重複参加者排除
バグ修正:
eventTypeの値を正しい"REGULAR"に修正(誤:"NORMAL")subject/notesのリクエスト形式をAPI仕様に準拠(文字列直接)start/endにtimeZoneフィールドを追加attendeesのidフィールドを正しいcodeフィールドに修正
v0.2.0
追加された機能:
- ✅ 空き時間自動検索機能(
find_available_timeツール)- 自分と相手の両方が空いている時間を自動検出
- 営業時間・昼休みの考慮
- 最大3件の候補を提示
- ✅ 参加者付き会議作成(
create_meetingツール) - ✅ タイムゾーン指定対応(
GAROON_TIMEZONE環境変数)
v0.1.0
追加された機能:
- ✅ Garoon REST API統合(X-Cybozu-Authorization認証)
- ✅ スケジュール管理(取得・作成)
- ✅ ユーザー検索機能(
search_usersツール) - ✅ 他ユーザーのスケジュール確認(
targetTypeパラメータ対応)
ライセンス / License
MIT License - see LICENSE file for details.
サポート / Support
問題が発生した場合は、Issueを作成してください。
For issues and questions, please create an issue on GitHub.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.