manim-mcp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/README.md +104 -0
  2. package/dist/demo.mp4 +0 -0
  3. package/dist/index.js +65 -0
  4. package/dist/mcp-app.html +142 -0
  5. package/dist/server.js +1492 -0
  6. package/package.json +67 -0
  7. package/references/composer/SKILL.md +154 -0
  8. package/references/composer/references/3b1b-series-patterns.md +217 -0
  9. package/references/composer/references/domain-planning-guides/calculus-planning.md +188 -0
  10. package/references/composer/references/domain-planning-guides/linear-algebra-planning.md +169 -0
  11. package/references/composer/references/domain-planning-guides/ml-planning.md +286 -0
  12. package/references/composer/references/domain-planning-guides/number-theory-planning.md +187 -0
  13. package/references/composer/references/domain-planning-guides/physics-planning.md +249 -0
  14. package/references/composer/references/domain-planning-guides/probability-planning.md +200 -0
  15. package/references/composer/references/mathematical-storytelling.md +359 -0
  16. package/references/composer/references/narrative-patterns.md +221 -0
  17. package/references/composer/references/opening-patterns.md +284 -0
  18. package/references/composer/references/pacing-guide.md +289 -0
  19. package/references/composer/references/scene-archetypes.md +534 -0
  20. package/references/composer/references/scene-examples.md +379 -0
  21. package/references/composer/references/visual-techniques.md +480 -0
  22. package/references/composer/templates/scenes-template.md +147 -0
  23. package/references/manimce/SKILL.md +166 -0
  24. package/references/manimce/examples/3d_visualization.py +373 -0
  25. package/references/manimce/examples/basic_animations.py +212 -0
  26. package/references/manimce/examples/graph_plotting.py +401 -0
  27. package/references/manimce/examples/lorenz_attractor.py +172 -0
  28. package/references/manimce/examples/math_visualization.py +315 -0
  29. package/references/manimce/examples/updater_patterns.py +369 -0
  30. package/references/manimce/rules/3b1b-translation.md +594 -0
  31. package/references/manimce/rules/3d.md +254 -0
  32. package/references/manimce/rules/advanced-animations.md +594 -0
  33. package/references/manimce/rules/animation-groups.md +212 -0
  34. package/references/manimce/rules/animations.md +128 -0
  35. package/references/manimce/rules/api-pitfalls.md +89 -0
  36. package/references/manimce/rules/axes.md +214 -0
  37. package/references/manimce/rules/camera.md +208 -0
  38. package/references/manimce/rules/cli.md +232 -0
  39. package/references/manimce/rules/color-conventions.md +444 -0
  40. package/references/manimce/rules/colors.md +199 -0
  41. package/references/manimce/rules/config.md +264 -0
  42. package/references/manimce/rules/creation-animations.md +158 -0
  43. package/references/manimce/rules/graphing.md +233 -0
  44. package/references/manimce/rules/grouping.md +220 -0
  45. package/references/manimce/rules/latex.md +202 -0
  46. package/references/manimce/rules/lines.md +241 -0
  47. package/references/manimce/rules/long-form-video.md +552 -0
  48. package/references/manimce/rules/mathematical-domains.md +689 -0
  49. package/references/manimce/rules/mobjects.md +116 -0
  50. package/references/manimce/rules/multi-scene-composition.md +112 -0
  51. package/references/manimce/rules/pedagogy.md +532 -0
  52. package/references/manimce/rules/physics-simulations.md +610 -0
  53. package/references/manimce/rules/positioning.md +211 -0
  54. package/references/manimce/rules/scenes.md +121 -0
  55. package/references/manimce/rules/shapes.md +300 -0
  56. package/references/manimce/rules/styling.md +177 -0
  57. package/references/manimce/rules/text-animations.md +222 -0
  58. package/references/manimce/rules/text.md +189 -0
  59. package/references/manimce/rules/timing.md +227 -0
  60. package/references/manimce/rules/transform-animations.md +157 -0
  61. package/references/manimce/rules/updaters.md +226 -0
  62. package/references/manimce/templates/basic_scene.py +64 -0
  63. package/references/manimce/templates/camera_scene.py +100 -0
  64. package/references/manimce/templates/threed_scene.py +138 -0
