stackchan-mcp 0.1.0__tar.gz → 0.2.0__tar.gz

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 (30) hide show
  1. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/PKG-INFO +2 -2
  2. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/README.md +1 -1
  3. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/pyproject.toml +1 -1
  4. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/stackchan_mcp/stdio_server.py +10 -3
  5. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/uv.lock +1 -1
  6. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/.env.example +0 -0
  7. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/.gitignore +0 -0
  8. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/LICENSE +0 -0
  9. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/stackchan_mcp/__init__.py +0 -0
  10. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/stackchan_mcp/__main__.py +0 -0
  11. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/stackchan_mcp/audio_stream.py +0 -0
  12. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/stackchan_mcp/capture_server.py +0 -0
  13. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/stackchan_mcp/cli.py +0 -0
  14. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/stackchan_mcp/esp32_client.py +0 -0
  15. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/stackchan_mcp/gateway.py +0 -0
  16. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/stackchan_mcp/handlers/__init__.py +0 -0
  17. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/stackchan_mcp/handlers/audio.py +0 -0
  18. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/stackchan_mcp/handlers/camera.py +0 -0
  19. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/stackchan_mcp/handlers/robot.py +0 -0
  20. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/stackchan_mcp/mcp_router.py +0 -0
  21. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/stackchan_mcp/protocol.py +0 -0
  22. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/stackchan_mcp/server.py +0 -0
  23. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/stackchan_mcp/tools.py +0 -0
  24. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/tests/conftest.py +0 -0
  25. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/tests/test_capture_server.py +0 -0
  26. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/tests/test_esp32_client.py +0 -0
  27. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/tests/test_gateway.py +0 -0
  28. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/tests/test_mcp_router.py +0 -0
  29. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/tests/test_protocol.py +0 -0
  30. {stackchan_mcp-0.1.0 → stackchan_mcp-0.2.0}/tests/test_stdio_server.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: stackchan-mcp
3
- Version: 0.1.0
3
+ Version: 0.2.0
4
4
  Summary: Two-faced MCP gateway for StackChan (xiaozhi-esp32): bridges stdio MCP clients to the ESP32 over WebSocket + HTTP.
5
5
  Project-URL: Homepage, https://github.com/kisaragi-mochi/stackchan-mcp
6
6
  Project-URL: Repository, https://github.com/kisaragi-mochi/stackchan-mcp
@@ -163,7 +163,7 @@ Same shape, under `mcpServers`.
163
163
  | `move_head(yaw, pitch, speed?)` | Drive yaw + pitch servos |
164
164
  | `get_head_angles` | Read current yaw + pitch servo angles |
165
165
  | `get_touch_state` | Touch sensor state (press/release/stroke) |
166
- | `set_avatar(face)` | Switch avatar expression (`idle` / `happy` / `thinking` / `sad` / `surprised` / `embarrassed`) |
166
+ | `set_avatar(face)` | Switch avatar expression (`idle` / `happy` / `thinking` / `sad` / `surprised` / `embarrassed`), or `off` to hide the avatar and disable blink so the underlying xiaozhi-esp32 screens (WiFi config UI, OTA, settings) are visible. A subsequent `set_avatar(<other face>)` brings it back and restores blink. |
167
167
  | `set_blink(state)` | Blink animation on/off |
168
168
  | `set_mouth(state)` | Mouth shape (`closed` / `half` / `open` / `e` / `u`) |
169
169
  | `check_vm_en` | Read PY32 VM EN GPIO state (servo power supply diagnostic) |
@@ -132,7 +132,7 @@ Same shape, under `mcpServers`.
132
132
  | `move_head(yaw, pitch, speed?)` | Drive yaw + pitch servos |
133
133
  | `get_head_angles` | Read current yaw + pitch servo angles |
134
134
  | `get_touch_state` | Touch sensor state (press/release/stroke) |
135
- | `set_avatar(face)` | Switch avatar expression (`idle` / `happy` / `thinking` / `sad` / `surprised` / `embarrassed`) |
135
+ | `set_avatar(face)` | Switch avatar expression (`idle` / `happy` / `thinking` / `sad` / `surprised` / `embarrassed`), or `off` to hide the avatar and disable blink so the underlying xiaozhi-esp32 screens (WiFi config UI, OTA, settings) are visible. A subsequent `set_avatar(<other face>)` brings it back and restores blink. |
136
136
  | `set_blink(state)` | Blink animation on/off |
137
137
  | `set_mouth(state)` | Mouth shape (`closed` / `half` / `open` / `e` / `u`) |
138
138
  | `check_vm_en` | Read PY32 VM EN GPIO state (servo power supply diagnostic) |
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "stackchan-mcp"
3
- version = "0.1.0"
3
+ version = "0.2.0"
4
4
  description = "Two-faced MCP gateway for StackChan (xiaozhi-esp32): bridges stdio MCP clients to the ESP32 over WebSocket + HTTP."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -150,8 +150,11 @@ def create_server() -> Server:
150
150
  name="set_avatar",
151
151
  description=(
152
152
  "Switch the avatar face shown on the LCD. "
153
- "Pick the face that fits the current emotional beat — this is "
154
- "the robot's actual visible expression, not just a label."
153
+ "Choose one of the supported faces; this is the robot's "
154
+ "actual visible expression, not just a label. "
155
+ "Pass 'off' to hide the avatar and disable blink, exposing the "
156
+ "underlying xiaozhi-esp32 screens (WiFi config UI, OTA, settings); "
157
+ "any other face brings the avatar back and restores blink."
155
158
  ),
156
159
  inputSchema={
157
160
  "type": "object",
@@ -165,8 +168,12 @@ def create_server() -> Server:
165
168
  "sad",
166
169
  "surprised",
167
170
  "embarrassed",
171
+ "off",
168
172
  ],
169
- "description": "One of: idle, happy, thinking, sad, surprised, embarrassed.",
173
+ "description": (
174
+ "One of: idle, happy, thinking, sad, surprised, "
175
+ "embarrassed, off."
176
+ ),
170
177
  },
171
178
  },
172
179
  "required": ["face"],
@@ -1313,7 +1313,7 @@ wheels = [
1313
1313
 
1314
1314
  [[package]]
1315
1315
  name = "stackchan-mcp"
1316
- version = "0.1.0"
1316
+ version = "0.2.0"
1317
1317
  source = { editable = "." }
1318
1318
  dependencies = [
1319
1319
  { name = "aiohttp" },
File without changes
File without changes