一、MCP到底是什么

不知道你有没有这种感觉——AI模型再强,问它"帮我查一下生产环境的CPU使用率",它也只能摊手说"我做不到"。

强如GPT-4、Claude,写代码、画画、聊天都是一把好手,但一碰到真正执行点事儿,就卡在最后一公里:没法查服务器、没法操作数据库、没法调你写的接口。模型像个"天才哑巴",脑子里有方案,嘴上能说,但手使不上劲。

MCP(Model Context Protocol)就是来解决这个问题的。它是Anthropic在2024年底开源的一个协议,定位是给AI一个标准化的"手",让模型能真正调用外部工具。

1.1 先说官方定义

MCP是一个开放协议,用于让AI模型与外部数据源和工具进行连接。它的核心设计是:Host(宿主)→ MCP Server → Resources/Tools/Prompts

1.2 三个核心概念

Resources(资源)
理解为只读数据。类似于"读取"操作,比如你的数据库schema、配置文件、日志内容。资源是模型可以查询但不能修改的东西。

Tools(工具)
这是MCP最核心的部分。你可以理解成MCP把一个函数暴露给了AI。AI说"帮我查CPU",MCP就调你写的那个get_cpu_usage()函数,返回结果给模型。

Prompts(提示模板)
预定义的提示词,可以带参数。相当于把常用操作封装成模板,AI直接调用。

二、快速上手:写一个自己的MCP Server

光说不练假把式,咱们直接写一个MCP Server。这个Server要干的事儿:AI问天气,我们就调一个真实天气接口返回结果。

2.1 环境准备

# 我用的是Node.js SDK,你也可以用Python SDK
npm install @modelcontextprotocol/sdk

# 全局装个ts-node,方便跑typescript
npm install -g ts-node

2.2 项目结构

weather-mcp-server/
├── src/
│   └── index.ts          # 入口文件
├── package.json
└── tsconfig.json

2.3 最简Server代码

三、踩坑实录

坑1:SSE传输协议版本冲突

SDK 0.6.0默认用streamable-http,但Claude Desktop某些版本只认SSE。解决方案:显式指定SSEServerTransport

import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/SSEServerTransport";
const transport = new SSEServerTransport("/mcp", server);

坑2:返回格式不对

MCP协议严格要求返回content:[{type:"text",text:"..."}]格式,不能用{result:"..."}!SDK静默返回空,白白花了两小时排查。

坑3:数据库连接池泄漏

MCP Server是常驻进程,每次调用new Database()用完不关,连接数很快耗尽。解决方案:单例模式+连接池管理

class DatabaseManager {
  private static pool: Pool | null = null;
  static getPool(): Pool {
    if (!this.pool) {
      this.pool = new Pool({ max: 20, ... });
    }
    return this.pool;
  }
}

四、Java开发者怎么接入MCP

最佳实践是HTTP桥接方案:Node.js快速搭MCP Server做协议层,Java/Python业务专注自身逻辑:

Claude Desktop ←→ MCP Server(Node.js) ←→ HTTP → 你的Java业务系统

五、进阶用法:MCP + RAG

给AI加上实时知识库能力,把文档分块向量化存进向量数据库,写一个MCP Tool接收问题查询向量库返回相关片段,AI结合上下文回答而不是胡说八道。

六、生产环境注意事项

  • 安全第一:MCP工具等同于让AI拥有执行权限,必须做权限校验
  • 超时控制:防止烂SQL把系统拖死
  • 幂等性:相同参数多次调用应产生相同结果
  • 监控:MCP调用量、成功率、延迟要可视化

总结

  1. MCP的本质是给AI装上一双标准化的手,让模型从"能说不能做"变成"能说也能做"
  2. 踩坑最多的是传输层兼容和返回格式,尤其是返回格式,协议要求很严格
  3. 最佳实践是HTTP桥接方案:Node.js快速搭MCP Server兼容协议,Java/Python专注业务逻辑

MCP现在还是早期阶段,生态在快速成长。现在入局,等于是拿到了AI Tool Calling这个赛道的标准制定参与权。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