@@ -0,0 +1,208 @@
1
+ ---
2
+ name: camera
3
+ description: MovingCameraScene, zoom, pan, and camera manipulation
4
+ metadata:
5
+ tags: camera, zoom, pan, frame, movingcamerascene, 3d
6
+ ---
7
+
8
+ # Camera Control
9
+
10
+ Control what the viewer sees with camera manipulation.
11
+
12
+ ## MovingCameraScene
13
+
14
+ For 2D scenes with camera movement (zoom, pan).
15
+
16
+ ```python
17
+ from manim import *
18
+
19
+ class CameraExample(MovingCameraScene):
20
+ def construct(self):
21
+ circle = Circle()
22
+ square = Square().shift(RIGHT * 3)
23
+ self.add(circle, square)
24
+
25
+ # Access camera frame
26
+ # self.camera.frame is the viewable area
27
+ ```
28
+
29
+ ## Zooming
30
+
31
+ ### Zoom In/Out by Scaling Frame
32
+
33
+ ```python
34
+ class ZoomExample(MovingCameraScene):
35
+ def construct(self):
36
+ dots = VGroup(*[Dot() for _ in range(100)])
37
+ dots.arrange_in_grid(10, 10, buff=0.3)
38
+ self.add(dots)
39
+
40
+ # Zoom in (make frame smaller)
41
+ self.play(self.camera.frame.animate.scale(0.5))
42
+ self.wait()
43
+
44
+ # Zoom out (make frame larger)
45
+ self.play(self.camera.frame.animate.scale(4))
46
+ ```
47
+
48
+ ### Zoom to Specific Width
49
+
50
+ ```python
51
+ class ZoomToWidth(MovingCameraScene):
52
+ def construct(self):
53
+ text = Text("Focus on me!")
54
+ self.add(text)
55
+
56
+ # Zoom to fit text with padding
57
+ self.play(
58
+ self.camera.frame.animate.set(width=text.width * 1.5)
59
+ )
60
+ ```
61
+
62
+ ## Panning
63
+
64
+ ### Move Camera to Location
65
+
66
+ ```python
67
+ class PanExample(MovingCameraScene):
68
+ def construct(self):
69
+ c1 = Circle().shift(LEFT * 3)
70
+ c2 = Circle().shift(RIGHT * 3)
71
+ self.add(c1, c2)
72
+
73
+ # Pan to first circle
74
+ self.play(self.camera.frame.animate.move_to(c1))
75
+ self.wait()
76
+
77
+ # Pan to second circle
78
+ self.play(self.camera.frame.animate.move_to(c2))
79
+ ```
80
+
81
+ ### Combined Zoom and Pan
82
+
83
+ ```python
84
+ class ZoomAndPan(MovingCameraScene):
85
+ def construct(self):
86
+ square = Square().shift(LEFT * 2)
87
+ triangle = Triangle().shift(RIGHT * 2)
88
+ self.add(square, triangle)
89
+
90
+ # Zoom in and pan simultaneously
91
+ self.play(
92
+ self.camera.frame.animate.scale(0.5).move_to(square)
93
+ )
94
+ self.wait()
95
+
96
+ # Move to triangle (still zoomed)
97
+ self.play(self.camera.frame.animate.move_to(triangle))
98
+ ```
99
+
100
+ ## Save and Restore Camera State
101
+
102
+ ```python
103
+ class SaveRestoreCamera(MovingCameraScene):
104
+ def construct(self):
105
+ circle = Circle()
106
+ self.add(circle)
107
+
108
+ # Save current state
109
+ self.camera.frame.save_state()
110
+
111
+ # Make changes
112
+ self.play(self.camera.frame.animate.scale(0.3).move_to(circle))
113
+ self.wait()
114
+
115
+ # Restore to saved state
116
+ self.play(Restore(self.camera.frame))
117
+ ```
118
+
119
+ ## auto_zoom
120
+
121
+ Automatically zoom to fit mobjects.
122
+
123
+ ```python
124
+ class AutoZoomExample(MovingCameraScene):
125
+ def construct(self):
126
+ squares = VGroup(*[
127
+ Square().shift(RIGHT * i + UP * j)
128
+ for i in range(-2, 3) for j in range(-2, 3)
129
+ ])
130
+ self.add(squares)
131
+
132
+ # Zoom to fit specific mobject
133
+ self.play(self.camera.auto_zoom(squares[0]))
134
+ self.wait()
135
+
136
+ # Zoom to fit all with margin
137
+ self.play(self.camera.auto_zoom(squares, margin=1))
138
+ ```
139
+
140
+ ## 3D Camera (ThreeDScene)
141
+
142
+ ```python
143
+ class ThreeDCameraExample(ThreeDScene):
144
+ def construct(self):
145
+ axes = ThreeDAxes()
146
+ sphere = Sphere()
147
+ self.add(axes, sphere)
148
+
149
+ # Set initial camera orientation
150
+ self.set_camera_orientation(
151
+ phi=75 * DEGREES, # Angle from z-axis
152
+ theta=-45 * DEGREES # Angle around z-axis
153
+ )
154
+ ```
155
+
156
+ ### Animated Camera Rotation
157
+
158
+ ```python
159
+ class RotatingCamera(ThreeDScene):
160
+ def construct(self):
161
+ axes = ThreeDAxes()
162
+ self.add(axes)
163
+
164
+ self.set_camera_orientation(phi=75 * DEGREES, theta=0)
165
+
166
+ # Continuous rotation
167
+ self.begin_ambient_camera_rotation(rate=0.2)
168
+ self.wait(5)
169
+ self.stop_ambient_camera_rotation()
170
+ ```
171
+
172
+ ### Move 3D Camera
173
+
174
+ ```python
175
+ class Move3DCamera(ThreeDScene):
176
+ def construct(self):
177
+ axes = ThreeDAxes()
178
+ self.add(axes)
179
+
180
+ self.set_camera_orientation(phi=75 * DEGREES, theta=-45 * DEGREES)
181
+
182
+ # Animate camera movement
183
+ self.move_camera(
184
+ phi=45 * DEGREES,
185
+ theta=45 * DEGREES,
186
+ run_time=3
187
+ )
188
+ ```
189
+
190
+ ## Camera Background
191
+
192
+ ```python
193
+ class CameraBackground(Scene):
194
+ def construct(self):
195
+ # Set background color
196
+ self.camera.background_color = BLUE_E
197
+
198
+ circle = Circle()
199
+ self.add(circle)
200
+ ```
201
+
202
+ ## Best Practices
203
+
204
+ 1. **Use MovingCameraScene for zoom/pan** - Regular Scene camera is static
205
+ 2. **Save state before complex movements** - Easy to restore
206
+ 3. **Use auto_zoom for dynamic content** - Automatically fits content
207
+ 4. **Keep camera movements smooth** - Don't make viewers dizzy
208
+ 5. **Use 3D camera rotation sparingly** - Can be disorienting
@@ -0,0 +1,232 @@
1
+ ---
2
+ name: cli
3
+ description: Command-line interface, rendering options, and quality flags
4
+ metadata:
5
+ tags: cli, render, quality, preview, command, terminal
6
+ ---
7
+
8
+ # Manim CLI
9
+
10
+ The `manim` command-line interface for rendering scenes.
11
+
12
+ ## Basic Usage
13
+
14
+ ```bash
15
+ # Render a scene
16
+ manim file.py SceneName
17
+
18
+ # With preview (opens video after rendering)
19
+ manim -p file.py SceneName
20
+
21
+ # Preview with low quality (fast)
22
+ manim -pql file.py SceneName
23
+ ```
24
+
25
+ ## Quality Flags
26
+
27
+ Quality presets for different use cases:
28
+
29
+ ```bash
30
+ # Low Quality: 854x480, 15fps (fast for testing)
31
+ manim -ql file.py SceneName
32
+
33
+ # Medium Quality: 1280x720, 30fps
34
+ manim -qm file.py SceneName
35
+
36
+ # High Quality: 1920x1080, 60fps
37
+ manim -qh file.py SceneName
38
+
39
+ # 2K Quality: 2560x1440, 60fps
40
+ manim -qp file.py SceneName
41
+
42
+ # 4K Quality: 3840x2160, 60fps
43
+ manim -qk file.py SceneName
44
+ ```
45
+
46
+ ### Common Combinations
47
+
48
+ ```bash
49
+ # Preview + Low Quality (development workflow)
50
+ manim -pql file.py SceneName
51
+
52
+ # Preview + High Quality (final check)
53
+ manim -pqh file.py SceneName
54
+ ```
55
+
56
+ ## Preview Flag
57
+
58
+ ```bash
59
+ # -p: Open video after rendering
60
+ manim -p file.py SceneName
61
+
62
+ # Without -p: Render only (no auto-open)
63
+ manim file.py SceneName
64
+ ```
65
+
66
+ ## Rendering Multiple Scenes
67
+
68
+ ```bash
69
+ # Render all scenes in file
70
+ manim -a file.py
71
+
72
+ # Render specific scenes
73
+ manim file.py Scene1 Scene2 Scene3
74
+ ```
75
+
76
+ ## Output Options
77
+
78
+ ### Save Last Frame Only
79
+
80
+ ```bash
81
+ # -s: Save only the last frame as PNG
82
+ manim -s file.py SceneName
83
+
84
+ # With quality
85
+ manim -sql file.py SceneName
86
+ ```
87
+
88
+ ### Output Format
89
+
90
+ ```bash
91
+ # GIF output
92
+ manim --format gif file.py SceneName
93
+
94
+ # PNG sequence
95
+ manim --format png file.py SceneName
96
+
97
+ # WebM (default is MP4)
98
+ manim --format webm file.py SceneName
99
+ ```
100
+
101
+ ### Custom Output Directory
102
+
103
+ ```bash
104
+ manim -o custom_name file.py SceneName
105
+ manim --media_dir /path/to/output file.py SceneName
106
+ ```
107
+
108
+ ## Frame Control
109
+
110
+ ```bash
111
+ # Start from specific animation number
112
+ manim -n 5 file.py SceneName
113
+
114
+ # Render frames from animation 3 to 7
115
+ manim -n 3,7 file.py SceneName
116
+ ```
117
+
118
+ ## Resolution and FPS
119
+
120
+ ```bash
121
+ # Custom resolution
122
+ manim -r 1920,1080 file.py SceneName
123
+
124
+ # Custom frame rate
125
+ manim --fps 24 file.py SceneName
126
+
127
+ # Both
128
+ manim -r 1280,720 --fps 30 file.py SceneName
129
+ ```
130
+
131
+ ## Transparency
132
+
133
+ ```bash
134
+ # Render with transparent background
135
+ manim -t file.py SceneName
136
+ ```
137
+
138
+ ## Renderer Selection
139
+
140
+ ```bash
141
+ # Cairo renderer (default, 2D)
142
+ manim --renderer cairo file.py SceneName
143
+
144
+ # OpenGL renderer (3D, faster preview)
145
+ manim --renderer opengl file.py SceneName
146
+ ```
147
+
148
+ ## Other Useful Flags
149
+
150
+ ```bash
151
+ # Verbose output
152
+ manim -v DEBUG file.py SceneName
153
+
154
+ # Quiet mode
155
+ manim -v WARNING file.py SceneName
156
+
157
+ # Show progress bar
158
+ manim --progress_bar display file.py SceneName
159
+
160
+ # Disable caching
161
+ manim --disable_caching file.py SceneName
162
+
163
+ # Write to movie even if no animations
164
+ manim --write_to_movie file.py SceneName
165
+ ```
166
+
167
+ ## Help
168
+
169
+ ```bash
170
+ # Show all options
171
+ manim --help
172
+
173
+ # Show render command options
174
+ manim render --help
175
+ ```
176
+
177
+ ## Other Commands
178
+
179
+ ```bash
180
+ # Check installation and dependencies
181
+ manim checkhealth
182
+
183
+ # Initialize new project
184
+ manim init
185
+
186
+ # Show config values
187
+ manim cfg show
188
+
189
+ # Write current config to file
190
+ manim cfg write
191
+
192
+ # List installed plugins
193
+ manim plugins -l
194
+ ```
195
+
196
+ ## Jupyter Notebook Support
197
+
198
+ Use the `%%manim` cell magic in Jupyter notebooks:
199
+
200
+ ```python
201
+ %%manim -qm -v WARNING MyScene
202
+ class MyScene(Scene):
203
+ def construct(self):
204
+ circle = Circle()
205
+ self.play(Create(circle))
206
+ ```
207
+
208
+ Flags work the same as CLI (`-qm`, `-ql`, etc.).
209
+
210
+ ## Typical Development Workflow
211
+
212
+ ```bash
213
+ # 1. Develop with fast preview
214
+ manim -pql scene.py MyScene
215
+
216
+ # 2. Check at medium quality
217
+ manim -pqm scene.py MyScene
218
+
219
+ # 3. Final render at high quality
220
+ manim -qh scene.py MyScene
221
+
222
+ # 4. Create GIF for sharing
223
+ manim --format gif -qm scene.py MyScene
224
+ ```
225
+
226
+ ## Best Practices
227
+
228
+ 1. **Use -pql for development** - Fast iteration cycle
229
+ 2. **Use -qh for final output** - Good quality, reasonable render time
230
+ 3. **Use -s for thumbnails** - Quick last-frame capture
231
+ 4. **Use -a sparingly** - Renders everything, can be slow
232
+ 5. **Use --format gif for demos** - Easy to share and embed