Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SlackからMCPを経由して社内業務アプリを動かせるようにした話

Avatar for ise208 ise208
November 16, 2025

 SlackからMCPを経由して社内業務アプリを動かせるようにした話

JJUG CCC 2025 Fall LT

Avatar for ise208

ise208

November 16, 2025

Other Decks in Technology

Transcript

  1. やったこと(Bot側) ・SlackのリクエストからJavaでshellを叩く return new ProcessBuilder( "\\path\\to\\bash.exe", "-c", claudePath +" "+

    prompt); ・shでClaude Codeを呼ぶ→ 結果を一時ファイルに書き込む→ Javaに返す $CLAUDE_PATH -p --dangerously-skip-permissions "$PROMPT" --mcp-config "$MCP_CONFIG" < /dev/null > "$TEMP_STDOUT" 2> "$TEMP_STDERR" ・ -p: 非対話モード ・ --dangerously-skip-permissions: 権限チェックをスキップ(対話的な確認を防ぐ) ・ mcp-config: mcp-config.jsonのpathを明示的に指定する "mcpServers": { "java-mcp": { "type": "stdio", "command": "java", "args": [ "-jar", "C:\\path\\to\\java-mcp-app-1.0.0-SNAPSHOT.jar" ]}}
  2. やったこと(MCP側) ・Spring AIのmcp-serverライブラリ使用 ・@ToolでToolの定義 ・設定ファイルにプロトコル記載 <dependency> <groupId>org.springframework.ai </groupId> <artifactId> spring-ai-starter-mcp-server

    </artifactId> </dependency> @Tool(description = "ユーザー情報のサマリーを取得 | 引数: UserNumber | 例userSummary('12345678')" ) public String userSummary (String userNumber) { return companyApiService .callPost("/api/user/search" , Map.of("userNumber" , userNumber)); } } spring: ai: mcp: server: name: java-mcp protocol: STDIO # 標準入出力モード