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.
- {mobile_mcp_ai-2.6.3/mobile_mcp_ai.egg-info → mobile-mcp-ai-2.6.4}/PKG-INFO +3 -43
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/config.py +32 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/basic_tools_lite.py +570 -601
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/mcp_tools/mcp_server.py +216 -292
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4/mobile_mcp_ai.egg-info}/PKG-INFO +3 -43
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/mobile_mcp_ai.egg-info/SOURCES.txt +1 -31
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/setup.py +1 -1
- mobile_mcp_ai-2.6.3/tests/test_mind_cloud_my_space.py +0 -80
- mobile_mcp_ai-2.6.3/tests/test_mind_correct.py +0 -73
- mobile_mcp_ai-2.6.3/tests/test_mind_improved.py +0 -83
- mobile_mcp_ai-2.6.3/tests/test_mind_optimized.py +0 -77
- mobile_mcp_ai-2.6.3/tests/test_open_mind.py +0 -37
- mobile_mcp_ai-2.6.3/tests/test_priority_demo.py +0 -81
- mobile_mcp_ai-2.6.3/tests/test_simple.py +0 -76
- mobile_mcp_ai-2.6.3/tests/test_/344/270/276/346/212/245.py +0 -136
- 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
- mobile_mcp_ai-2.6.3/tests/test_/346/265/213/350/257/225.py +0 -114
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/LICENSE +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/MANIFEST.in +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/README.md +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/__init__.py +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/__init__.py +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/device_manager.py +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/dynamic_config.py +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/ios_client_wda.py +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/ios_device_manager_wda.py +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/mobile_client.py +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/template_matcher.py +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/templates/close_buttons/auto_x_0112_151217.png +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/templates/close_buttons/auto_x_0112_152037.png +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/templates/close_buttons/auto_x_0112_152840.png +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/templates/close_buttons/auto_x_0112_153256.png +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/templates/close_buttons/auto_x_0112_154847.png +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/templates/close_buttons/gray_x_stock_ad.png +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/utils/__init__.py +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/utils/logger.py +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/utils/operation_history_manager.py +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/core/utils/smart_wait.py +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/docs/iOS_SETUP_GUIDE.md +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/mcp_tools/__init__.py +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/mobile_mcp_ai.egg-info/dependency_links.txt +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/mobile_mcp_ai.egg-info/entry_points.txt +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/mobile_mcp_ai.egg-info/not-zip-safe +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/mobile_mcp_ai.egg-info/requires.txt +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/mobile_mcp_ai.egg-info/top_level.txt +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/requirements.txt +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/setup.cfg +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/templates/close_buttons/auto_x_0112_151217.png +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/templates/close_buttons/auto_x_0112_152037.png +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/templates/close_buttons/auto_x_0112_152840.png +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/templates/close_buttons/auto_x_0112_153256.png +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/templates/close_buttons/auto_x_0112_154847.png +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/templates/close_buttons/gray_x_stock_ad.png +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/utils/__init__.py +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/utils/logger.py +0 -0
- {mobile_mcp_ai-2.6.3 → mobile-mcp-ai-2.6.4}/utils/xml_formatter.py +0 -0
- {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.
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
2
|
Name: mobile-mcp-ai
|
|
3
|
-
Version: 2.6.
|
|
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
|
-
|
|
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
|
|