mobile-mcp-ai 2.6.3__tar.gz → 2.6.4__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 (57) hide show
  1. {mobile_mcp_ai-2.6.3/mobile_mcp_ai.egg-info → mobile-mcp-ai-2.6.4}/PKG-INFO +3 -43
  2. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/config.py +32 -0
  3. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/basic_tools_lite.py +570 -601
  4. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/mcp_tools/mcp_server.py +216 -292
  5. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4/mobile_mcp_ai.egg-info}/PKG-INFO +3 -43
  6. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/mobile_mcp_ai.egg-info/SOURCES.txt +1 -31
  7. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/setup.py +1 -1
  8. mobile_mcp_ai-2.6.3/tests/test_mind_cloud_my_space.py +0 -80
  9. mobile_mcp_ai-2.6.3/tests/test_mind_correct.py +0 -73
  10. mobile_mcp_ai-2.6.3/tests/test_mind_improved.py +0 -83
  11. mobile_mcp_ai-2.6.3/tests/test_mind_optimized.py +0 -77
  12. mobile_mcp_ai-2.6.3/tests/test_open_mind.py +0 -37
  13. mobile_mcp_ai-2.6.3/tests/test_priority_demo.py +0 -81
  14. mobile_mcp_ai-2.6.3/tests/test_simple.py +0 -76
  15. mobile_mcp_ai-2.6.3/tests/test_/344/270/276/346/212/245.py +0 -136
  16. mobile_mcp_ai-2.6.3/tests/test_/345/210/207/346/215/242/350/257/255/350/250/200/345/210/260English.py +0 -158
  17. mobile_mcp_ai-2.6.3/tests/test_/346/265/213/350/257/225.py +0 -114
  18. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/LICENSE +0 -0
  19. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/MANIFEST.in +0 -0
  20. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/README.md +0 -0
  21. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/__init__.py +0 -0
  22. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/__init__.py +0 -0
  23. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/device_manager.py +0 -0
  24. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/dynamic_config.py +0 -0
  25. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/ios_client_wda.py +0 -0
  26. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/ios_device_manager_wda.py +0 -0
  27. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/mobile_client.py +0 -0
  28. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/template_matcher.py +0 -0
  29. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/templates/close_buttons/auto_x_0112_151217.png +0 -0
  30. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/templates/close_buttons/auto_x_0112_152037.png +0 -0
  31. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/templates/close_buttons/auto_x_0112_152840.png +0 -0
  32. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/templates/close_buttons/auto_x_0112_153256.png +0 -0
  33. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/templates/close_buttons/auto_x_0112_154847.png +0 -0
  34. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/templates/close_buttons/gray_x_stock_ad.png +0 -0
  35. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/utils/__init__.py +0 -0
  36. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/utils/logger.py +0 -0
  37. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/utils/operation_history_manager.py +0 -0
  38. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/utils/smart_wait.py +0 -0
  39. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/docs/iOS_SETUP_GUIDE.md +0 -0
  40. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/mcp_tools/__init__.py +0 -0
  41. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/mobile_mcp_ai.egg-info/dependency_links.txt +0 -0
  42. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/mobile_mcp_ai.egg-info/entry_points.txt +0 -0
  43. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/mobile_mcp_ai.egg-info/not-zip-safe +0 -0
  44. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/mobile_mcp_ai.egg-info/requires.txt +0 -0
  45. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/mobile_mcp_ai.egg-info/top_level.txt +0 -0
  46. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/requirements.txt +0 -0
  47. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/setup.cfg +0 -0
  48. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/templates/close_buttons/auto_x_0112_151217.png +0 -0
  49. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/templates/close_buttons/auto_x_0112_152037.png +0 -0
  50. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/templates/close_buttons/auto_x_0112_152840.png +0 -0
  51. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/templates/close_buttons/auto_x_0112_153256.png +0 -0
  52. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/templates/close_buttons/auto_x_0112_154847.png +0 -0
  53. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/templates/close_buttons/gray_x_stock_ad.png +0 -0
  54. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/utils/__init__.py +0 -0
  55. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/utils/logger.py +0 -0
  56. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/utils/xml_formatter.py +0 -0
  57. {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/utils/xml_parser.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.1
2
2
  Name: mobile-mcp-ai
3
- Version: 2.6.3
3
+ Version: 2.6.4
4
4
  Summary: 移动端自动化 MCP Server - 支持 Android/iOS,AI 功能可选(基础工具不需要 AI)
5
5
  Home-page: https://github.com/test111ddff-hash/mobile-mcp-ai
6
6
  Author: douzi
@@ -21,53 +21,13 @@ Classifier: Topic :: Software Development :: Testing
21
21
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
22
  Requires-Python: >=3.8
23
23
  Description-Content-Type: text/markdown
24
- License-File: LICENSE
25
- Requires-Dist: uiautomator2>=2.16.0
26
- Requires-Dist: adbutils>=1.2.0
27
- Requires-Dist: Pillow>=10.0.0
28
- Requires-Dist: mcp>=0.9.0
29
- Requires-Dist: python-dotenv>=1.0.0
30
24
  Provides-Extra: ai
31
- Requires-Dist: dashscope>=1.10.0; extra == "ai"
32
- Requires-Dist: openai>=1.0.0; extra == "ai"
33
- Requires-Dist: anthropic>=0.3.0; extra == "ai"
34
25
  Provides-Extra: test
35
- Requires-Dist: pytest>=8.0.0; extra == "test"
36
- Requires-Dist: pytest-asyncio>=0.21.0; extra == "test"
37
- Requires-Dist: allure-pytest>=2.13.0; extra == "test"
38
26
  Provides-Extra: dev
39
- Requires-Dist: pytest>=8.0.0; extra == "dev"
40
- Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
41
- Requires-Dist: twine>=4.0.0; extra == "dev"
42
- Requires-Dist: build>=0.10.0; extra == "dev"
43
27
  Provides-Extra: ios
44
- Requires-Dist: tidevice>=0.11.0; extra == "ios"
45
- Requires-Dist: facebook-wda>=1.4.0; extra == "ios"
46
28
  Provides-Extra: h5
47
- Requires-Dist: Appium-Python-Client>=3.0.0; extra == "h5"
48
- Requires-Dist: selenium>=4.0.0; extra == "h5"
49
29
  Provides-Extra: all
50
- Requires-Dist: dashscope>=1.10.0; extra == "all"
51
- Requires-Dist: openai>=1.0.0; extra == "all"
52
- Requires-Dist: anthropic>=0.3.0; extra == "all"
53
- Requires-Dist: Appium-Python-Client>=3.0.0; extra == "all"
54
- Requires-Dist: selenium>=4.0.0; extra == "all"
55
- Requires-Dist: pytest>=8.0.0; extra == "all"
56
- Requires-Dist: pytest-asyncio>=0.21.0; extra == "all"
57
- Requires-Dist: allure-pytest>=2.13.0; extra == "all"
58
- Dynamic: author
59
- Dynamic: author-email
60
- Dynamic: classifier
61
- Dynamic: description
62
- Dynamic: description-content-type
63
- Dynamic: home-page
64
- Dynamic: keywords
65
- Dynamic: license-file
66
- Dynamic: project-url
67
- Dynamic: provides-extra
68
- Dynamic: requires-dist
69
- Dynamic: requires-python
70
- Dynamic: summary
30
+ License-File: LICENSE
71
31
 
72
32
  # 📱 Mobile MCP AI
73
33
 
@@ -102,6 +102,31 @@ class Config:
102
102
  "false"
103
103
  ).lower() == "true"
