Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SlackからMCPを経由して社内業務アプリを動かせるようにした話
Search
ise208
November 16, 2025
Technology
96
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SlackからMCPを経由して社内業務アプリを動かせるようにした話
JJUG CCC 2025 Fall LT
ise208
November 16, 2025
Other Decks in Technology
See All in Technology
“全部コピーしない”ファイルデータの活用 : — FSx for ONTAP × S3 Tables × Icebergで作るメタデータカタログ
yoshiki0705
0
430
依頼文化をやめる日 EM視点で語るPlatform EngineeringとInclusive SRE / Discussing Platform Engineering and Inclusive SRE from an EM's Perspective
shin1988
3
1.7k
AIで政治は変わるのか? — 中高生と考えたAI時代の民主主義(東海高校サタデープログラム)
eitarosuda
0
390
AI時代における最適なQA組織の作り方
ymty
3
370
【FinOps】データドリブンな意思決定を目指して
z63d
3
610
完全自律ロボットを作りたくて、先に開発を自律させた話(ROS Japan UG #63 LT)
rryz09
0
160
きのこカンファレンス2026_肩書きを外したとき私は誰か
yamasatimi
1
130
AI Agent SaaS を支える自社仮想化基盤への挑戦と実運用 / ai-agent-saas-virtualization
flatt_security
2
1.1k
AI駆動開発におけるQAエンジニアの役割事例 〜AI駆動開発の現場から〜
kobayashiyorimitsu
0
300
知見・人・API・DB・予算 ─ ナイナイ尽くしだった人事データ整備 with dbt、5年間の学び
ken6377
1
150
しぶいSRE: サーバから見えない障害にどう向き合うか。ラストワンマイルのデバッグ実践 / Shibui SRE
kanny
6
1.9k
Baseline対応のDOMの型定義を作った
uhyo
3
680
Featured
See All Featured
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
460
Balancing Empowerment & Direction
lara
6
1.2k
Color Theory Basics | Prateek | Gurzu
gurzu
0
380
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
180
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
670
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
640
Evolving SEO for Evolving Search Engines
ryanjones
0
230
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
630
It's Worth the Effort
3n
188
29k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Done Done
chrislema
186
16k
Transcript
SlackからMCPを経由して 社内業務アプリを動かせるようにした話 JJUG CCC 2025 Fall LT
じこしょうかい ・名前: いわせ ・年齢: 28 ・所属: 決済代行会社のアプリ開発者 ・JJUG: 参加2回目 LT
初 ・X: @ise_208
結論 Spring AIでMCPサーバーが簡単に作れた アプリから AIエージェント (Claude Code)を呼べた
なぜ ・SlackでClaude Codeの操作をしたい ・MCPで社内アプリの操作をしたい ・BotもMCPもJavaで作りたい
ぜんたい ・SlackからBotを操作するBotアプリを呼び出す ・BotアプリからClaude Codeを呼び出しMCPを確認する ・MCP(stdio形式)から社内アプリ叩く MCP Slack Botアプリ Slack 社内アプリ
Claude code
やったこと(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" ]}}
やったこと(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 # 標準入出力モード
さいごに ・Claude CodeのためAPI的な使い方が難しい Anthropic API が使えれば... ・権限/セキュリティが怖い ・Slack便利 ・MCP楽しい
ありがとうございました