返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

推荐支持MCP的六大AI框架

[复制链接]
链载Ai 显示全部楼层 发表于 昨天 18:08 |阅读模式 打印 上一主题 下一主题



01


引言



AI智能体工具包为开发者提供了多样化的API接口,旨在为AI解决方案配备执行任务所需的工具,并确保输出结果的准确性以满足用户需求。然而,将这些工具集成至AI应用程序并进行有效管理往往面临诸多混乱。本文将通过模型上下文协议(MCP),向大家介绍为大型语言模型和智能体提供上下文的行业标准实践。

闲话少说,我们直接开始吧!






02

LLM上下文规范

默认情况下,如果不为LLM(大语言模型)和AI聊天机器人提供适当的上下文,它们将无法获取实时信息、执行代码、调用外部工具和API,甚至无法代表用户使用浏览器。开发者可以采用以下方法来解决LLM和智能体的这一局限性。

  • Composio

ingFang SC", system-ui, -apple-system, "Segoe UI", Rototo, Helvetica, Arial, sans-serif; font-size: 15px;">Composio 提供了一套规范和工具库,用于集成AI智能体和LLM。除了现成的工具库外,Composio 近期还推出了Composio MCP,使开发者能够连接100多个支持MCP的IDE服务器。通过下述链接,

链接:https://composio.dev/

ingFang SC", system-ui, -apple-system, "Segoe UI", Rototo, Helvetica, Arial, sans-serif; font-size: 15px;">大家可以查看Composio MCP 工具分类,并在支持MCP的IDE(如Cursor、Claude和Windsurf)中将多个应用集成到您的项目中。

  • ingFang SC", system-ui, -apple-system, "Segoe UI", Rototo, Helvetica, Arial, sans-serif;">Agents.json

ingFang SC", system-ui, -apple-system, "Segoe UI", Rototo, Helvetica, Arial, sans-serif; font-size: 15px;">Agents.json 是基于OpenAI标准构建的规范,旨在优化AI智能体与API及外部工具的交互体验。尽管Agents.json是一个优秀的规范,但它的普及度远不如MCP,目前尚未被广泛采用。

链接:https://github.com/wild-card-ai/agents-json

ingFang SC", system-ui, -apple-system, "Segoe UI", Rototo, Helvetica, Arial, sans-serif; font-size: 15px;">大家可以参考其GitHub仓库了解更多信息并开始使用。

ingFang SC", system-ui, -apple-system, "Segoe UI", Rototo, Helvetica, Arial, sans-serif;">3. MCP(模型上下文协议)

ingFang SC", system-ui, -apple-system, "Segoe UI", Rototo, Helvetica, Arial, sans-serif; font-size: 15px;">MCP 为开发者提供了最佳方式,能够向LLM和AI助手提供上下文数据以解决问题。例如,我们可以搭建一个MCP文档服务器,让IDE和智能体框架(类似于llms.txt文件的方式)完整访问我们的文档。

ingFang SC", system-ui, -apple-system, "Segoe UI", Rototo, Helvetica, Arial, sans-serif; font-size: 15px;">





03


什么是MCP?

可以将MCP视为大语言模型(LLM)的第三次演进。在第一次进化阶段,LLM仅能基于训练数据中的信息准确回答用户提问,若遇到训练数据之外的查询,它们便无法给出有效回应,因为此时LLM尚未具备调用外部工具的能力。到了第二次进化阶段,我们为LLM提供了额外的上下文(工具),虽然这些工具的交互方式并不直观,但已能帮助LLM更精准地预测和响应用户意图。而第三次进化依然由LLM和工具构成,但这次我们构建了完善的底层架构,使其不仅能接入外部应用程序,还能确保整个系统的可维护性。
在构建AI服务时,大家的企业数据可能存储在云端——比如用于处理客户支持工单的AI助手应用。MCP是Anthropic推出的开源协议,可帮助企业数据与AI系统建立连接。
该协议提供了一种标准化方式,能够将内容存储库(GitHub、Notion)、开发环境、网络资源及商业工具与辅助型AI技术进行对接。目前最受欢迎且持续增长的MCP应用场景当属AI辅助编程:通过与Cursor、Windsurf等数百个开发环境和工具的MCP集成,开发者可以实现与外部应用程序的交互式开发。
注:本文重点讲解如何为基于Python/TypeScript开发的AI助手和智能体系统实现MCP集成,而非IDE环境下的MCP对接方案。