104
104
 
105
+ # ==================== Token 优化(省钱模式)====================
106
+ # 启用 Token 优化(默认开启,只精简格式,不影响准确度)
107
+ TOKEN_OPTIMIZATION_ENABLED: bool = os.getenv(
108
+ "TOKEN_OPTIMIZATION_ENABLED",
109
+ "true"
110
+ ).lower() == "true"
111
+
112
+ # list_elements 最大返回元素数量(默认 0 = 不限制,确保准确度)
113
+ MAX_ELEMENTS_RETURN: int = int(os.getenv("MAX_ELEMENTS_RETURN", "0"))
114
+
115
+ # take_screenshot_with_som 最大返回元素数量(默认 0 = 不限制)
116
+ MAX_SOM_ELEMENTS_RETURN: int = int(os.getenv("MAX_SOM_ELEMENTS_RETURN", "0"))
117
+
118
+ # 精简返回信息(只移除冗余提示文字,不影响数据)
119
+ COMPACT_RESPONSE: bool = os.getenv(
120
+ "COMPACT_RESPONSE",
121
+ "true"
122
+ ).lower() == "true"
123
+
124
+ # 精简工具描述(减少每次请求的 token)
125
+ COMPACT_TOOL_DESCRIPTION: bool = os.getenv(
126
+ "COMPACT_TOOL_DESCRIPTION",
127
+ "true"
128
+ ).lower() == "true"
129
+
105
130
  @classmethod
106
131
  def get_ai_platform(cls) -> Optional[str]:
107
132
  """获取优先使用的AI平台"""
@@ -137,6 +162,13 @@ class Config:
137
162
  "device": {
138
163
  "default_device_id": cls.DEFAULT_DEVICE_ID,
139
164
  "lock_orientation": cls.LOCK_SCREEN_ORIENTATION,
165
+ },
166
+ "token_optimization": {
167
+ "enabled": cls.TOKEN_OPTIMIZATION_ENABLED,
168
+ "max_elements": cls.MAX_ELEMENTS_RETURN,
169
+ "max_som_elements": cls.MAX_SOM_ELEMENTS_RETURN,
170
+ "compact_response": cls.COMPACT_RESPONSE,
171
+ "compact_tool_desc": cls.COMPACT_TOOL_DESCRIPTION,
140
172
  }
141
173
  }
142
174