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 客户端都能调用。