04


MCP工作原理


在大语言模型(LLM)和智能体的应用场景中,MCP能够帮助它们对超出内置知识范围的用户查询作出有效响应。例如,当您要求ChatGPT向特定Slack频道发送消息、查看日历空闲时间并安排今日团队会议时,ChatGPT的回应往往会令人失望——因为它无法直接访问这些应用程序。而MCP的实施则能让这些智能助手输出真正可用的结果。

开发者最常提出的第一个问题是:MCP如何运作?

MCP的基本操作方式是:用户向智能体发送查询,智能体随后决定调用哪个MCP服务器和工具,以获取相关信息用于完成任务。智能体再利用来自特定工具的数据,向用户提供响应。

那么为什么需要将MCP用于AI Agent ?

MCP正逐渐成为开发者构建AI系统的行业标准,使这些系统能够高效对接各类外部应用程序。微软近期宣布在Copilot Studio中集成MCP协议,大幅简化了AI应用和智能体调用工具的过程。无独有偶,OpenAI也宣布在其全线产品(包括智能体开发套件和ChatGPT桌面应用)中支持MCP协议。

虽然直接为AI助手配备工具并无不妥,但对于包含多个子智能体、需并行处理邮件收发、网络爬取、财务分析、实时天气查询等复杂任务的AI系统而言,这种直接集成方式会显得异常笨拙。




05
具备工具集成的AI Agent


在上图中,有三个外部工具连接至大语言模型(LLM)。如果工具数量增加到100个以上,管理和保障其安全性将变得令人头疼。
改进方案是通过MCP注册中心统一访问这些工具(甚至超过100个),如下所示。
在这张图中,我们将智能体系统所需的工具整合起来,并通过MCP服务器统一访问,从而提供更连贯的用户体验。MCP方案通过集中化管理,使这些工具的安全维护和操作管理变得更加便捷。






06
使用MCP的优势

相较于传统将工具集成到AI智能体的方式,MCP具有多项关键优势。例如,没有MCP的工具集成可靠性值得怀疑,因为在对外部应用程序进行多次API调用时,可能会由于AI基础设施不兼容而导致多种错误。在引入MCP之前,每个希望添加到智能体的工具都必须使用自定义代码实现,通常需要数周时间。

  • 架构:与为AI智能体预构建的工具规范不同,MCP具有一种清晰且灵活的架构,便于与工具和API交互。
  • 改进的外部工具访问与管理:它通过标准化接口为AI模型提供工具访问,弥合了LLMs与第三方系统交互之间的通信差距。
  • 解决独立工具实现的限制:MCP工具适用于单用户场景和团队合作。
  • 社区驱动:MCP拥有许多开源服务器和开发者生态系统,在开发者社区中被广泛采用,适用于多种用例。
  • 身份验证:它具有强大的内置认证和权限系统,用于控制工具访问。例如,使用Composio提供的MCP工具时,可以通过Google Sheets或Gmail对用户进行身份验证。
  • 工具搜索:与传统的安装、配置和集成工具到AI聊天机器人方式不同,MCP使查找和寻找外部工具变得更加简单。
  • 可扩展性:MCP能轻松扩展到大量用户和应用场景。
  • 行业标准:虽然可以安装硬编码工具以为AI应用提供上下文,但MCP提供了行业标准,帮助智能体和LLMs获取所需的上下文信息。




07


不同的MCP服务类型

