diff --git a/.gitignore b/.gitignore
index 3101a90..01a7dc4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,38 +1,72 @@
-HELP.md
-target/
-!.mvn/wrapper/maven-wrapper.jar
-!**/src/main/**/target/
-!**/src/test/**/target/
+```
+# Compiled and build artifacts
+*.class
+*.o
+*.obj
+*.exe
+*.dll
+*.so
+*.a
+*.out
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
+# Dependencies
+target/
+.m2/
+.gradle/
+node_modules/
+venv/
+.venv/
+__pycache__/
+.mypy_cache/
+.pytest_cache/
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
+# Logs and temp files
+*.log
+*.tmp
+*.swp
+*.swo
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
+# Environment
+.env
+.env.local
+*.env.*
-### VS Code ###
+# Editors
.vscode/
+.idea/
+*.swp
+*.swo
+
+# OS generated files
+.DS_Store
+Thumbs.db
+
+# Coverage reports
+coverage/
+htmlcov/
+.coverage
-*.mvn
-*.sample
-mvnw
-*.cmd
\ No newline at end of file
+# Package files
+*.zip
+*.gz
+*.tar
+*.tgz
+*.bz2
+*.xz
+*.7z
+*.rar
+*.zst
+*.lz4
+*.lzh
+*.cab
+*.arj
+*.rpm
+*.deb
+*.Z
+*.lz
+*.lzo
+*.tar.gz
+*.tar.bz2
+*.tar.xz
+*.tar.zst
+```
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 1fe14f2..e2ff787 100644
--- a/pom.xml
+++ b/pom.xml
@@ -50,13 +50,36 @@
org.springframework.boot
spring-boot-starter-web
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+
+ org.springframework.ai
+ spring-ai-openai-spring-boot-starter
+
org.springframework.ai
- spring-ai-dashscope-spring-boot-starter
+ spring-ai-transformers-spring-boot-starter
+
org.springframework.ai
- spring-ai-deepseek-spring-boot-starter
+ spring-ai-core
+
+
+
+ org.springframework.boot
+ spring-boot-starter-websocket
+
+
+ org.springframework
+ spring-messaging
org.projectlombok
diff --git a/src/main/java/com/ai/agent/SmartAgentApplication.java b/src/main/java/com/ai/agent/SmartAgentApplication.java
new file mode 100644
index 0000000..902578c
--- /dev/null
+++ b/src/main/java/com/ai/agent/SmartAgentApplication.java
@@ -0,0 +1,13 @@
+package com.ai.agent;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class SmartAgentApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(SmartAgentApplication.class, args);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/ai/agent/controller/McpBaiduMapsController.java b/src/main/java/com/ai/agent/controller/McpBaiduMapsController.java
new file mode 100644
index 0000000..5467332
--- /dev/null
+++ b/src/main/java/com/ai/agent/controller/McpBaiduMapsController.java
@@ -0,0 +1,109 @@
+package com.ai.agent.controller;
+
+import com.ai.agent.mcp.McpServer;
+import com.ai.agent.mcp.model.McpRequest;
+import com.ai.agent.mcp.model.McpResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import reactor.core.publisher.Mono;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/api/baidu-maps")
+public class McpBaiduMapsController {
+
+ @Autowired
+ private McpServer sseMcpServer;
+
+ // Initialize MCP handlers for Baidu Maps service
+ @javax.annotation.PostConstruct
+ public void initBaiduMapsMcpHandlers() {
+ // Handler for geocoding requests
+ sseMcpServer.registerHandler("baidu/maps/geocode", request -> {
+ Map params = (Map) request.getParams();
+ String address = (String) params.get("address");
+ return geocodeAddress(address);
+ });
+
+ // Handler for reverse geocoding requests
+ sseMcpServer.registerHandler("baidu/maps/reverse-geocode", request -> {
+ Map params = (Map) request.getParams();
+ Double lat = ((Number) params.get("latitude")).doubleValue();
+ Double lng = ((Number) params.get("longitude")).doubleValue();
+ return reverseGeocode(lat, lng);
+ });
+
+ // Handler for place search
+ sseMcpServer.registerHandler("baidu/maps/search-place", request -> {
+ Map params = (Map) request.getParams();
+ String query = (String) params.get("query");
+ String city = (String) params.get("city");
+ return searchPlace(query, city);
+ });
+ }
+
+ @PostMapping("/geocode")
+ public Mono