MCP解决什么问题?

假设你做了一个工具:查询模型信息。

功能很简单:输入模型名,返回模型路径、输入尺寸、类别数、推荐 net-scale-factor

核心逻辑可能只有一份:

def get_model_info(model_name):

if model_name == "resnet18_trafficcamnet":

return {

"onnx": "/opt/nvidia/deepstream/deepstream/samples/models/Primary_Detector/resnet18_trafficcamnet_pruned.onnx",

"input_shape": "3x544x960",

"num_classes": 4,

"net_scale_factor": 0.00392156862745098,

}

但如果没有统一协议,你要给不同 Agent 框架分别包一层。

LangChain 可能要这样包装:

from langchain.tools import tool

@tool

def get_model_info_tool(model_name: str) -> dict:

return get_model_info(model_name)

Semantic Kernel 可能要这样包装:

from semantic_kernel.functions import kernel_function

class ModelPlugin:

@kernel_function

def get_model_info(self, model_name: str) -> str:

return json.dumps(get_model_info(model_name))

OpenAI function calling 可能还要写 JSON schema:

{

"name": "get_model_info",

"parameters": {

"type": "object",

"properties": {

"model_name": { "type": "string" }

},

"required": ["model_name"]

}

}

某个云厂商 Agent 平台可能又要求你写成 REST API:

POST /tools/get_model_info

{

"model_name": "resnet18_trafficcamnet"

}

问题是:底层功能都一样,但每个平台都要一层不同的适配代码。这就是“重复开发适配层”。MCP 想解决的就是这类问题:把工具用统一协议暴露出来,让不同 Agent 客户端都能调用。

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