Anthropic 的 MCP 规范提供了两种服务器形式,用于向智能体和 AI 项目添加工具。这些 MCP 服务器连接类型包括以下两种:
  • ingFang SC", system-ui, -apple-system, "Segoe UI", Rototo, Helvetica, Arial, sans-serif; font-size: 15px; letter-spacing: normal; text-align: start;">服务器推送事件 (SSE):通过 HTTP 连接到远程服务。

  • ingFang SC", system-ui, -apple-system, "Segoe UI", Rototo, Helvetica, Arial, sans-serif; font-size: 15px; letter-spacing: normal; text-align: start;">标准输入输出 (STDIO):允许执行本地命令并通过标准输入/输出进行通信。

大家选择的 AI 应用开发框架会提供连接这些服务器所需的类。






08


不同的MCP工具库


一些开源的托管MCP工具库旨在增强大型语言模型(LLMs)和智能体的能力,确保它们生成的响应更可靠。这些托管的MCP工具库被称为注册中心(registries),提供经过策划的服务集合。大家可以使用它们的工具将紫霞的AI应用连接到以下注册中心。此外,还可以选择不同的服务器类型,例如uvx,它由基于Python的工具组成,无需安装。此外,还有用于运行MCP工具的Docker选项,以及需要安装Node.js的npx基础服务器。
  • GitHub上的MCP服务器:由社区构建的服务器集合,包含额外的MCP资源。

链接:https://github.com/modelcontextprotocol/servers

  • Glama Registry:面向开发者的生产就绪、开源的MCP服务器。

链接:https://glama.ai/mcp/servers

  • Smithery Registry:通过Smithery,开发者可以访问超过2000个MCP服务器,增强AI代理和LLMs的能力。

smithery链接: https://smithery.ai/

  • OpenTools:提供用于MCP工具的生成式API。你可以访问数百个现成的MCP工具,用于你的AI项目。通过OpenTools API,开发者可以扩展LLMs的网页搜索能力、实时获取位置信息和网页抓取功能。该API支持Curl、Python和TypeScript。请访问OpenTools快速指南以开始使用该API。

opentools官网:https://opentools.com/

示例如下:

  • PulseMCP Registry:使用PulseMCP,你可以浏览托管的MCP工具和应用案例,支持你的AI项目。还可以查看PulseMCP新闻,了解最新趋势的MCP服务器和应用。

官网链接:https://www.pulsemcp.com/

  • mcp.run:该注册中心为开发者提供数百个MCP应用,用于商业用途。

官网链接:https://www.mcp.run/

  • Composio Registry:Composio的基于SSE的MCP服务器,便于将工具与不同的AI框架集成,构建应用。

官网链接:https://mcp.composio.dev/

  • guMCP:Gumloop的guMCP提供免费、开源、全托管的MCP服务器,便于与任何AI应用无缝集成。

官网链接:https://www.gumloop.com/mcp






09


使用OpenAI Agents SDK构建MCP智能体

虽然MCP已经成为一个热词,且所有开发者社区近期都在讨论它,但要知道使用哪些MCP客户端框架以实现与AI应用和代理的集成并不容易。我们进行了调研,发现以下在Python和TypeScript基础上用于智能体工作流和AI助手的领先MCP客户端平台。

注意:以下内容展示了在构建AI解决方案的框架中实现MCP的方法。

  • 构建Git MCP智能体

使用OpenAI Agents SDK构建智能体时,大家可以通过SDK的MCPServerStdio和MCPServerSse类连接到这些由社区开发的MCP服务器。以下的MCP智能体示例实现会访问你本地Git仓库的根目录,并对用户关于该仓库的查询作出响应。

