国内首家,百度地图核心 API 全面兼容 MCP 协议

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

目前,百度地图已经完成了8个核心API接口和MCP协议的对接, 涵盖逆地理编码、地点检索、路线规划等。作为国内首家支持MCP协议的地图服务商,百度地图MCP Server发布后,开发者仅需简单配置,就可以在大模型中快速接入地图服务,实现查找周边地点、规划出行路线等能力,大幅降低了智能体应用开发过程中调用地图服务相关能力的门槛,显著提升了智能体应用的开发效率。

MCP协议是什么?

随着Agent应用的迅速推广,开发者在工具开发以及接入环节普遍遭遇一系列难题:工具开发缺少统一规范,导致开发效率不高;反复适配各类不同平台,使得开发成本上升且耗时增加;开源社区里的组件质量良莠不齐,对高质量工具进行整合与维护常常要耗费大量时间精力。MCP协议正是在这一背景下应运而生,为行业带来了新的解决思路和价值。

MCP(Model Context Protocol)协议是由Anthropic推出的业界领先的开放标准,旨在构建大模型与数据源之间的安全双向链接,解决了社区中工具实现风格不统一、难以跨模型共享的问题。

百度地图MCP Server的核心价值

在这里插入图片描述

  • 更快捷的工具开发与服务集成:支持开发者使用百度地图MCP Server,快速实现地图智能体应用的开发;一次接入,即可使您的智能体应用具备识别地图场景的能力,为用户提供实时出行规划、地点问询、天气查询等功能,相比传统的API调用极大简化了智能体开发流程。
  • 丰富的场景应用与行业方案: 开发者在智能体应用的开发过程中,可轻松通过百度地图MCP Server调起地图能力,满足用户在各类出行场景中的需求。在旅游、智能穿戴、物流等行业中,能快速构建智能体应用,帮助开发者准确识别地图场景需求、调起地图工具。

百度地图MCP Server功能列表

在这里插入图片描述

实操案例1

目标

使用Claude集成百度地图MCP Server,构建一个旅游行程规划小助手。

步骤

  1. 打开Claude的Setting菜单,切换到Developer选项卡,点击"Edit Config",用任意的文本编辑器软件打开配置文件。

    在这里插入图片描述
  2. 将以下配置添加到配置文件中,BAIDU_MAP_API_KEY 是访问百度地图开放平台API的AK,可根据此页面申请获取:https://lbs.baidu.com/faq/search?id=299&title=677
    在这里插入图片描述
{
    "mcpServers": {
        "baidu-map": {
            "command": "npx",
            "args": [
                "-y",
                "@baidumap/mcp-server-baidu-map"
            ],
            "env": {
                "BAIDU_MAP_API_KEY": "xxx"
            }
        }
    }
}
  1. 重启Claude,此时设置面板已经成功加载了百度地图MCP Server。在软件主界面对话框处可以看到有8个可用的MCP工具,点击可以查看详情。

在这里插入图片描述
在这里插入图片描述
4. 接下来就可以进行提问,验证行程规划小助手的能力了。

效果展示

在这里插入图片描述

除了Claude等平台,百度智能云千帆AppBuilder也已经全面兼容了MCP协议。

开发者可以通过千帆AppBuilder,让应用轻松调用地图服务,通过下面这个案例我们一起来看看吧!

实操案例2

百度智能云千帆 AppBuilder 是企业级大模型应用开发平台,预置了 RAG、Agent、工作流等大模型应用开发工具链,在能源、制造、教育、企业服务等行业加速企业级大模型应用落地,提效大模型应用落地最后一公里。

千帆AppBuilder目前同样兼容了MCP协议,是国内首家兼容该协议的大模型应用开发平台,支持MCP Server通过SDK或API接入。

例如在下面这个案例中,用户可以通过千帆AppBuilder构建一个“地图导航”大模型应用,调用百度地图 Python MCP Tool,即可在千帆AppBuilder中体验百度地图能力。

可参考下方模板代码,通过SDK Agent & 地图 MCP Server,即可获得导航路线、路线信息与出行建议。

更多信息,欢迎查阅:https://cloud.baidu.com/doc/AppBuilder/s/Um88v68dn

Agent配置

通过千帆AppBuilder构建大模型应用,在“模型配置”中,将Agent的“最大思考次数”调整到6轮,然后发布应用。同时,千帆AppBuilder也接入了DeepSeek模型,也可以实现通过DeepSeek模型接入百度地图的地图MCP Server,提升应用问答效果。
在这里插入图片描述

调用

千帆AppBuilder上的应用拥有一个独立的app_id,在python文件中调用对应的app_id,即可调用百度地图 Python MCP Tool。

此代码可以当作模板,以SDK的形式调用千帆AppBuilder上已经构建好且已发布的应用,再将MCP Server下载至本地,将文件相对路径写入代码即可。

(注意:使用实际的app_id、token、query、mcp文件)

import os
import asyncio

import appbuilder
from appbuilder.core.console.appbuilder_client.async_event_handler import (
    AsyncAppBuilderEventHandler,
)

from appbuilder.modelcontextprotocol.client import MCPClient


