MCP入门

什么是mcp

mcp(model context protocol,模型上下文协议)
标准化协议:让大模型用统一的方式来调用工具,是llm和工具之间的桥梁

A2A:Agent-to-Agent协议
在这里插入图片描述

mcp通信机制

在这里插入图片描述

提供mcp服务查询的平台

具有工具合集的平台称为mcp server
在这里插入图片描述

热门mcp服务

  • filesystem:允许访问本地文件系统
  • mysqldb-mcp-server:与数据库进行交互
  • amap-maps:高德地图(api key免费额度很少)
  • firecrawl:爬虫
  • github:和github交互(先去github设置里申请自己的token)
  • git:git操作
  • memory:记忆图谱,长期历史记忆
  • desktop-commander:终端命令
  • Slack:社交软件(去https://app.slack.com/intl/zh-cn注册并获取自己的 team id)

注意有些配置需要先去对应平台获取api key

mcp两种指令对应环境的安装

在安装 stdio 的本地环境时,有两种不同的方式 。一种是基于Python语言编写的服务,安装它要用到 uvx 指令;另一种是基于TypeScript语言编写的服务,安装时得用 npx 指令 。就好比你要安装两个不同类型的小工具,一个工具得用A方法安装,另一个得用B方法安装。

基于Python——
pip install uv
uvx --version

基于TypeScript——
安装node.js,把文件夹的路径添加到path里
在cmd终端输入:node -v和npm -v

cursor配置mcp服务

1、查看——外观——辅助侧边栏,有自然语言的交互
2、案例需求(需要用到mysql,高德地图和filesystem服务):

  1. 现在交给你一个任务,编写一个北京一日游的出行攻略
  2. 从高德地图的MCP服务中获取北京站到天安门、天安门到颐和园、颐和园到南锣鼓巷的地铁路线,并保存在数据库beijing_transit的表subway_trips中
  3. 从高德地图的MCP中获取颐和园、南锣鼓巷附近的美食信息,每处获取三家美食店铺信息,并将相应的信息存入表location_foods中
  4. 在工作日录D:\MyWorkSpace下创建一个新的文件夹,命名为“北京旅行”在其中创建两个txt,分别从数据库中得到两个表的内容提取出存放进去。
  5. 从最后在两个表的内容生成一个精美的html前端展示页面,并存放在该目录下

3、cursor中添加server
项目级别:在项目的.cursor目录中新建mcp.json文件进行配置,仅对特定项目生效。(推荐)
全局设置:Settings——MCP——add new global MCP server

alt+shift+F 调整格式

cline配置mcp服务

cline可以分为plan和act两种模式,先plan再act更精准

配置:installed-config mcp servers

mcp服务使用的注意事项:

  1. 需要自己创建好大的目录,agent才能访问
    比如:你要求agent“在工作目录E:\ClineWorkSpace\test_cline下创建一个新的文件夹,命名为“北京旅行”。那你就要先自己创建好E:\ClineWorkSpace\test_cline这个目录,否则会有系统找不到指定的路径的问题。
  2. 连接数据库时,要确保数据库已经自己手动创建,mcp才能连接上,否则会出现client_close的问题。
  3. 在cline连接基于npx的mcp服务时,即使已经安装好了nodejs,也可能出现spawn npx ENOENT的问题,这可能是因为对windows支持不太友好。
    解决办法:
    将使用npx的命令替换为cmd(适用于 Windows 系统):如果是在 Windows 系统下,将command字段的值从npx改为cmd,并在args数组开头添加/c,后续再跟上原来的npx命令及参数。
    "amap-maps": {"command": "npx","args": ["-y","@amap/amap-maps-mcp-server"],"env": {"AMAP_MAPS_API_KEY": "***"}}//变成下面这样"amap-maps": {"command": "cmd","args": ["/c","npx","-y","@amap/amap-maps-mcp-server"],"env": {"AMAP_MAPS_API_KEY": "***"}}

在这里插入图片描述

cherry studio的使用

  1. 配置模型(去硅基流动或者阿里云百炼平台获取api key,然后测试连接,开启模型服务)
  2. 配置mcp服务(编辑mcp服务,把.json内容粘贴进去)
  3. 选择回答的模型,多选mcp服务

手动开发mcp服务

在这里插入图片描述
在这里插入图片描述

  1. 新建项目
    在E盘终端:uv init mcp-project
    打开创建client.py和server.py,以及.env

  2. 配置.env:

BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
MODEL=qwen2.5-vl-32b-instruct
DASHSCOPE_API_KEY="sk-f2466b8bdfa848c69051054f184939f6"SERPER_API_KEY="8d98f7e8a23442f6c83c3398d6283c956b727a74"SMTP_SERVER=smtp.163.com
SMTP_PORT=465
EMAIL_USER=16620017551@163.com
EMAIL_PASS=XKXbB4gT4trhqbGa

获取几个权限:

  • 阿里云百炼控制台api key——大模型
  • Serper平台api key——提供谷歌搜索(注意要谷歌邮箱注册)
  • 163网易邮箱(开启POP3/SMTP服务,获得授权密码)
    在这里插入图片描述
  1. 运行client.py
    终端环境与 VS Code 选择的解释器不一致。虽然你在 VS Code 中选择了 Python 3.12 解释器,但终端可能仍在使用 Anaconda 的默认环境(Python 版本低于 3.10)
    python --version
    conda activate mcp_env
代码思路
client.py:
class MCPClient:def __init__(self): # 初始化:加载环境变量,配置OpenAI(创建客户端和会话)...async def connect_to_server(self, server_script_path: str):# 启动服务器(判断服务器脚本是.py还是.js的,启动方式;构造参数;启动服务得通道;从通道中提取读写对象) # 连接服务器(和服务端通道相连,创建会话)...async def process_query(self, query: str) -> str:# 从查询中提取关键词,生成要填写的报告文件名,加入查询中使其更新,包装用户消息# 请求可用的工具列表 self.session.list_tools()# 分析要用哪些工具self.plan_tool_usage(query, available_tools)# 依次调用工具self.session.call_tool(tool_name, tool_args),收集结果,将其加到messages后面messages[{"role": "user","content": "分析苹果公司的市场表现 [md_filename=sentiment_苹果公司_20230515_143022.md] [md_path=./sentiment_reports/sentiment_苹果公司_20230515_143022.md]"},{"role": "tool","tool_call_id": "fetch_data","content": "已获取苹果公司近30天的市场数据(2023-04-15至2023-05-15)"},{"role": "tool","tool_call_id": "analyze_sentiment","content": "苹果公司市场情绪分析结果:积极(85%),中性(10%),消极(5%)\n详细报告已保存至 sentiment_苹果公司_20230515_143022.md"}
]final_output='根据最近30天的市场数据(2023-04-152023-05-15),苹果公司的市场情绪分析如下:- 积极情绪占比:85%
- 中性情绪占比:10%
- 消极情绪占比:5%整体来看,市场对苹果公司的评价非常积极,可能反映了其产品表现、财务状况或行业地位的优势。详细分析已生成报告,可查看:
[sentiment_苹果公司_20230515_143022.md](file:///./sentiment_reports/sentiment_苹果公司_20230515_143022.md)如需进一步分析或其他帮助,请随时告知。'...async def plan_tool_usage(self, query: str, tools: List[dict]) -> List[dict]:# 定义llm的system_prompt为“智能任务规划助手”# 将system_prompt和用户消息一起包装成新消息# 通过llm分析 query,规划应该调用哪些工具和参数(返回 JSON 数组)response = self.client.chat.completions.create(model,messages,tools)...async def chat_loop(self):# 交互的入口,可以循环提问,process_query处理问题生成回答...async def cleanup(self):# 优雅退出 MCP 会话...async def main():client = MCPClient()await client.connect_to_server(...)await client.chat_loop()
server.py:
# 加载环境变量
load_dotenv()# 初始化 MCP 服务器
mcp = FastMCP("NewsServer")# 注册工具:@mcp.tool() 是 MCP 框架的装饰器,表明这是一个 MCP 工具。
# 服务端:通过装饰器注册工具,MCP 框架收集元数据。
# 客户端:调用 list_tools 向服务端请求工具列表,构造为 LLM 可用的格式。@mcp.tool()
async def search_google_news(keyword: str) -> str:@mcp.tool()
async def analyze_sentiment(text: str, filename: str) -> str:@mcp.tool()
async def send_email_with_attachment(to: str, subject: str, body: str, filename: str) -> str:

分析工具使用、对新闻进行情感分析、总结都需要llm

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/903768.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务容错治理框架resilience4jsentinel基础应用---微服务的限流/熔断/降级解决方案

继续上一章未完成的sentinel; 直接实操; 关于测试:本文使用线程池线程异步执行模拟并发结合Mock框架测试 其他文章 服务容错治理框架resilience4j&sentinel基础应用---微服务的限流/熔断/降级解决方案-CSDN博客 conda管理python环境-…

深入理解 C 语言中的变量作用域与链接性:`extern`、`static` 与全局变量

深入理解 C 语言中的变量作用域与链接性:extern、static 与全局变量 在 C 语言中,变量的作用域(Scope)和链接性(Linkage)是理解程序结构和模块化的关键概念。本文将详细探讨在函数外定义的变量是否为全局变…

实验三 软件黑盒测试

实验三 软件黑盒测试使用测试界的一个古老例子---三角形问题来进行等价类划分。输入三个整数a、b和c分别作为三角形的三条边,通过程序判断由这三条边构成的三角形类型是等边三角形、等腰三角形、一般三角形或非三角形(不能构成一个三角形)。其中要求输入变量&#x…

小米首个推理大模型开源——Xiaomi MiMo,为推理而战!

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、MiMo的惊人表现:小参数量,大能力二、双轮驱动&#…

《2025全球机器学习技术大会:阿里云讲师张玉明深度剖析通义灵码AI程序员》

4 月 18 日 - 19 日,由 CSDN & Boolan 联合举办的 2025 全球机器学习技术大会(ML-Summit)于上海顺利举行。大会聚焦人工智能与机器学习前沿技术,汇聚了来自科技与人工智能领域的数位顶尖专家以及数千名开发者和研究者&#xf…

MySQL事务隔离级别详解

MySQL事务隔离级别详解 事务隔离级别概述 MySQL支持四种标准的事务隔离级别,它们定义了事务在并发环境下的可见性规则和可能出现的并发问题: READ UNCOMMITTED(读未提交) • 最低隔离级别 • 事务可以读取其他事务未提交的数据&…

计算机视觉(CV)技术的优势和挑战(本片为InsCode)

计算机视觉(CV)技术是一种利用计算机和算法来模拟人类视觉实现图像和视频处理的技术。它在各个领域都有着广泛的应用,具有许多优势和挑战。 优势: 自动化:CV 技术可以自动识别、分类、跟踪和分析图像和视频数据&…

Android JIT编译:adb shell cmd package compile选项

Android JIT编译:adb shell cmd package compile选项 例如: adb shell cmd package compile -m speed -f --full 包名 配置参数指令说明: compile [-r COMPILATION_REASON] [-m COMPILER_FILTER] [-p PRIORITY] [-f] [--primary-dex] …

Android Kotlin 项目集成 Firebase Cloud Messaging (FCM) 全攻略

Firebase Cloud Messaging (FCM) 是 Google 提供的跨平台消息推送解决方案。以下是在 Android Kotlin 项目中集成 FCM 的详细步骤。 一、前期准备 1. 创建 Firebase 项目 访问 Firebase 控制台点击"添加项目",按照向导创建新项目项目创建完成后&#x…

搭建PCDN大节点,服务器该怎么配

搭建P2P大节点时,服务器要怎么配呢?需要综合考虑硬件性能、网络带宽、存储能力、系统架构以及安全性等多个方面,以确保节点能够高效、稳定地运行。 一、硬件配置 CPU:选择高性能的多核处理器,以满足高并发处理需求。核…

(done) 吴恩达版提示词工程 8. 聊天机器人 (聊天格式设计,上下文内容,点餐机器人)

视频:https://www.bilibili.com/video/BV1Z14y1Z7LJ/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 别人的笔记:https://zhuanlan.zhihu.com/p/626966526 8. 聊天机器人(Chatbot) …

AtCoder Beginner Contest 403(题解ABCDEF)

A - Odd Position Sum #1.奇数数位和 #include<iostream> #include<vector> #include<stdio.h> #include<map> #include<string> #include<algorithm> #include<queue> #include<cstring> #include<stack> #include&l…

【Game】Powerful——Abandoned Ruins(9)

文章目录 1、新增古玩2、机关机制3、探索法宝4、智斗强敌5、地图6、参考 2025 年 1 月迎来的新玩法——荒废遗迹 每周四个宝藏铲&#xff08;老玩法&#xff09;或者两个遗迹线索&#xff08;新玩法&#xff09;&#xff0c;3 个宝藏铲也可以换一个遗迹线索&#xff0c;之前没时…

构建网页版IPFS去中心化网盘

前言&#xff1a;我把它命名为无限网盘 Unlimited network disks&#xff08;ULND&#xff09;&#xff0c;可以实现简单的去中心化存储&#xff0c;其实实现起来并不难&#xff0c;还是依靠强大的IPFS&#xff0c;跟着我一步一步做就可以了。 第一步&#xff1a;准备开发环境…

国标GB28181视频平台EasyGBS在物业视频安防管理服务中的应用方案​

一、方案背景​ 在现代物业服务中&#xff0c;高效的安全管理与便捷的服务运营至关重要。随着科技的不断发展&#xff0c;物业行业对智能化、集成化管理系统的需求日益增长。EasyGBS作为一款基于国标GB28181协议的视频监控平台&#xff0c;具备强大的视频管理与集成能力&#…

[Unity]设置自动打包脚本

背景 我们经常会使用自动打包功能 文件名称: AutoBuild.csusing System.IO; using System.Linq; using UnityEditor; using UnityEngine;public class AutoBuilder {[MenuItem("Build/GetCurrentBuildTarget")]public static void GetCurrentBuildTarget(){Debug.L…

正点原子STM32H743单片机实现ADC多通道检测

目标 使用STM32CubeMX工具&#xff0c;配置ADC相关参数&#xff0c;实现在STM32H743单片机上获取ADC多通道电压值。共14个ADC引脚&#xff0c;ADC2有5个&#xff0c;ADC3有9个&#xff0c;全部设置单通道 ADC引脚 PF3PF4PF5PF10PC0PC2PC3PH2PH3PA3PB0PB1PA4PA5PA6 STM32cube…

深度学习基础(四)——计算量(FLOPs)、参数量(Params)、计算速度(FLOPS/TOPS))

一、计算量FLOPs FLOPs&#xff0c;全称为Floating Point Operations, (s为复数缩写&#xff09;&#xff0c;浮点运算数&#xff0c;指模型完成一次前向传播所需的浮点运算次数&#xff0c;可以理解为计算量&#xff08;模型的时间复杂度&#xff09;&#xff0c;用来衡量算法…

电子秤检测管理系统开发实战:从数据采集到可视化大屏

简介 电子秤作为现代工业生产和商业流通中的核心计量设备,其准确性直接关系到产品质量和交易公平。针对仙贝生产企业的电子秤管理需求,我们开发了一套集电子秤检测信息录入、产品信息管理、实时称重数据采集和后台可视化大屏于一体的综合管理系统。该系统基于Django框架构建…

Cesium添加WMS,WMTS,地形图图,3D Tiles数据

在 Cesium 中&#xff0c;你可以添加 WMS、WMTS、地形图 和 3D Tiles 数据源。以下是详细的实现方法&#xff1a; 1. 添加 WMS 服务 WMS&#xff08;Web Map Service&#xff09;是一种动态地图服务&#xff0c;适用于加载栅格地图图层。 代码示例 const viewer new Cesium…