Browse Source

上传代码修复

newdev_shunjiawei
liwei1dao 1 year ago
parent
commit
fa666cbb93
  1. 3
      .mcp.json
  2. 33
      local_plugins/open_ai_service/android/src/main/kotlin/com/yunqiinnovation/open_ai_service/MCPClient.kt
  3. 60
      local_plugins/spotify_sdk/android/src/main/kotlin/de/minimalme/spotify_sdk/SpotifySdkService.kt

3
.mcp.json

@ -8,9 +8,6 @@
}, },
"web-search": { "web-search": {
"url": "http://mcp.ideapsound.com:8000/sse" "url": "http://mcp.ideapsound.com:8000/sse"
},
"amap-amap-sse": {
"url": "https://mcp.amap.com/sse?key=e5fdc9605eabdeb5626f18f5721f343d"
} }
} }
} }

33
local_plugins/open_ai_service/android/src/main/kotlin/com/yunqiinnovation/open_ai_service/MCPClient.kt

@ -166,23 +166,38 @@ class MCPSubClient(
* 处理工具列表 * 处理工具列表
*/ */
private fun processToolsList(toolsResult: ListToolsResult?) { private fun processToolsList(toolsResult: ListToolsResult?) {
tools = toolsResult?.tools?.filter { tool -> config.tools == null || config.tools.contains(tool.name) == true try {
}?.map { tool -> // 将MCP工具列表转换为ToolUnion列表
// 确保输入模式有效 tools = toolsResult?.tools?.filter { tool -> config.tools == null || config.tools.contains(tool.name) == true
val inputType = tool.inputSchema?.type ?: "object" }?.map { tool ->
val inputProperties = tool.inputSchema?.properties ?: emptyMap() // 转换为ToolUnion格式
val inputRequired = tool.inputSchema?.required ?: emptyList<String>() ToolUnion.ofTool(
Tool.builder()
.name(tool.name)
.description(tool.description ?: "")
.inputSchema(
Tool.InputSchema.builder()
.type(JsonValue.from(tool.inputSchema?.type ?: "object"))
.properties(if (tool.inputSchema?.properties is JsonObject)
(tool.inputSchema.properties as JsonObject).toJsonValue()
else JsonValue.from(emptyMap<String, String>()))
.putAdditionalProperty("required", JsonValue.from(tool.inputSchema?.required ?: emptyList<String>()))
.build()
)
.build()
)
} ?: emptyList()
// 更新工具映射 // 更新工具映射
toolMapping.clear() toolMapping.clear()
tools.forEach { toolUnion -> tools.forEach { toolUnion ->
val tool = toolUnion.tool().get() val tool = toolUnion.tool().get()
toolMapping[tool.name()] = toolUnion toolMapping[tool.name()] = toolUnion
} }
// 更新工具Map列表 // 更新工具Map列表
updateToolMaps() updateToolMaps()
Log.d(TAG, "成功处理 ${tools.size} 个工具") Log.d(TAG, "成功处理 ${tools.size} 个工具")
} catch (e: Exception) { } catch (e: Exception) {
Log.e(TAG, "处理工具列表失败: ${e.message}", e) Log.e(TAG, "处理工具列表失败: ${e.message}", e)

60
local_plugins/spotify_sdk/android/src/main/kotlin/de/minimalme/spotify_sdk/SpotifySdkService.kt

@ -44,66 +44,6 @@ class SpotifySdkService(private val context: Context? = null) {
private val channelName = "spotify_sdk" private val channelName = "spotify_sdk"
private val loggingTag = "spotify_sdk" private val loggingTag = "spotify_sdk"
// event channels
private var playerContextChannel : EventChannel? = null
private var playerStateChannel : EventChannel? = null
private var capabilitiesChannel : EventChannel? = null
private var userStatusChannel : EventChannel? = null
private var connectionStatusChannel : EventChannel? = null
private val playerContextSubscription = "player_context_subscription"
private val playerStateSubscription = "player_state_subscription"
private val capabilitiesSubscription = "capabilities_subscription"
private val userStatusSubscription = "user_status_subscription"
private val connectionStatusSubscription = "connection_status_subscription"
//connecting
private val methodConnectToSpotify = "connectToSpotify"
private val methodGetAccessToken = "getAccessToken"
private val methodDisconnectFromSpotify = "disconnectFromSpotify"
// connectApi
private val methodSwitchToLocalDevice = "switchToLocalDevice"
//playerApi
private val methodGetCrossfadeState = "getCrossfadeState"
private val methodGetPlayerState = "getPlayerState"
private val methodPlay = "play"
private val methodPause = "pause"
private val methodQueueTrack = "queueTrack"
private val methodResume = "resume"
private val methodSeekToRelativePosition = "seekToRelativePosition"
private val methodSetPodcastPlaybackSpeed = "setPodcastPlaybackSpeed"
private val methodSkipNext = "skipNext"
private val methodSkipPrevious = "skipPrevious"
private val methodSkipToIndex = "skipToIndex"
private val methodSeekTo = "seekTo"
private val methodToggleRepeat = "toggleRepeat"
private val methodToggleShuffle = "toggleShuffle"
private val methodSetShuffle = "setShuffle"
private val methodSetRepeatMode = "setRepeatMode"
//userApi
private val methodAddToLibrary = "addToLibrary"
private val methodRemoveFromLibrary = "removeFromLibrary"
private val methodGetCapabilities = "getCapabilities"
private val methodGetLibraryState = "getLibraryState"
//imagesApi
private val methodGetImage = "getImage"
private val paramClientId = "clientId"
private val paramRedirectUrl = "redirectUrl"
private val paramScope = "scope"
private val paramSpotifyUri = "spotifyUri"
private val paramImageUri = "imageUri"
private val paramImageDimension = "imageDimension"
private val paramPositionedMilliseconds = "positionedMilliseconds"
private val paramRelativeMilliseconds = "relativeMilliseconds"
private val paramPodcastPlaybackSpeed = "podcastPlaybackSpeed"
private val paramTrackIndex = "trackIndex"
private val paramRepeatMode = "repeatMode"
private val paramShuffle = "shuffle"
private val errorConnecting = "errorConnecting" private val errorConnecting = "errorConnecting"
private val errorDisconnecting = "errorDisconnecting" private val errorDisconnecting = "errorDisconnecting"

Loading…
Cancel
Save