优步APK签名器MCP服务器
一个MCP(模型上下文协议)服务器,通过您的聊天LLM提供对优步APK签名器工具的访问。这允许您直接从聊天界面对APK文件进行签名、验证签名、管理密钥存储库以及执行其他APK签名操作。
特性
- 签署APK文件:使用现有密钥库对APK文件进行签名
- 验证签名:验证APK文件的签名
- 密钥库管理:列出可用密钥存储库并创建新的密钥存储库
- 柔性运输:支持stdio和TCP传输模式
- 可配置的:基于环境的配置,便于定制
先决条件
- Node.js 18.0.0或更高版本
- 优步APK签名工具已安装并可在您的PATH中访问
- 用于APK签名操作的Java运行时环境(JRE)
安装
- 克隆此存储库:
git clone
cd uber-apk-signer-mcp- 安装依赖项:
npm install- 构建项目:
npm run build配置
服务器自动从以下位置加载配置 .env 您可以将文件放在项目目录中,也可以直接设置环境变量。
环境变量
您可以使用环境变量配置服务器:
# Uber APK Signer configuration
export UBER_APK_SIGNER_PATH="/path/to/uber-apk-signer"
export UBER_APK_SIGNER_TIMEOUT=300000
export UBER_APK_SIGNER_LOG_LEVEL=info
# MCP Server configuration
export MCP_SERVER_NAME="uber-apk-signer-mcp"
export MCP_TRANSPORT="stdio" # or "tcp"
export MCP_TCP_HOST="localhost"
export MCP_TCP_PORT=3000
# Security settings
export MCP_ALLOW_INSECURE=false
export MCP_MAX_FILE_SIZE=104857600使用.env文件(推荐)
创建一个 .env 项目目录中的文件,以便于配置:
# Required: Path to your uber-apk-signer tool
UBER_APK_SIGNER_PATH=/path/to/uber-apk-signer
# Optional: Uber APK Signer settings
UBER_APK_SIGNER_TIMEOUT=300000 # 5 minutes timeout
UBER_APK_SIGNER_LOG_LEVEL=info # debug, info, warn, error
# Optional: Server settings
MCP_SERVER_NAME=uber-apk-signer-mcp # Server name
MCP_SERVER_VERSION=1.0.0 # Server version
MCP_TRANSPORT=stdio # stdio or tcp
# Optional: Security settings
MCP_ALLOW_INSECURE=false # Allow insecure connections
MCP_MAX_FILE_SIZE=104857600 # Max file size (100MB)备注:The .env Git会自动忽略该文件,以保护您的个人路径隐私。
优步APK签名者路径
确保可以访问优步APK签名工具。您可以:
- 将其添加到系统PATH中,或
- 设置
UBER_APK_SIGNER_PATH将环境变量转换为完整路径
用法
启动服务器
标准传输(默认)
npm startTCP传输
npm start -- --port 3000 --host localhost可用工具
MCP服务器提供以下工具:
1.签署APK(sign_apk)
使用密钥库对APK文件进行签名。 仅 apkPath 是必需的 -其他参数使用智能默认值。
参数:
apkPath(必填):要签名的APK文件的路径keystorePath(可选):密钥库文件的路径(默认为~/.android/debug.keystore)keystorePassword(可选):密钥库的密码(默认为android)keyAlias(可选):用于签名的密钥的别名(默认为androiddebugkey)keyPassword(可选):密钥密码(默认为android)outputPath(可选):已签名APK的输出路径(如果未提供,则自动生成)
示例:
简单签名(开发/测试):
{
"apkPath": "./app.apk"
}使用自定义密钥库进行生产签名:
{
"apkPath": "./release.apk",
"keystorePath": "~/keys/release.keystore",
"keystorePassword": "mysecret",
"keyAlias": "release-key",
"keyPassword": "mysecret"
}聊天使用情况:
- “你能签署我的app.apk文件吗?”(使用调试密钥库默认值)
- “使用我的生产密钥库签署我的release.apk”(询问密钥库详细信息)
2.验证APK签名(verify_apk_signature)
验证APK文件的签名。
参数:
apkPath(必填):要验证的APK文件的路径
例子:
{
"apkPath": "/path/to/app.apk"
}3.列出密钥库(list_keystores)
列出目录中可用的密钥存储库。
参数:
directory(可选):搜索密钥存储库的目录(默认:当前目录)
例子:
{
"directory": "/path/to/keystores"
}4.创建密钥库(create_keystore)
为APK签名创建一个新的密钥库。
参数:
keystorePath(必填):创建密钥库的路径keystorePassword(必填):密钥库的密码keyAlias(必填):密钥的别名keyPassword(必填):密钥密码commonName(可选):证书的通用名称organization(可选):组织名称
例子:
{
"keystorePath": "/path/to/new-keystore.jks",
"keystorePassword": "newpass123",
"keyAlias": "release",
"keyPassword": "newkey123",
"commonName": "My App",
"organization": "My Company"
}与聊天LLM集成
MCP客户端配置
服务器支持stdio传输,可以与任何兼容MCP的客户端集成。以下是常见客户端的配置示例:
克劳德桌面
{
"mcpServers": {
"uber-apk-signer": {
"command": "node",
"args": ["/path/to/uber-apk-signer-mcp/dist/index.js"],
"cwd": "/path/to/uber-apk-signer-mcp"
}
}
}没有
# In your Ollama configuration
mcp_servers:
uber-apk-signer:
command: node
args: ["/path/to/uber-apk-signer-mcp/dist/index.js"]
cwd: "/path/to/uber-apk-signer-mcp"自定义MCP客户端
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
const client = new Client({
name: 'my-client',
version: '1.0.0',
});
const transport = new StdioClientTransport({
command: 'node',
args: ['/path/to/uber-apk-signer-mcp/dist/index.js'],
cwd: '/path/to/uber-apk-signer-mcp',
});
await client.connect(transport);通用配置
大多数MCP客户端使用类似的配置结构:
{
"mcpServers": {
"uber-apk-signer": {
"command": "node",
"args": ["/path/to/uber-apk-signer-mcp/dist/index.js"],
"cwd": "/path/to/uber-apk-signer-mcp"
}
}
}备注:替换 /path/to/uber-apk-signer-mcp 带有安装目录的实际路径。
发展
项目结构
src/
├── index.ts # Main server entry point
├── tools/
│ └── apk-signer-tools.ts # MCP tool implementations
├── services/
│ └── apk-signer.ts # APK signing service
└── config/
└── config.ts # Configuration management建筑
npm run build发展模式
npm run dev测试
npm test故障排除
常见问题
- “未找到优步APK签名者”
- 确保工具已安装且可访问 - 检查 UBER_APK_SIGNER_PATH 环境变量 - 从命令行验证工具是否正常工作
- “权限被拒绝”
- 检查APK和密钥库文件的文件权限 - 确保服务器具有对工作目录的读/写访问权限
- “密钥库密码不正确”
- 验证密钥库密码和密钥密码 - 检查密钥库文件是否已损坏
- “找不到APK文件”
- 验证APK文件路径是否正确 - 确保文件存在并且可读
调试模式
通过设置启用调试日志记录:
export UBER_APK_SIGNER_LOG_LEVEL=debug安全考虑
- 密钥库安全:确保密钥库文件和密码的安全
- 文件访问:服务器需要访问APK和密钥库文件
- 网络安全:使用TCP传输时,请考虑防火墙规则
- 输入验证:所有输入在处理前都经过验证
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
支持
对于问题和疑问:
- 检查故障排除部分
- 在启用调试模式的情况下查看日志
- 在GitHub上打开一个问题
- 联系您的内部团队了解优步APK Signer的具体问题
