大模型拥有丰富的通用知识,但却无法访问专属内容,无法联网获取实时信息。它的核心功能是生成token,无法精细化操作具体的任务。 而MCP则提供了一套标准协议来解决这些问题,换句话说,通过一系列外部工具,可以帮助大模型获取无法知晓的信息或者难以执行的操作。 今天让我们来了解一下什么是MCP。 什么是MCPMCP(Model Context Protocol) 是一种开放协议,它为应用程序和大模型之间交互提供了标准化的接口。可以把MCP想象成人工智能应用程序的USB-C端口,它提供了一种将人工智能模型连接到不同数据源和工具的标准化方式。 ![]() 为什么需要有MCPMCP 能帮助你在大语言模型之上构建代理和复杂工作流。大语言模型常常需要与数据和工具集成,而 MCP 提供:
从本质上讲,MCP 遵循客户端 - 服务器架构,在这种架构下,一个主机应用程序可以连接到多个服务器。 ![]()
另外,本地服务和云端服务的区别:
客户端集成MCP服务端的例子下面介绍一下如何在客户端集成MCP服务端(以Python代码为例),下面以构建一个LLM驱动的聊天机器人客户端为例,该客户端连接到 MCP 服务器。 使用uv创建一个新的Python项目 # Create project directoryuv init mcp-clientcd mcp-client# Create virtual environmentuv venv# Activate virtual environment# On Windows:.venv\Scripts\activate# On Unix or MacOS:source .venv/bin/activate# Install required packagesuv add mcp anthropic python-dotenv# Remove boilerplate filesrm hello.py# Create our main filetouch client.py 设置一下API Key
然后再.env中添加key ANTHROPIC_API_KEY=<your key here> 创建一个客户端,下面是一个基础框架
然后再搞一个服务端连接管理器: async def connect_to_server(self, server_script_path: str): '''Connect to an MCP server Args: server_script_path: Path to the server script (.py or .js) ''' is_python = server_script_path.endswith('.py') is_js = server_script_path.endswith('.js') if not (is_python or is_js): raise ValueError('Server script must be a .py or .js file') command = 'python' if is_python else 'node' server_params = StdioServerParameters( command=command, args=[server_script_path], env=None ) stdio_transport = await self.exit_stack.enter_async_context(stdio_client(server_params)) self.stdio, self.write = stdio_transport self.session = await self.exit_stack.enter_async_context(ClientSession(self.stdio, self.write)) await self.session.initialize() # List available tools response = await self.session.list_tools() tools = response.tools print('\nConnected to server with tools:', [tool.name for tool in tools]) 查询的处理逻辑:
互动聊天界面: async def chat_loop(self): '''Run an interactive chat loop''' print('\nMCP Client Started!') print('Type your queries or 'quit' to exit.') while True: try: query = input('\nQuery: ').strip() if query.lower() == 'quit': break response = await self.process_query(query) print('\n' + response) except Exception as e: print(f'\nError: {str(e)}')async def cleanup(self): '''Clean up resources''' await self.exit_stack.aclose() 定义main函数:
然后执行下面命令运行客户端: uv run client.py path/to/server.py # python server MCP服务器精选在Github上,开源项目punkpeye/awesome-mcp-servers收集了大量的MCP开源项目,如下所示: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 大模型学习资料我整理了一份大模型学习相关的资料,不同于网上分享的大杂烩资源,我将资源进行了整理,目录结构一目了然,对新手更加友好,后续也会持续更新! 放在公众号了,感兴趣的兄弟可以自行取用!获取关键词为:「大模型学习资料」 我是Jack Bytes一个专注于将人工智能应用于日常生活的半吊子程序猿! |
|