Android MCP 服务库使用说明

项目简介

这是一个 Android Library 项目,旨在帮助 Android 应用轻松集成 Model Context Protocol (MCP) 服务器功能。通过集成此库,Android 应用可以作为一个 MCP 服务器运行,并通过网络向连接的 LLM (大型语言模型) 客户端暴露设备信息、应用数据以及执行特定操作的能力。

主要功能点

  • 托管 MCP 服务器: 将 Android 应用本身转变为一个 MCP 服务器节点。
  • 提供资源: 允许 LLM 客户端访问应用内管理的资源(如文件、配置等)。
  • 暴露工具: 定义并执行 Android 设备上的特定操作或获取信息的功能,供 LLM 调用。
  • 支持 Prompt 模板: 定义和渲染 Prompt 模板,指导 LLM 交互。
  • 内置 Android 工具: 提供获取设备信息、应用信息、系统时间、内存、电池状态等常用工具。
  • 多种传输协议: 支持 WebSocket 和 HTTP/SSE 等网络传输方式进行客户端通信。
  • 便捷初始化: 支持通过 AndroidX Startup 进行自动或手动初始化。

安装步骤

将库作为依赖添加到您的 Android 项目中。在您的 'build.gradle' (或 'build.gradle.kts') 文件中添加相应的依赖声明。

例如,使用 Groovy DSL:

dependencies {
    implementation 'dev.jasonpearson.mcpandroidsdk:lib:版本号' // 替换为实际的版本号
}

请参考项目的发布页面或构建文件获取最新的版本号。

服务器配置

MCP 服务器运行在 Android 应用内部,LLM 客户端需要通过网络连接到它。由于服务器不是一个独立的命令行程序,LLM 客户端无法通过执行 'command' 来启动它。客户端需要配置连接信息,通常包括服务器名称、使用的传输协议和网络地址。

要使 LLM 客户端能够连接,您通常需要:

  1. 在 Android 设备上运行包含此库的应用,并启动 MCP 服务器。
  2. 使用 'adb' 进行端口转发(如果客户端在开发工作站上),例如将设备的 '8080' 端口转发到工作站的 '8080' 端口(针对 WebSocket)或将设备的 '8081' 端口转发到工作站的 '8081' 端口(针对 HTTP/SSE)。
  3. 在 LLM 客户端的 MCP 配置中,指定:
    • 'name': MCP 服务器的名称(可在 Android 应用中自定义)。
    • 'transport': 连接方式,例如 '"websocket"' 或 '"http/sse"'。
    • 'address': 服务器的网络地址,例如转发后通常是 '"ws://localhost:8080/mcp"' (WebSocket) 或 '"http://localhost:8081/mcp/message"' (HTTP/SSE POST endpoint)。

客户端无需配置 'command' 和 'args'。

基本使用方法

  1. 初始化:
    • 推荐使用自动初始化:只需添加库依赖,库会利用 AndroidX Startup 在应用启动时自动初始化。
    • 手动初始化:如果您需要控制初始化时机,可以在 Application 类的 'onCreate' 中调用 'McpStartup.initializeManually(this)' 或 'McpStartup.initializeWithCustomConfig(...)'。
  2. 启动服务器: 在需要启动服务器的地方(例如 Activity 或 Service 中),获取 'McpServerManager' 实例并调用 'startServerAsync()' (非阻塞) 或在协程中调用 'startServer()'。
    val manager = McpStartup.getManager()
    lifecycleScope.launch { // 需要适当的协程作用域
        manager.startServer().getOrThrow()
    }
  3. 添加自定义能力: 您可以通过 'McpServerManager' 实例添加自己的资源、工具或 Prompt 模板,以扩展服务器功能。例如,添加一个自定义工具:
    manager.addAndroidTool(
        AndroidTool(
            name = "my_custom_tool",
            description = "Performs a custom task.",
            parameters = mapOf("input" to "string")
        ) { context, arguments ->
            // 执行您的逻辑并返回结果
            "Processed: ${arguments["input"]}"
        }
    )

通过以上步骤,您的 Android 应用即可作为一个 MCP 服务器运行,等待 LLM 客户端连接并进行交互。

信息

分类

开发者工具