Как решить ошибку несколько инструментов с одинаковым именем в MCPJAVA

Программисты JAVA общаются здесь
Anonymous
Как решить ошибку несколько инструментов с одинаковым именем в MCP

Сообщение Anonymous »

Я реализовал два протокола контекста модели Spring AI (MCP), клиент и сервер. В частности, я использовал стандартный клиент MCP с протоколом HTTP SSE и транспортом сервера WebMVC для MCP SEAR. Оба начинаются без проблем. Но когда я отправляю запрос клиенту MCP, я получаю ошибку, подобную нескольким инструментам с тем же именем, найденным в инструментах. Я попытался исключить ssewbfluxtransportautoconfiguration.class и stdiotransportautoconfiguration.class из автоконфигурации Spring AI по умолчанию. У меня все еще есть такая же проблема, даже когда я попробовал с протоколом Webflux.
org.springframework.boot
spring-boot-starter-web


org.springframework.ai
spring-ai-starter-mcp-client


org.springframework.ai
spring-ai-starter-model-ollama


org.springframework.boot
spring-boot-devtools
runtime
true


org.projectlombok
lombok
true


Client Application.properties :
server.port=8080

spring.ai.mcp.client.enabled=true
spring.ai.mcp.client.name=mcp-client
spring.ai.mcp.client.version=1.0.0
spring.ai.mcp.client.request-timeout=30s
spring.ai.mcp.client.type=SYNC
spring.ai.mcp.client.sse.connections.mcp-server.url=http://localhost:8082
spring.ai.mcp.client.toolcallback.enabled=true
spring.ai.ollama.base-url= http://ip_address:port
spring.ai.ollama.chat.options.model= model_version
spring.ai.ollama.chat.temperature= 0.7
spring.ai.ollama.chat.max-tokens= 8192

В моем основном классе я попытался исключить ssewebfluxtransportautoconfiguration и stdiotransportautoconfiguration @SpringBootApplication(
exclude = {
SseWebFluxTransportAutoConfiguration.class,
StdioTransportAutoConfiguration.class
}
)
public class McpclientApplication {
public static void main(String[] args) {
SpringApplication.run(McpclientApplication.class, args);
}
}

server pom.xml :

org.springframework.boot
spring-boot-starter-web


org.springframework.ai
spring-ai-starter-mcp-server-webmvc


org.springframework.boot
spring-boot-devtools
runtime
true


org.springframework.boot
spring-boot-starter-jdbc



org.postgresql
postgresql
runtime



org.projectlombok
lombok
true


Server Application.properties :
spring.application.name=mcp-server
server.port=8082
spring.main.banner-mode=off
logging.file.name=./logs/spring-boot-ai-mcp-server.log

spring.ai.mcp.server.name=mcp-server
spring.ai.mcp.server.version=0.0.1

spring.datasource.url= jdbc:postgresql://ip_address:port/db_name
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.username=
spring.datasource.password=
< /code>
Я попробовал версию Spring Ai 1.0.0 и 1.1.0-snapshot, но у меня все еще есть такая же проблема. < /p>
Я получаю ошибку: < /p>
java.lang.IllegalStateException: Multiple tools with the same name (mcp_client_mcp_server_author2, mcp_client_mcp_server_PostgreSQL, mcp_client_mcp_server_author) found in ToolCallingChatOptions
at org.springframework.ai.model.tool.ToolCallingChatOptions.validateToolCallbacks(ToolCallingChatOptions.java:146) ~[spring-ai-model-1.0.0.jar:1.0.0]
at org.springframework.ai.chat.client.DefaultChatClientUtils.toChatClientRequest(DefaultChatClientUtils.java:106) ~[spring-ai-client-chat-1.0.0.jar:1.0.0]
at org.springframework.ai.chat.client.DefaultChatClient$DefaultChatClientRequestSpec.call(DefaultChatClient.java:905) ~[spring-ai-client-chat-1.0.0.jar:1.0.0]
at com.mcpclient.mcpclient.service.ChatService.askQuestion(ChatService.java:65) ~[classes/:na]
at com.mcpclient.mcpclient.controller.ChatController.processPromptStreaming(ChatController.java:48) ~[classes/:na]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258) ~[spring-web-6.2.8.jar:6.2.8]


Подробнее здесь: https://stackoverflow.com/questions/796 ... ame-in-mcp

Вернуться в «JAVA»