MCP客户端应用

一款功能全面的Android应用程序,作为模型上下文协议(MCP)客户端,可连接任何MCP服务器并动态显示多种数据类型。

  • by proAbobakr
  • Kotlin
  • 本地部署
  • 更新于
在 GitHub 查看 proAbobakr/Android_mcp

使用说明

安卓MCP客户端

一个功能齐全的Android应用程序,充当 模型上下文协议(MCP) 客户端,允许您连接到任何MCP服务器并动态显示各种类型的数据。

特性

🔌 通用MCP服务器连接

  • 通过HTTP/HTTPS连接到任何MCP服务器
  • 完全支持MCP协议(2024-11-05版)
  • 自动服务器初始化和能力检测

📊 动态内容渲染

该应用程序支持动态显示多种内容类型:

  • 文本内容:纯文本、格式化文本、标题
  • 图像:带字幕的基于URL的图像
  • 视频:带元数据的视频内容显示
  • 列表:有序和无序列表
  • 图表:折线图、条形图、饼图、散点图
  • 表格:带标题和行的数据表
  • 代码:语法突出显示的代码块
  • 链接:带有描述的可点击链接
  • 错误消息:格式化错误显示

🛠️ MCP功能

  • 工具:浏览并执行可用的MCP工具
  • 资源:访问和读取MCP资源
  • 实时结果:实时查看工具执行结果
  • 错误处理:全面的错误显示和处理

建筑

该应用程序是使用现代Android开发实践构建的:

  • 语言:科特林
  • UI框架:Jetpack作曲
  • 建筑:MVVM(模型视图ViewModel)
  • 网络:OkHttp
  • JSON解析:Gson
  • 图像加载:线圈
  • 图表:MPAndroidChart
  • 视频:Media3 ExoPlayer

项目结构

app/
├── src/main/java/com/mcpclient/
│   ├── MainActivity.kt              # Main entry point
│   ├── models/
│   │   ├── MCPModels.kt            # MCP protocol models
│   │   └── ContentModels.kt        # Content type models
│   ├── network/
│   │   └── MCPClient.kt            # MCP client implementation
│   ├── data/
│   │   └── ContentParser.kt        # Content parsing utilities
│   └── ui/
│       ├── MCPViewModel.kt         # State management
│       ├── MCPScreen.kt            # Main UI screens
│       ├── ContentRenderer.kt      # Content display components
│       └── theme/                  # App theming

构建应用程序

先决条件

  • 安卓工作室刺猬(2023.1.1)或更高版本
  • JDK 17或更高版本
  • API 34级Android SDK
  • 等级8.2+

构建步骤

  1. 克隆存储库:

    git clone <repository-url>
    cd Android_mcp
    
  2. 在Android Studio中打开:

    • 打开安卓工作室
    • 选择“打开现有项目”
    • 导航到克隆的目录
  3. 同步渐变:

    • Android Studio将自动同步Gradle
    • 等待依赖项下载
  4. 构建项目:

    ./gradlew build
    
  5. 在设备/模拟器上运行:

    • 连接Android设备或启动模拟器
    • 在Android Studio中单击“运行”或使用:
    ./gradlew installDebug
    

用法

连接到MCP服务器

  1. 启动应用程序 在您的Android设备上
  2. 输入服务器URL 在连接屏幕中(例如。, http://localhost:3000)
  3. 点击“连接” 建立连接
  4. 连接后,您将看到服务器信息

浏览工具

  1. 导航到 “工具” 标签
  2. 浏览服务器提供的可用工具
  3. 点击任何工具执行它
  4. 查看结果 “结果” 标签

访问资源

  1. 导航到 “资源” 标签
  2. 浏览可用资源
  3. 点击任何资源以阅读其内容
  4. 查看中的内容 “结果” 标签

查看结果

  1. 导航到 “结果” 标签
  2. 查看所有工具执行和资源读取
  3. 内容根据类型动态呈现
  4. 使用 “全部清除” 清除结果

内容类型示例

文本

{
  "type": "text",
  "text": "Hello from MCP server!"
}

图像

{
  "type": "image",
  "url": "https://example.com/image.png",
  "caption": "Sample image"
}

图表

{
  "type": "chart",
  "chartType": "bar",
  "title": "Monthly Sales",
  "labels": ["Jan", "Feb", "Mar"],
  "datasets": [{
    "label": "Sales",
    "values": [100, 150, 200],
    "color": "#FF6384"
  }]
}

表格

{
  "type": "table",
  "title": "User Data",
  "headers": ["Name", "Age", "City"],
  "rows": [
    ["Alice", "30", "NYC"],
    ["Bob", "25", "SF"]
  ]
}

列表

{
  "type": "list",
  "title": "Todo Items",
  "items": ["Task 1", "Task 2", "Task 3"],
  "ordered": false
}

MCP协议支持

该客户端实现了MCP协议规范(2024-11-05),支持:

  • 初始化/已初始化:服务器握手和能力协商
  • 工具: tools/list 和 tools/call
  • 资源: resources/list 和 resources/read
  • 错误处理:标准JSON-RPC错误响应

配置

服务器URL

默认服务器URL为 http://localhost:3000。您可以在连接屏幕中更改此设置。

要在开发计算机上使用本地MCP服务器进行测试:

  • 使用 http://10.0.2.2:3000 Android模拟器
  • 将计算机的本地IP用于物理设备(例如。, http://192.168.1.100:3000)

网络安全

该应用程序允许明文流量用于开发。对于生产,请确保您的MCP服务器使用HTTPS。

依赖项

此项目中使用的关键依赖关系:

// Core Android
androidx.core:core-ktx:1.12.0
androidx.lifecycle:lifecycle-runtime-ktx:2.6.2
androidx.activity:activity-compose:1.8.1

// Jetpack Compose
androidx.compose:compose-bom:2023.10.01
androidx.compose.material3:material3

// Networking
com.squareup.okhttp3:okhttp:4.12.0
com.google.code.gson:gson:2.10.1

// Image & Video
io.coil-kt:coil-compose:2.5.0
androidx.media3:media3-exoplayer:1.2.0

// Charts
com.github.PhilJay:MPAndroidChart:v3.1.0

故障排除

连接问题

  • 确保MCP服务器正在运行且可访问
  • 检查防火墙设置
  • 验证服务器URL是否正确
  • 对于模拟器,请使用 10.0.2.2 而不是 localhost

构建问题

  • 清理项目: ./gradlew clean
  • 在Android Studio中使缓存无效
  • 确保您拥有正确的JDK版本(17)

内容未显示

  • 检查MCP服务器的响应格式
  • 验证内容类型是否与预期格式匹配
  • 检查logcat是否存在解析错误

贡献

欢迎投稿!请随时提交拉取请求或未决问题。

许可证

这个项目是开源的,可以在MIT许可证下使用。

MCP资源

支持

对于问题或疑问:

  1. 检查故障排除部分
  2. 审查MCP规范
  3. 在GitHub上打开一个问题