importasyncioimportshutilimportstreamlitasstfromagentsimportAgent,Runner,tracefromagents.mcpimportMCPServer,MCPServerStdioasyncdefquery_git_repo(mcp_server:MCPServer,directory_path:str,query:str):agent=Agent(name="Assistant",instructions=f"Answerquestionsaboutthelocalgitrepositoryat{directory_path},usethatforrepo_path",mcp_servers=[mcp_server],)withst.spinner(f"Runningquery:{query}"):result=awaitRunner.run(starting_agent=agent,input=query)returnresult.final_outputasyncdefrun_streamlit_app():st.title("LocalGitRepoExplorer")st.write("Thisappallowsyoutoqueryinformationaboutalocalgitrepository.")directory_path=st.text_input("Enterthepathtothegitrepository:")ifdirectory_path:#Commonqueriesasbuttonscol1,col2=st.columns(2)withcol1:ifst.button("Mostfrequentcontributor"):query="Who'sthemostfrequentcontributor?"run_query(directory_path,query)withcol2:ifst.button("Lastchangesummary"):query="Summarizethelastchangeintherepository."run_query(directory_path,query)#Customquerycustom_query=st.text_input("Orenteryourownquery:")ifst.button("RunCustomQuery")andcustom_query:run_query(directory_path,custom_query)defrun_query(directory_path,query):ifnotshutil.which("uvx"):st.error("uvxisnotinstalled.Pleaseinstallitwith`pipinstalluvx`.")returnasyncdefexecute_query():asyncwithMCPServerStdio(cache_tools_list=True,params={"command":"python","args":["-m","mcp_server_git","--repository",directory_path]},)asserver:withtrace(workflow_name="MCPGitQuery"):result=awaitquery_git_repo(server,directory_path,query)st.markdown("###Result")st.write(result)asyncio.run(execute_query())if__name__=="__main__":st.set_page_config(page_title="LocalGitRepoExplorer",page_icon="?",layout="centered")#Changefromasynctosynchronousimplementation#SinceStreamlitdoesn'tworkwellwithasynciointhemainthread#Defineasynchronousversionofourappdefmain_streamlit_app():st.title("LocalGitRepoExplorer")st.write("ThisappallowsyoutoqueryinformationaboutaGitrepository.")directory_path=st.text_input("Enterthepathtothegitrepository:")ifdirectory_path:#Commonqueriesasbuttonscol1,col2=st.columns(2)withcol1:ifst.button("Mostfrequentcontributor"):query="Who'sthemostfrequentcontributor?"run_query(directory_path,query)withcol2:ifst.button("Lastchangesummary"):query="Summarizethelastchangeintherepository."run_query(directory_path,query)#Customquerycustom_query=st.text_input("Orenteryourownquery:")ifst.button("RunCustomQuery")andcustom_query:run_query(directory_path,custom_query)#Runthesynchronousappmain_streamlit_app()

上述代码将Streamlit与OpenAI MCP代理集成,允许你通过Git MCP服务器与本地Git仓库进行聊天。要运行此示例,你需要安装以下软件包:

pipinstallstreamlitopenai-agentsmcp-server-git

然后,使用以下命令导出你的OpenAI API密钥:

exportOPENAI_API_KEY=sk-...

在你运行Python文件时,应该会看到类似如下的结果。

大家可以在GitHub上探索其他关于OpenAI MCP的示例。

链接:https://github.com/openai/openai-agents-python/tree/main/examples/mcp

使用Agents SDK的MCP集成的一个优点是它在OpenAI的控制面板中内置的MCP智能体监控系统。该功能会自动捕捉你的智能体的MCP操作,例如工具列表、POST响应以及获取有关函数调用的数据。下图展示了运行上述代码后,本节中Git MCP示例的追踪信息。你可以从OpenAI的控制面板中访问所有已记录的信息。





10


使用PraisonAI构建MCP智能体

Praison AI是一个基于Python的人工智能框架,用于构建智能体。它提供了最简单的方法,将MCP服务器工具加入智能体工作流,仅需一行代码,就像为智能体配备传统工具一样。

下面的示例将Airbnb的MCP服务器与Praison AI智能体集成,使用Streamlit界面帮助用户在指定地点寻找公寓。

要使用Praison AI创建你的第一个MCP代理,大家应当安装以下软件包:

pipinstallstreamlitmcppraisonaiagents
然后,使用以下命令导出你的OpenAI API密钥:
exportOPENAI_API_KEY=sk-...
样例代码如下:
importstreamlitasstfrompraisonaiagentsimportAgent, MCP
st.title("? Airbnb Booking Assistant")
# Create the agent@st.cache_resourcedefget_agent(): returnAgent( instructions="""You help book apartments on Airbnb.""", llm="gpt-4o-mini", tools=MCP("npx -y @openbnb/mcp-server-airbnb --ignore-robots-txt") )
# Initialize chat historyif"messages"notinst.session_state: st.session_state.messages = []
# Display chat historyformessageinst.session_state.messages: withst.chat_message(message["role"]): st.markdown(message["content"])
# User input formwithst.form("booking_form"): st.subheader("Enter your booking details")
destination = st.text_input("Destination:","Paris")
col1, col2 = st.columns(2) withcol1: check_in = st.date_input("Check-in date") withcol2: check_out = st.date_input("Check-out date")
adults = st.number_input("Number of adults:", min_value=1, max_value=10, value=2)
submitted = st.form_submit_button("Search for accommodations")
ifsubmitted: search_agent = get_agent()
# Format the query query =f"I want to book an apartment in{destination}from{check_in.strftime('%m/%d/%Y')}to{check_out.strftime('%m/%d/%Y')}for{adults}adults"
# Add user message to chat history st.session_state.messages.append({"role":"user","content": query})
# Display user message withst.chat_message("user"): st.markdown(query)
# Get response from the agent withst.chat_message("assistant"): withst.spinner("Searching for accommodations..."): response = search_agent.start(query) st.markdown(response)
# Add assistant response to chat history st.session_state.messages.append({"role":"assistant","content": response})
# Allow for follow-up questionsifst.session_state.messages: prompt = st.chat_input("Ask a follow-up question about the accommodations") ifprompt: search_agent = get_agent()
# Add user message to chat history st.session_state.messages.append({"role":"user","content": prompt})
# Display user message withst.chat_message("user"): st.markdown(prompt)
# Get response from the agent withst.chat_message("assistant"): withst.spinner("Thinking..."): response = search_agent.start(prompt) st.markdown(response)
# Add assistant response to chat history st.session_state.messages.append({"role":"assistant","content": response})
运行示例代码将调用所需的 Airbnb MCP 工具,为大家查找特定位置的公寓,如下所示。
你已经注意到,只需一行代码
tools=MCP("npx-y@openbnb/mcp-server-airbnb--ignore-robots-txt")
我们就可以为代理添加MCP支持,其中npx代表运行启动MCP服务器的命令,-y是传递给该命令的命令行参数。有关更多信息,请参考OpenAI Agents SDK文档。




11


使用LangChain AI构建MCP智能体

LangChain支持使用工具调用(tool-calling)与MCP集成。这种支持允许你设置Python函数,以访问不同的MCP服务器并获取工具,从而在AI项目中执行各种任务。以下示例代码连接到一个安全的MCP文件系统服务器,使大型语言模型(LLM)能够准确回答你提供的任何文件相关的问题。
# Copyright (C) 2024 Andrew Wason# SPDX-License-Identifier: MIT
importasyncioimportpathlibimportsysimporttypingast
fromlangchain_core.messagesimportAIMessage, BaseMessage, HumanMessagefromlangchain_core.output_parsersimportStrOutputParserfromlangchain_core.toolsimportBaseToolfromlangchain_groqimportChatGroqfrommcpimportClientSession, StdioServerParametersfrommcp.client.stdioimportstdio_client
fromlangchain_mcpimportMCPToolkit
asyncdefrun(tools:list[BaseTool], prompt:str) ->str: model = ChatGroq(model_name="llama-3.1-8b-instant", stop_sequences=None) # requires GROQ_API_KEY tools_map = {tool.name: toolfortoolintools} tools_model = model.bind_tools(tools) messages:list[BaseMessage] = [HumanMessage(prompt)] ai_message = t.cast(AIMessage,awaittools_model.ainvoke(messages)) messages.append(ai_message)fortool_callinai_message.tool_calls: selected_tool = tools_map[tool_call["name"].lower()] tool_msg =awaitselected_tool.ainvoke(tool_call) messages.append(tool_msg)returnawait (tools_model | StrOutputParser()).ainvoke(messages)
asyncdefmain(prompt:str) ->None: server_params = StdioServerParameters( command="npx", args=["-y","@modelcontextprotocol/server-filesystem",str(pathlib.Path(__file__).parent.parent)], )asyncwith stdio_client(server_params)as(read, write):asyncwith ClientSession(read, write)assession: toolkit = MCPToolkit(session=session)awaittoolkit.initialize() response =awaitrun(toolkit.get_tools(), prompt)print(response)
if__name__ =="__main__": prompt = sys.argv[1] iflen(sys.argv) >1else"Read and summarize the file ./readme.md" asyncio.run(main(prompt))
在运行上述代码前,我们需要安装依赖包:
pipinstallstreamlitmcppraisonaiagents
pminstall-g@modelcontextprotocol/server-filesystem
所有必需的包安装完毕后,如果你向项目中添加了一个文件,并在 Python 脚本中按照示例代码(如上所示的 ./readme.md)引用它,你应该会看到类似如下的输出。





