| ํญ๋ชฉ | ๋ด์ฉ |
|---|---|
| Invoke | /mcp-toolkit:setup |
| Category | cocode-flutter |
| Complexity | simple |
/mcp-toolkit setup โ ์ฑ๊ณผ AI๋ฅผ ์๋ "์ ์ ์ฐ๊ฒฐ"#
ํ๋ง๋๋ก#
๋ง๋ค๊ณ ์๋ Flutter ์ฑ๊ณผ Claude(AI)๋ฅผ ์๋ก ๋ํํ ์ ์๊ฒ ์ ์ ์ ์ฐ๊ฒฐํ๊ณ ์ฝ์ผํธ๋ฅผ ๊ฝ๋ ์ค์น ์์ ์ ๋๋ค. ์ด๊ฒ ๋๋์ผ AI๊ฐ ์ฑ ํ๋ฉด์ ์ง์ ๋ค์ฌ๋ค๋ณด๊ณ , ์ํ๋ฅผ ๋ฐ๊พธ๊ณ , ๋์์ ์์ผ๋ณผ ์ ์์ด์.
๋๊ฐยท์ธ์ ์ฐ๋์#
- ์ Flutter ์ฑ์ด๋ ์์ ํ๊ฒฝ์ ์ฒ์ ์ธํ ํ ๋ ๋ฑ ํ ๋ฒ ๋๋ฆฌ๋ ์ค์น ์ ์ฐจ์ ๋๋ค.
-
AI๊ฐ ์ฑ ๋ด๋ถ(ํ๋ฉด ์ํ, DB, ํ๋ฉด ์ด๋ ๋ฑ)๋ฅผ ์ง์ ๋ค๋ฃจ๋ ๋๊ตฌ(
bloc.*,db.*,nav.*๋ฑ)๋ฅผ ์ฐ๊ณ ์ถ์ ๋. - ๊ฐ๋ฐ์๊ฐ ์ ํ๋ก์ ํธ๋ฅผ ๋ฐ์ "AI ์ฐ๋ ํ๊ฒฝ"์ ๊ฐ์ถ๋ ์ด๊ธฐ ์ค๋น ๋จ๊ณ์์ ์ฌ์ฉํฉ๋๋ค.
๋ฌด์์ ํด์ฃผ๋์#
์ค์น๊ฐ ๋๋๋ฉด ๋ค์์ด ๊ฐ์ถฐ์ง๋๋ค.
- MCP ์๋ฒ(
mcp_server_dart) ์ค์น โ AI์ ์ฑ์ ์๋ ์ค๊ณ๊ธฐ ์ญํ - Claude Code์
mcp_flutter์ฐ๊ฒฐ ๋ฑ๋ก (ํ๋ฉด ์บก์ฒview_screenshotํฌํจ) - ์ฑ์
mcp_toolkit๊ณผ ๊ณต์ฉ ๋๊ตฌ ๋ฌถ์dev_toolingํจํค์ง ์ถ๊ฐ lib/main.dart์ ์ฐ๊ฒฐ ์ด๊ธฐํ ์ฝ๋ ์ฝ์-
cocode ํ์ค ๋๊ตฌ ์ธํธ๊ฐ ์ค์ ๋ก ์ฐ๊ฒฐ๋๋์ง ํ์ธ (
bloc.dump_state,db.reset,nav.go_named,auth.impersonate๋ฑ)
์ด๋ป๊ฒ ์ฐ๋์#
# 1. AI-์ฑ ์ค๊ณ ์๋ฒ ์ค์น
dart pub global activate mcp_server_dart
# 2. Claude Code์ ์ฐ๊ฒฐ ๋ฑ๋ก (--images: ํ๋ฉด ์บก์ฒ ๊ธฐ๋ฅ ์ผ๊ธฐ)
claude mcp add --transport stdio mcp_flutter -- mcp_server_dart --images
# 3. ๋์ Flutter ์ฑ์ ๋๊ตฌ ์ถ๊ฐ
flutter pub add mcp_toolkit
# 4. ์ค์น ํ์ธ: ์ฑ ์คํ ํ Claude Code์์ ๋๊ตฌ ๋ชฉ๋ก ๋ณด๊ธฐ
flutter run
/mcp-toolkit list-tools
์ค์นํ ๋ ์ผ๊ณ ๋ ์ ์๋ ์ ํ ์ต์ ๋ ์์ต๋๋ค.
--images # ํ๋ฉด ์บก์ฒ(view_screenshot) ๊ธฐ๋ฅ ์ผ๊ธฐ
--dumps # ํ๋ฉด ๊ตฌ์กฐ ๋คํ ๊ธฐ๋ฅ ์ผ๊ธฐ (๋ฌด๊ฑฐ์ฐ๋ ๊ผญ ํ์ํ ๋๋ง)
--vm-port=N # ์ฐ๊ฒฐ ํฌํธ ๋ณ๊ฒฝ (๊ธฐ๋ณธ๊ฐ 8181)
์์์ ๋ฌด์จ ์ผ์ด ๋ฒ์ด์ง๋์#
์ค์น๋ ์์๋๋ก 6๋จ๊ณ๋ฅผ ๊ฑฐ์นฉ๋๋ค.
- ์ค๊ณ ์๋ฒ ์ค์น โ AI์ ์ฑ์ ์๋
mcp_server_dart๋ฅผ ์ค์นํฉ๋๋ค. - ์ฐ๊ฒฐ ๋ฑ๋ก โ Claude Code์
mcp_flutter๋ฅผ ๋ฑ๋กํด ๋์ ์ฐ๊ฒฐํฉ๋๋ค. -
์ฑ์ ๋๊ตฌ ์ถ๊ฐ โ ๋์ ์ฑ์
mcp_toolkit๊ณผ ๊ณต์ฉ ๋๊ตฌ ๋ฌถ์dev_tooling์ ์ถ๊ฐํฉ๋๋ค. - ์ด๊ธฐํ ์ฝ๋ ์ฝ์
โ
lib/main.dart์ ์ฐ๊ฒฐ์ ์ผ๋ ์ฝ๋๋ฅผ ๋ฃ์ต๋๋ค. (๋๋ฒ๊ทธ ๋ชจ๋์์๋ง ์๋) - ์ ์ ๋์ ํ์ธ โ ์ฑ์ ์คํํ๊ณ ๋๊ตฌ ๋ชฉ๋ก์ ๋ถ๋ฌ์ ํ์ค ๋๊ตฌ๋ค์ด ๋ค ๋จ๋์ง ์ ๊ฒํฉ๋๋ค.
- ์ ์ฒด ์ฐ๊ฒฐ ์ ๊ฒ โ ๊ด๋ จ MCP๋ค์ด ๋ชจ๋ ์ฐ๊ฒฐ๋๋์ง ํ ๋ฒ์ ํ์ธํฉ๋๋ค.
โ๏ธ ์์ธ ์ต์ ยท์คํ ๋ช ์ธ (๊ฐ๋ฐ์ / AI ์์ด์ ํธ์ฉ)
1. Install the MCP server#
dart pub global activate mcp_server_dart2. Register with Claude Code#
The repo-level .mcp.json already lists mcp_flutter. To register globally:
claude mcp add --transport stdio mcp_flutter -- mcp_server_dart --images--images enables view_screenshot. Omit if you only need dynamic tools.
3. Add the toolkit to the target Flutter app#
cd path/to/your/flutter/app
flutter pub add mcp_toolkitAlso add (or create) the shared dev tooling package:
flutter pub add dev_tooling --path=../packages/dev_toolingThe shared package houses cocode's standard dynamic tool set (bloc.*, db.*, nav.*, etc.) โ see skills/mcp-toolkit/TEMPLATES.md for the reference implementation.
4. Initialise the binding#
// lib/main.dart
import 'package:dev_tooling/mcp_entries.dart';
import 'package:flutter/foundation.dart';
import 'package:mcp_toolkit/mcp_toolkit.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
if (kDebugMode) {
final binding = MCPToolkitBinding.instance;
binding.initializeFlutterToolkit();
binding.addEntries(entries: cocodeMcpEntries);
}
runApp(const App());
}
If you also use
cc-flutter-marionette, init it beforeMCPToolkitBinding. They use different VM Service extension namespaces, so they coexist.
5. Sanity check#
flutter run
# In Claude Code:
/mcp-toolkit list-toolsExpected: bloc.dump_state, bloc.add_event, db.seed_fixture, db.reset, nav.go_named, network.offline, flags.set, locale.set, analytics.tail, auth.impersonate.
6. Verify the layered stack#
# All three MCPs should be connected
claude mcp list | grep -E " maestro|marionette|mcp_flutter|dart|figma "Optional flags#
| Flag | Effect |
|---|---|
--images | Enable view_screenshot |
--dumps | Enable dump_render_tree (heavy โ only when you really need it) |
--vm-port=N | Override VM Service port (default 8181) |