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 客户端能够连接,您通常需要:
- 在 Android 设备上运行包含此库的应用,并启动 MCP 服务器。
- 使用 'adb' 进行端口转发(如果客户端在开发工作站上),例如将设备的 '8080' 端口转发到工作站的 '8080' 端口(针对 WebSocket)或将设备的 '8081' 端口转发到工作站的 '8081' 端口(针对 HTTP/SSE)。
- 在 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'。
基本使用方法
- 初始化:
- 推荐使用自动初始化:只需添加库依赖,库会利用 AndroidX Startup 在应用启动时自动初始化。
- 手动初始化:如果您需要控制初始化时机,可以在 Application 类的 'onCreate' 中调用 'McpStartup.initializeManually(this)' 或 'McpStartup.initializeWithCustomConfig(...)'。
- 启动服务器:
在需要启动服务器的地方(例如 Activity 或 Service 中),获取 'McpServerManager' 实例并调用 'startServerAsync()' (非阻塞) 或在协程中调用 'startServer()'。
val manager = McpStartup.getManager() lifecycleScope.launch { // 需要适当的协程作用域 manager.startServer().getOrThrow() } - 添加自定义能力:
您可以通过 '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 客户端连接并进行交互。
信息
分类
开发者工具