【MCP】详细了解MCP协议:和function call的区别何在?如何使用MCP?

【MCP】详细了解MCP协议:和function call的区别何在?如何使用MCP?

本文介绍了MCP大模型上下文协议的的概念,并对比了MCP协议和function call的区别,同时用python sdk为例介绍了mcp的使用方式。

1. 什么是MCP?

官网:https://modelcontextprotocol.io/introduction

2025年,Anthropic提出了MCP协议。MCP全称为Model Context Protocol,翻译过来是大模型上下文协议。这个协议的主要为AI大模型和外部工具(比如让AI去查询信息,或者让AI操作本地文件)之间的交互提供了一个统一的处理协议。我们常用的USB TypeC接口(USB-C)统一了USB接口的样式,MCP协议就好比AI大模型中的USB-C,统一了大模型与工具的对接方式。

MCP协议采用了C/S架构,也就是服务端、客户端架构,能支持在客户端设备上调用远程Server提供的服务,同时也支持stdio流式传输模式,也就是在客户端本地启动mcp服务端。只需要在配置文件中新增MCP服务端,就能用上这个MCP服务器提供的各种工具,大大提高了大模型使用外部工具的便捷性。

image.png

MCP是开源协议,能让所有AI厂商、AI工具都将MCP集成到自己的客户端中,从而扩大MCP的可用面。毕竟只有用的人越多,协议才能不断发展,不断变得更好。

2. 了解function call

在MCP没有出来之前,我们的AI Agent开发如果想调用外部工具需要针对不同的AI大模型SDK编写不同的代码,其中最为常用的是openai提供的function call的处理逻辑。

本小节参考博客:

2.1. function call demo

2.1.1. 配置工具,AI提供参数

当我们调用 OpenAI Chat Completions 接口时,可以通过tools参数传入可供使用的外部工具。这个工具的调用中就包含了工具的作用,工具需要传入的参数,以及参数的释义。其中tool_choice字段设置为auto代表让大模型自动选择tools,设置为none时不会调用外部工具。

{ "tool_choice":"auto","messages":[{ "role":"system","content":"你是一个天气查询助手"},{ "role":"user","content":"帮我查询上海的天气"}],"tools":[{ "type":"function","function":{ "name":"get_weather","description":"获取指定城市的天气","parameters":{ "type":"object","properties":{ "city":{ "type":"string","description":"城市名"}},"required":["city"],}}}]}

对应的python openai代码如下,我们将tools部分放入一个包含dict的list,作为create函数的tools参数即可。同时tool_choice传入auto代表自动选择工具。这里我用了硅基流动提供的Qwen2.5模型作为演示,运行下面这个代码需要修改api_key为正确值。

import openai # 1.75.0import json # 后续会用到jsondefmain(): client = openai.OpenAI( api_key="xxxxx", base_url="https://api.siliconflow.cn/v1") tools =[{ "type":"function","function":{ "name":"get_weather","description":"获取指定城市的天气","parameters":{ "type":"object","properties":{ "city":{ "type":"string","description":"城市名"}},"required":["city"],}}}] res = client.chat.completions.create(model="Qwen/Qwen2.5-32B-Instruct", messages=[{ "role":"system","content":"你是一个天气查询助手"},{ "role":"user","content":"帮我查询上海的天气"}], tools=tools, tool_choice="auto")print("content:",res.choices[0].message.content)print("tools:",res.choices[0].message.tool_calls)print("message:", res.choices[0].message.to_dict())

运行程序,发出请求后,大模型就会根据用户提出的问题和提供的tools,来为这个tools编写需要提供的参数。此时content会是空,不会输出内容,tool_calls中会包含调用的工具和参数。

❯ uv run main.py content: tools: [ChatCompletionMessageToolCall(id='01964be6e485603d6a2a0acbbc7eba91', function=Function(arguments='{"city": "上海"}', name='get_weather'), type='function')] message: {'content': '', 'role': 'assistant', 'tool_calls': [{'id': '01964be6e485603d6a2a0acbbc7eba91', 'function': {'arguments': '{"city": "上海"}', 'name': 'get_weather'}, 'type': 'function'}]} 

对应如下json格式响应,包含了我们的参数

"message":{ "role":"assistant","content":"","tool_calls":[{ "id":"01964be6e485603d6a2a0acbbc7eba91","type":"function","function":{ "name":"get_weather","arguments":"{\n \"city\": \"上海\"\n}"}}]}
2.1.2. 调用工具并让AI二次处理

随后,我们就可以根据这个大模型返回的参数来调用我们的函数,并得到函数的返回结果,再次与大模型进行对话。此时需要按下面的方式维护对话上下文,首先需要将第一次请求AI返回的结果插入到上下文中("role": "assistant"的json字符串),然后再插入工具调用的数据,格式如下:

{ "role":"tool",

Read more

猫头虎AI分享|可把GitHub代码库变成实时文档中心的一款实用型MCP工具:GitMCP,让AI随时访问最新文档代码,消除代码幻觉

猫头虎AI分享|可把GitHub代码库变成实时文档中心的一款实用型MCP工具:GitMCP,让AI随时访问最新文档代码,消除代码幻觉

猫头虎AI分享|可把GitHub代码库变成实时文档中心的一款实用型MCP工具:GitMCP,让AI随时访问最新文档代码,消除代码幻觉 背景 随着人工智能(AI)在编程领域的广泛应用,近期GitHub CEO辞职,GitHub独立时代结束,GitMCP AI助理的智能能力可以提高开发者的工作效率。然而,随着代码量的增加和技术栈的不断发展,AI助理在访问和理解不同项目的代码时,常常会发生“代码幻觉”现象,即 AI 给出的答案可能不准确或者与当前项目的实际实现不符。这种现象尤其在没有实时访问代码库的情况下更加严重。 为了解决这个问题,GitMCP应运而生,它是一个基于Model Context Protocol (MCP) 的开源工具,能够帮助AI助手实时获取GitHub上的最新代码和文档,确保AI助手能够精确、可靠地回答问题,避免代码幻觉的发生。 文章目录 * 猫头虎AI分享|**可把GitHub代码库变成实时文档中心的一款实用型MCP工具:GitMCP,让AI随时访问最新文档代码,消除代码幻觉** * 背景 * GitMCP概述 * GitMCP的

By Ne0inhk
国产七大AI模型哪家强?DeepSeek、豆包、Kimi、智谱清言、通义千问深度解析!

国产七大AI模型哪家强?DeepSeek、豆包、Kimi、智谱清言、通义千问深度解析!

全球AI竞赛激烈,国内AI领域也进入白热化阶段。 Kimi、智谱清言、通义千问、文心一言、豆包、天工AI、讯飞星火这七款模型,在长文本处理、多模态交互、行业应用等赛道各展所能,竞争激烈。 下面,我们来详细梳理它们的优势与不足,帮你找到最适合的AI助手。 七款大模型实力盘点 1、 Kimi(月之暗面) 长处 处理长文档能力极为出色,能支持长达20万字的文本。面对长篇学术著作、复杂法律条文和冗长项目报告,它都能精准梳理,通过强大的上下文理解能力,把握整体逻辑与细节,在文献解析和知识推理方面实力超群。 * 学术研究人员借助Kimi,可快速梳理海量文献,提炼关键信息,助力论文撰写与研究思路搭建; * 法律从业者使用它,能在短时间内完成大量合同、法规的筛查,精准定位风险点。 不足 * 多模态功能有所欠缺,处理图片、音频等非文本信息时表现欠佳; * 实时信息更新不够及时,难以满足对信息及时性要求高的场景; * 在专业领域,术语库不够丰富,回答特定专业问题时精准度有待提高。 (图源:https://kimi.moonshot.

By Ne0inhk

30分钟极速改造:让小爱音箱拥有高级AI智能的完整指南

30分钟极速改造:让小爱音箱拥有高级AI智能的完整指南 【免费下载链接】mi-gpt🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。 项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt 还在为小爱音箱的机械式回答感到失望吗?想要打造一个真正理解你需求的智能语音助手吗?本指南将带你通过MiGPT项目,在30分钟内将普通小爱音箱升级为拥有高级AI对话能力的语音助手,彻底改变你的智能家居体验。 改造前的准备工作 在开始改造之前,需要确认你的设备和环境是否满足要求。不同型号的小爱音箱在功能支持上有所差异: 支持程度设备型号连续对话推荐配置参数✅ 完美适配小爱音箱Pro (LX06)支持tts:[5,1], wake:[5,3]✅ 完全兼容小米AI音箱第二代 (L15A)支持tts:[7,3], wake:[7,1]🚗 基础可用小爱音箱Play增强版 (L05C)不支持tts:[5,3], wake:[5,1]

By Ne0inhk

【OpenClaw】揭秘 Secure DM Pairing:如何为你的 AI 机器人构建安全私信访问机制

【OpenClaw】揭秘 Secure DM Pairing:如何为你的 AI 机器人构建安全私信访问机制 在构建基于 LLM 的聊天机器人(如 Telegram、WhatsApp Bot)时,如何控制谁能与机器人对话是一个核心安全问题。直接开放访问可能导致 Token 滥用,而手动配置白名单又过于繁琐。 OpenClaw 提供了一套优雅的解决方案,称为 “Secure DM Pairing” (安全私信配对)。本文将深入解析这套机制的运作流程、使用指令以及底层的代码实现。 注意本文基于 OpenClaw v2026.1.29 版本源码分析。 1. 什么是 Secure DM Pairing? Secure DM Pairing 是 OpenClaw 网关默认的一种访问控制策略。 当一个未授权的用户首次通过私信(Direct Message)

By Ne0inhk