class MyEventHandler(AsyncAppBuilderEventHandler):
    def __init__(self, mcp_client):
        super().__init__()
        self.mcp_client = mcp_client

    def get_current_weather(self, location=None, unit="摄氏度"):
        return "{} 的温度是 {} {}".format(location, 20, unit)

    async def interrupt(self, run_context, run_response):
        thought = run_context.current_thought
        # 绿色打印
        print("\033[1;31m", "-> Agent 中间思考: ", thought, "\033[0m")

        tool_output = []
        for tool_call in run_context.current_tool_calls:
            tool_res = ""
            if tool_call.function.name == "get_current_weather":
                tool_res = self.get_current_weather(**tool_call.function.arguments)
            else:
                print(
                    "\033[1;32m",
                    "MCP工具名称: {}, MCP参数:{}\n".format(tool_call.function.name, tool_call.function.arguments),
                    "\033[0m",
                )
                mcp_server_result = await self.mcp_client.call_tool(
                    tool_call.function.name, tool_call.function.arguments
                )
                print("\033[1;33m", "MCP结果: {}\n\033[0m".format(mcp_server_result))
                for i, content in enumerate(mcp_server_result.content):
                    if content.type == "text":
                        tool_res += mcp_server_result.content[i].text
            tool_output.append(
                {
                    "tool_call_id": tool_call.id,
                    "output": tool_res,
                }
            )
        return tool_output

    async def success(self, run_context, run_response):
        print("\n\033[1;34m", "-> Agent 非流式回答: ", run_response.answer, "\033[0m")

async def agent_run(client, mcp_client, query):
    tools = mcp_client.tools

    conversation_id = await client.create_conversation()
    with await client.run_with_handler(
        conversation_id=conversation_id,
        query=query,
        tools=tools,
        event_handler=MyEventHandler(mcp_client),
    ) as run:
        await run.until_done()

### 用户Token
os.environ["APPBUILDER_TOKEN"] = (
    ""
)

async def main():
    appbuilder.logger.setLoglevel("DEBUG")
    ### 发布的应用ID
    app_id = ""
    appbuilder_client = appbuilder.AsyncAppBuilderClient(app_id)
    mcp_client = MCPClient()
    
    ### 注意这里的路径为MCP Server文件在本地的相对路径
    await mcp_client.connect_to_server("./<YOUR_FILE_PATH>/map.py")
    print(mcp_client.tools)

    await agent_run(
        appbuilder_client,
        mcp_client,
        '开车导航从北京到上海',
    )

    await appbuilder_client.http_client.session.close()


if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())

效果展示

Agent自主进行思考,通过调用MCP Server 地点检索、地理编码服务、路线规划服务等多个tool,拿到导航路线及路线信息,并给出出行建议。

实际用户请求:“请为我计划一次北京赏花一日游。尽量给出更舒适的出行安排,当然,也要注意天气状况。”

思考过程展示
在这里插入图片描述

Agent结果展示
在这里插入图片描述

百度地图MCP Server开发文档已经上线,欢迎您访问百度地图开放平台官网(https://lbs.baidu.com/faq/api?title=mcpserver/base),了解详情。

未来,百度地图将持续加大对MCP协议的支持,推动更多地图服务接口兼容MCP协议,繁荣MCP生态,为行业提供更加高效、智能的地图服务,不断赋能开发者创新。

### 如何在Spring Boot项目中通过本地MCP调用百度API 要在Spring Boot项目中通过本地MCP(假设为某种微服务控制平面或代理层)调用百度API,通常需要完成以下几个方面的设计与实现: #### 1. 配置Spring Boot项目 创建一个新的Spring Boot项目并引入必要的依赖项。可以通过`pom.xml`文件中的Maven依赖管理工具来添加所需的库[^1]。 ```xml <dependencies> <!-- Spring Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- HTTP Client (e.g., OkHttp or RestTemplate) --> <dependency> <groupId>org.apache.httpcomponents.client5</groupId> <artifactId>httpclient5</artifactId> </dependency> </dependencies> ``` #### 2. 设置百度API密钥和URL 百度提供了多种开放接口,例如自然语言处理、图像识别等。为了能够正常调用这些API,需先申请相应的API Key和Secret Key,并将其存储于项目的配置文件中(如`application.properties`或`application.yml`)。以下是示例配置: ```properties baidu.api.key=your_api_key_here baidu.api.secret=your_secret_key_here baidu.api.url=https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=${baidu.api.key}&client_secret=${baidu.api.secret} ``` #### 3. 实现HTTP请求逻辑 利用Spring框架内置的`RestTemplate`或者第三方库(如OkHttp),向百度服务器发送认证请求获取Access Token。随后可使用该Token发起具体功能调用。 ```java @Service public class BaiduApiService { @Value("${baidu.api.url}") private String baiduAuthUrl; public String getAccessToken() { RestTemplate restTemplate = new RestTemplate(); ResponseEntity<Map> responseEntity = restTemplate.getForEntity(baiduAuthUrl, Map.class); if(responseEntity.getStatusCode().is2xxSuccessful()) { Map<String, Object> responseBody = responseEntity.getBody(); return (String)responseBody.get("access_token"); } else { throw new RuntimeException("Failed to obtain access token from Baidu API."); } } public String callBaiduApi(String accessToken, String endpoint, MultiValueMap<String, String> params){ HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(params); RestTemplate restTemplate = new RestTemplate(); String apiUrl = "https://aip.baidubce.com/rest/2.0/" + endpoint + "?access_token=" + accessToken; ResponseEntity<String> responseEntity = restTemplate.postForEntity(apiUrl, requestEntity, String.class); return responseEntity.getBody(); } } ``` 上述代码片段展示了如何封装一个通用方法用于调用不同类型的百度云服务端点[^3]。 #### 4. MCP的作用与集成方式 如果存在所谓的"MCP"(Microservice Control Plane),则可能作为一层中间件存在于应用和服务提供商之间。它负责路由转发、负载均衡以及安全策略实施等功能。对于这种情况下的开发流程来说,主要区别在于实际发出网络请求的目标地址不再是直接指向百度官方网关而是经过了内部部署好的MCP实例;同时还需要遵循其特定协议格式传递参数数据结构等等额外约束条件[^2]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值