android-mcp-server

alguojian/android-mcp-server

3.3

If you are the rightful owner of android-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

An Android server application based on the MCP Kotlin SDK, utilizing the SSE (Server-Sent Events) protocol.

Tools
3
Resources
0
Prompts
0

Android MCP Server

一个基于 MCP Kotlin SDK 的 Android 服务器应用,使用 SSE (Server-Sent Events) 传输协议。

功能特性

  • 🚀 完整 MCP 服务器 - 完整的 Model Context Protocol 服务器实现
  • 📡 SSE 传输协议 - 使用 Server-Sent Events 进行实时通信
  • 🎨 Material Design - 现代化的 Android UI 设计
  • 🔧 丰富工具集 - 设备信息、时间查询等示例工具
  • 📚 资源管理 - 系统信息等资源访问
  • 💡 智能提示 - 设备分析等提示功能
  • 📱 后台服务 - 前台服务确保服务器持续运行
  • 📊 实时日志 - 查看服务器运行状态和日志

技术栈

  • Kotlin 2.1.0 - 现代化的编程语言
  • MCP Kotlin SDK 0.5.0 - 官方 MCP SDK
  • Ktor - 高性能 HTTP 服务器
  • Android Jetpack - 现代 Android 开发组件
  • Material Design 3 - 最新的设计系统

快速开始

环境要求

  • Android Studio Hedgehog | 2023.1.1 或更高版本
  • Android SDK API 24 (Android 7.0) 或更高版本
  • Kotlin 2.1.0
  • Gradle 8.4

安装步骤

  1. 克隆项目

    git clone <repository-url>
    cd mcp-kotlin
    
  2. 在 Android Studio 中打开项目

    • 打开 Android Studio
    • 选择 "Open an existing project"
    • 选择项目目录
  3. 同步 Gradle

    • Android Studio 会自动提示同步
    • 等待依赖下载完成
  4. 运行应用

    • 连接 Android 设备或启动模拟器
    • 点击 "Run" 按钮

快速测试

  1. 构建项目

    • Build → Clean Project
    • Build → Rebuild Project
  2. 运行应用

    • 运行应用
    • 启动服务器
    • 测试 MCP 连接

使用方法

  1. 启动服务器

    • 打开应用
    • 配置端口号(默认 8080)
    • 设置服务器名称
    • 点击 "启动服务器"
  2. 连接测试

    • 主页:http://localhost:8080/
    • SSE 端点:http://localhost:8080/sse
    • 状态查询:http://localhost:8080/status
    • 完整 MCP 协议支持
  3. 查看日志

    • 应用界面会显示实时日志
    • 包括服务器状态、工具调用等信息

版本兼容性说明

网络和 TLS 问题

如果遇到以下错误:

Could not GET 'https://repo.maven.apache.org/maven2/...'.
The server may not support the client's requested TLS protocol versions: (TLSv1.2, TLSv1.3)

解决方案:

  1. 检查网络连接

    • 确保网络连接正常
    • 检查防火墙设置
  2. 使用稳定版本

    • 项目使用 Kotlin 1.9.22(稳定版本)
    • Android Gradle Plugin 8.1.4
    • Gradle 8.2
  3. 清理和重建

    # Windows
    debug_build.bat
    
    # Linux/Mac
    chmod +x debug_build.sh
    ./debug_build.sh
    
  4. 手动清理

    ./gradlew clean
    ./gradlew build --stacktrace
    

Kotlin 版本兼容性

项目配置了强制版本解析来避免版本冲突:

  • Kotlin 1.9.22
  • Kotlinx Coroutines 1.7.3
  • Kotlinx Serialization 1.6.2

依赖冲突解决

如果遇到依赖冲突,项目已配置:

  • 强制版本解析策略
  • 排除冲突的传递依赖
  • 明确指定兼容版本

示例工具

应用内置了以下示例工具:

1. 获取设备信息 (get_device_info)

{
  "name": "get_device_info",
  "description": "获取 Android 设备信息"
}

2. 获取当前时间 (get_current_time)

{
  "name": "get_current_time", 
  "description": "获取当前时间"
}

3. 系统信息资源

  • URI: android://system/info
  • 提供详细的 Android 系统信息

4. 设备分析提示

  • 名称: analyze_device
  • 用于分析设备性能和状态

自定义开发

添加新工具

McpServerManager.kt 中的 setupTools() 方法中添加:

server.addTool(
    name = "your_tool_name",
    description = "工具描述"
) { request ->
    // 工具逻辑
    CallToolResult.success(
        content = listOf(
            TextContent(text = "结果内容")
        )
    )
}

添加新资源

setupResources() 方法中添加:

server.addResource(
    uri = "your://resource/uri",
    name = "资源名称",
    description = "资源描述",
    mimeType = "application/json"
) { request ->
    // 资源逻辑
    ReadResourceResult(contents = listOf(...))
}

故障排除

Kotlin 版本兼容性错误

如果遇到以下错误:

Class 'io.modelcontextprotocol.kotlin.sdk.Implementation' was compiled with an incompatible version of Kotlin.
The actual metadata version is 2.1.0, but the compiler version 1.9.0 can read versions up to 2.0.0.

解决方案 1:升级到 Kotlin 2.1.0(推荐)

  1. 确保项目使用 Kotlin 2.1.0
  2. 清理项目缓存:
    ./gradlew clean
    rm -rf .gradle
    
  3. 在 Android Studio 中:
    • File → Invalidate Caches and Restart
    • 重新同步项目

解决方案 2:使用兼容版本 如果升级有问题,可以使用备用配置:

# 备份当前配置
cp app/build.gradle.kts app/build.gradle.kts.backup

# 使用兼容版本配置
cp app/build-fallback.gradle.kts app/build.gradle.kts

网络连接问题

如果遇到网络连接错误:

  1. 使用网络修复脚本

    # Windows
    fix_network.bat
    
  2. 手动清理缓存

    # 删除 Gradle 缓存
    rm -rf ~/.gradle/caches
    rm -rf .gradle
    
    # 重新构建
    ./gradlew clean build
    
  3. 离线构建

    ./gradlew build --offline
    

常见问题

  1. 服务器启动失败

    • 检查端口是否被占用
    • 确保网络权限已授予
    • 查看应用日志获取详细错误信息
  2. 依赖冲突

    • 使用强制版本解析(已配置)
    • 清理 Gradle 缓存
    • 重新同步项目
  3. 构建失败

    • 检查网络连接
    • 尝试使用代理或 VPN
    • 使用备用配置文件
  4. SSE 插件冲突已解决 项目已修复 SSE 插件冲突问题:

    • 使用手动实现的 SSE 端点
    • 不依赖 Ktor SSE 插件
    • 避免插件重复安装错误
  5. MCP SDK API 错误 如果遇到 MCP SDK 相关的编译错误:

    • 确保使用正确的 Kotlin 版本(2.1.0)
    • 清理项目缓存并重新构建
    • 检查网络连接,确保依赖下载完整

版本兼容性矩阵

MCP SDKKotlinAndroid Gradle PluginGradle
0.5.02.1.0+8.2.0+8.4+
0.4.01.9.0+8.1.0+8.2+
0.3.01.9.0+8.0.0+8.0+

日志调试

应用提供详细的日志信息:

  • 服务器启动/停止状态
  • 工具调用记录
  • 错误信息和堆栈跟踪
  • 网络连接状态

许可证

MIT License

贡献

欢迎提交 Issue 和 Pull Request!