12


使用Chinlit AI构建MCP智能体

Chainlit 是一个用于用 Python 构建 AI 应用的平台。它内置支持 MCP 服务器,因此你可以配置你的应用程序以发现可用的 MCP 工具,并将工具调用集成到应用流程中,以实现更优的效果。你还可以将 Chainlit 应用与服务器推送事件(SSE)和命令行(stdio)等服务进行集成。在以下示例中,我们将把一个 Chainlit 应用连接到 Linear MCP 服务器,以便应用可以管理 Linear 的问题、项目和团队。你可以使用本示例中的 Linear 工具创建、更新、搜索或获取用户问题,或在问题中添加评论。
首先,我们需要注册MCP连接:在此步骤中,你应当实现Chainlit异步函数on_mcp_connect,以建立成功的连接。你还可以实现函数on_mcp_disconnect来进行清理工作
# pip install chainlit
importchainlitasclfrommcpimportClientSession
@cl.on_mcp_connectasyncdefon_mcp_connect(connection, session: ClientSession):"""Called when an MCP connection is established"""# Your connection initialization code here# This handler is required for MCP to work
@cl.on_mcp_disconnectasyncdefon_mcp_disconnect(name:str, session: ClientSession):"""Called when an MCP connection is terminated"""# Optional handler: Cleanup your code here
其次,需要配置 MCP 客户端(Chainlit、LangChain、Mastra):为了让 MCP 服务器与 Chainlit 应用正常工作,客户端应通过 Chainlit 的界面提供连接信息。
该配置包括以下内容:
  • 代表连接名称的唯一标识符。

  • 客户端类型:你应当指定是使用 SSE 还是 stdio。使用 SSE 时,需要添加 URL 端点;而使用 stdio 时,则需要一个完整的命令(例如:npx your-tool-package)。下面是完整命令的示例:

npx-ylinear-mcp-server--tools=all--api-key=lin_api_your_linear_API_Key
建立 MCP 服务器连接后,大家可以在 MCP 会话中执行工具。最终,你可以通过工具调用,将 MCP 工具无缝集成到你的 Chainlit 应用的模型或代理(agents)中。你可以在 GitHub 上的 Chainlit 示例应用中找到此 Linear MCP 集成的完整源代码。

代码链接:https://github.com/Chainlit/cookbook/tree/main/mcp-linear







13


使用Agno AI构建MCP智能体

