MCP:连接AI与外部世界的标准化协议

MCP(Model Context Protocol,模型上下文协议)是一种旨在让大语言模型(LLM)能够安全、标准化地调用外部工具和数据的开放协议。它通过将复杂的API、数据库操作等封装成AI可以理解的“工具”,使得开发者能够通过自然语言指令,驱动AI助手完成诸如数据库查询、API调试、系统运维等一系列原本需要手动编码或切换工具才能完成的任务。本文将介绍MCP的核心概念、应用场景及具体实践方法。

一、MCP的核心概念与价值

MCP协议的核心在于标准化解耦。它定义了一套通用的通信规范,使得任何符合MCP标准的服务器(MCP Server)都可以被任何兼容MCP的客户端(MCP Client)或AI助手(Agent)所使用。

核心组件 角色说明 价值体现
MCP Server 提供具体能力的服务端。它将一个特定的数据源或API(如MySQL数据库、GitHub API、内部系统)封装成一系列标准的“工具”和“资源”。 一次封装,全球可用。开发者无需为每个AI平台重复开发适配插件。
MCP Client 调用MCP Server的客户端。通常是AI应用平台(如Cursor、Dify)或专门的客户端程序,负责与Server建立连接并转发用户/Agent的请求。 为AI助手提供了扩展能力的统一入口,使其能够突破自身知识局限,操作真实世界的数据和系统。
工具 (Tools) Server暴露的可执行操作,例如“查询用户”、“创建工单”。AI助手可以像调用函数一样调用它们。 实现了自然语言到具体API调用的转换,极大降低了使用门槛。
资源 (Resources) Server提供的可读数据,例如“数据库Schema文档”、“API说明文档”。AI助手可以读取它们以获取上下文。 为AI提供了动态的、最新的上下文信息,提升了任务执行的准确性。

MCP的引入,显著减少了开发者在不同工具间切换的认知负担和重复劳动,将自然语言交互的能力直接注入研发、运维等核心工作流,成为AI驱动的研发提效利器。

二、MCP的主要应用场景

  1. 数据库操作:通过mysql-mcp-server等工具,开发者可以直接用自然语言让AI助手查询数据、分析表结构,甚至生成SQL语句并执行。
  2. API集成与调试:将内部或第三方API封装成MCP Server,AI助手即可代为调用、测试并返回结果,简化了API交互流程。
  3. 运维与部署:连接Kubernetes、服务器管理等系统,实现用自然语言进行服务状态检查、日志查询、部署更新等操作。
  4. 扩展AI编程助手:在Cursor、JetBrains IDE等编程工具中配置MCP,使AI助手能够获取项目特定上下文、执行构建命令等,极大提升编码效率。
  5. 构建智能Agent:在Dify等LLM应用开发平台中,通过MCP为Agent赋予使用外部工具的能力,构建能够自主完成复杂工作流的智能体。

三、MCP实践指南

1. 在Cursor中配置与使用MCP

Cursor是集成MCP非常流行的AI编程IDE。配置MCP主要有以下三种方式:

  • 一键安装:对于官方或社区推荐的Server,Cursor提供了一键安装功能。
  • 手动配置:在Cursor设置中,找到MCP Servers配置项,手动添加Server信息。
  • Deeplinks:通过特定格式的链接快速添加。

一个典型的手动配置示例(在Cursor的settings.json中):

{
  "mcpServers": {
    "my-mysql-server": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-mysql"],
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_USER": "root",
        "MYSQL_PASSWORD": "yourpassword",
        "MYSQL_DATABASE": "test_db"
      }
    }
  }
}

配置成功后,你可以在Cursor中直接询问:“请查询users表中最近注册的5个用户”,AI助手会自动调用对应的MCP工具完成操作。

2. 使用Spring AI开发MCP Server与 Client

Spring AI项目提供了对MCP协议的原生支持,方便Java开发者快速构建MCP组件。

(1)MCP Server 开发

首先,在pom.xml中引入依赖:

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-mcp-server</artifactId>
</dependency>

然后,实现一个提供“天气查询”工具的简单Server:

import org.springframework.ai.mcp.server.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class WeatherMcpServerConfig {

    @Bean
    public McpServer weatherMcpServer() {
        return McpServer.builder()
                .name("weather-server")
                .version("1.0.0")
                // 定义一个名为 `get_weather` 的工具 .tool("get_weather", Tool.builder()
                        .description("根据城市名称查询天气")
                        .string("city", Description.of("城市名,如:Beijing"), Required.TRUE)
                        .function(this::getWeather)
                        .build())
                .build();
    }

    // 工具的实际执行逻辑 private String getWeather(String city) {
        // 这里模拟或调用真实天气API return String.format("城市 %s 的天气是晴朗,25摄氏度。", city);
    }
}

application.yml中配置Server端点:

spring:
  ai:
    mcp:
      server:
        enabled: true
        base-url: http://localhost:8080/mcp

启动应用后,一个MCP Server就运行在http://localhost:8080/mcp

(2)MCP Client 开发

Client端用于连接并调用上述Server。引入Client依赖:

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-mcp-client</artifactId>
</dependency>

配置Client并调用工具:

import org.springframework.ai.mcp.client.McpClient;
import org.springframework.ai.mcp.client.McpClientRequest;
import org.springframework.stereotype.Service;

@Service
public class WeatherService {

    private final McpClient mcpClient;

    public WeatherService(McpClient mcpClient) {
        this.mcpClient = mcpClient;
    }

    public String queryWeather(String city) {
        // 构建调用MCP工具的请求
        McpClientRequest request = McpClientRequest.builder()
                .serverUrl("http://localhost:8080/mcp") // MCP Server地址
                .toolName("get_weather") // 要调用的工具名 .argument("city", city) // 传递参数
                .build();
 // 执行调用并返回结果
        return mcpClient.call(request).getContent();
    }
}

3. 在Dify中配置MCP Agent

Dify平台通过“MCP代理策略”插件来扩展Agent的能力。

  1. 安装插件:在Dify工作区设置中,安装“MCP Agent策略”插件。
  2. 配置MCP Server:在插件配置页面,添加你需要连接的MCP Server信息,包括名称、传输方式(stdio或sse)、命令和参数等。
  3. 创建Agent并选择策略:在创建AI Agent时,在“策略”部分选择“MCP Agent策略”,并关联已配置好的MCP Server。
  4. 测试使用:在对话窗口或工作流中,Agent在需要时会自动调用MCP工具。例如,用户说“帮我看看数据库里有没有异常订单”,Agent会自行调用数据库MCP Server进行查询并返回结果。

四、总结与展望

MCP协议通过标准化AI与外部系统的交互方式,正在成为构建下一代智能应用的关键基础设施。它降低了为AI集成工具能力的门槛,让开发者能更专注于业务逻辑而非适配工作。随着Spring AI等主流框架的官方支持,以及Cursor、Dify等平台的深度集成,MCP的生态日益繁荣。未来,我们有望看到更多样化的MCP Server出现,覆盖从研发到运维的每一个环节,真正实现“用自然语言驱动一切”的愿景。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