Agno 是一个用于构建复杂代理工作流的 Python 框架。它因其简洁、易用以及与 MCP 服务器的无缝集成而受到欢迎。本节的示例 MCP 实现与由四个不同的贡献代理组成的多智能体团队协作,包括 Airbnb、Google Maps、网络搜索和天气 MCP 代理。这些 Agno 多智能体协作,旨在提供关于特定地点旅行的信息。
相关的配置如下:
# Define server parameters  airbnb_server_params = StdioServerParameters(    command="npx",    args=["-y","@openbnb/mcp-server-airbnb","--ignore-robots-txt"],    env=env,  )
maps_server_params = StdioServerParameters( command="npx", args=["-y","@modelcontextprotocol/server-google-maps"], env=env )
# Use contextlib.AsyncExitStack to manage multiple async context managersasyncwith contextlib.AsyncExitStack()asstack:# Create stdio clients for each server airbnb_client, _ =awaitstack.enter_async_context(stdio_client(airbnb_server_params)) maps_client, _ =awaitstack.enter_async_context(stdio_client(maps_server_params))
# Create all agents airbnb_agent = Agent( name="Airbnb", role="Airbnb Agent", model=OpenAIChat("gpt-4o"), tools=[airbnb_client], instructions=dedent("""\ You are an agent that can find Airbnb listings for a given location.\ """), add_datetime_to_instructions=True, )
从Agno的GitHub仓库获取完整的源代码。安装所需的包,完成所有上述配置,然后运行完整的GitHub示例代码,应该会显示类似于此预览的输出。

代码链接:https://github.com/agno-agi/agno/blob/main/cookbook/examples/teams/coordinate/travel_planner_mcp_team.py

效果如下:







14


使用Upsonic 构建MCP智能体

Upsonic是一个用于创建AI智能体的Python框架。使用Upsonic,您可以构建您的代理,定义代理的任务,并使用MCP工具处理每个任务定义,正如下面的示例代码所演示的那样。
importosfromdotenvimportload_dotenvfromupsonicimportTask, Agent, Directfromupsonic.client.toolsimportSearch # Adding Search as a fallback tool
# Load environment variables from .env fileload_dotenv()
# Get the OpenAI API key from environment variablesopenai_api_key = os.getenv("OPENAI_API_KEY")ifnot openai_api_key:raiseValueError("OPENAI_API_KEY not found in .env file")
# Set your OpenAI API key for the sessionos.environ["OPENAI_API_KEY"] = openai_api_key
# Define the HackerNews MCP tool# Using the correct MCP setup for HackerNews based on Upsonic documentationclassHackerNewsMCP: command ="uvx" args = ["mcp-hn"]# No environment variables are needed for this MCP
# Create a task to analyze the latest HackerNews stories# Adding Search as a fallback in case HackerNews MCP failstask = Task("Analyze the top 5 HackerNews stories for today. Provide a brief summary of each story, ""identify any common themes or trends, and highlight which stories might be most relevant ""for someone interested in AI and software development.", tools=[HackerNewsMCP, Search] # Include both HackerNews MCP and Search tools)
# Create an agent specialized in tech news analysisagent = Agent("Tech News Analyst", company_url="https://news.ycombinator.com/", company_objective="To provide insightful analysis of tech industry news and trends")
# Execute the task with the agent and print the resultsprint("Analyzing HackerNews stories...")agent.print_do(task)
# Alternatively, you can use a Direct LLM call if the task is straightforward# print("Direct analysis of HackerNews stories...")# Direct.print_do(task)
# If you want to access the response programmatically:# agent.do(task)# result = task.response# print(result)
在上述示例中,我们在Upsonic中创建了一个AI智能体,用于获取Hackernews中最新的五条新闻。如果你执行pip install upsonic并运行上面的Python代码,你应该会看到类似于此图片的输出。






15


总 结

本教程向大家介绍了MCP,并解释了为什么它在开发者社区中变得如此流行。除了上述内容,我们还在六种不同的Python和TypeScript框架中实现了MCP,用于构建基于大语言模型(LLM)的应用、AI助手和智能体。
然而,MCP的强大之处也伴随着一些挑战。当你为你的项目寻找MCP工具时,可能会发现难以评估或验证其质量,也难以确定其在你的AI项目中的具体应用。这是因为其工具的搜索和发现机制尚未标准化。此外,由于不同的MCP服务器提供商使用不同的架构,其配置也无法提供一致的用户体验。
目前,MCP生态系统正在讨论标准化其各个方面。未来,可能会有一种标准化的方式来安装基于MCP的应用,就像我们用pip安装Python包一样。
最后,希望本教程可以加深大家对MCP的认识!


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