当前位置: 首页 > news >正文

python开发mcp入门

先把准备工作做好

1:安装uv

官网安装 :https://docs.astral.sh/uv/getting-started/installation/
pip安装: pip install uv

2:安装node

初始化项目

uv init mcp-server-demo
cd mcp-server-demo
uv add "mcp[cli]"

编写代码 mcp_server.py 别叫mcp,因为跟包名冲突了,md。。。。

from mcp.server.fastmcp import FastMCP
from pathlib import Path
import sys
import json# Create an MCP server
mcp = FastMCP("Demo", debug=True, log_level="DEBUG")# Add an addition tool
@mcp.tool(name="add", description="计算两数之和")
def add(a: int, b: int) -> int:"""计算两数之和"""return a + b# Add a dynamic greeting resource
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:"""Get a personalized greeting"""print(f"DEBUG: get_greeting called with name={name}", file=sys.stderr)return f"Hello, {name}!"# Add a prompt
@mcp.prompt()
def greet_user(name: str, style: str = "friendly") -> str:"""生成一个个性化的问候"""styles = {"friendly": "Please write a warm, friendly greeting","formal": "Please write a formal, professional greeting","casual": "Please write a casual, relaxed greeting",}return f"{styles.get(style, styles['friendly'])} for someone named {name}."# "获取用户桌面的文件列表
@mcp.resource("dir://desktop")
def desktop() -> list[str]:"""获取用户桌面的文件列表"""print("DEBUG: desktop resource called", file=sys.stderr)try:desktop_path = Path.home() / "Desktop"# 检查路径是否存在if not desktop_path.exists():return [f"错误: 桌面路径不存在 - {desktop_path}"]# 返回文件列表return [str(f) for f in desktop_path.iterdir()]except Exception as e:return [f"获取文件列表失败: {str(e)}"]# 以stdio模式启动MCP服务器
def main() -> None:# 处理标准输入的资源请求mcp.run()if __name__ == "__main__":main()

方式1:启动测试服务--这里需要node环境

mcp dev mcp_server.py

你写的tool、resource、prompt都可以看到

image

方式2:当作自定义mcp添加到cline、trae等这种工具里面。我这里用的trae

uv --directory D:\code\python run mcp_server.py

image

但是这种方式我试了很多次,只能识别到tool,其他的resource、prompt怎么弄都无法识别,有懂得可以告诉我怎么弄

http://www.hskmm.com/?act=detail&tid=156

相关文章:

  • 建造者模式进阶:复杂AI服务的优雅构建
  • 代理模式在AI应用中的安全实践:AOP + 限流 + 权限控制
  • ​​高压差分探头:高电压测量的精密之眼​​
  • OCP认证烂大街了吗?别跟风问这个问题了
  • 全国连锁贸易公司数字化管理软件-优德普SAP零售行业解决方案
  • Win7、WinServer2008运行.net8.net4.8程序的解决方案
  • 虚机网络配置基础 - 小
  • 你的开发服务器在说谎-热重载与热重启的关键区别
  • 文件不只是数据-一份稳健的文件处理指南
  • 别再猜了-开始测量吧-一份实用的Web性能指南
  • 软工作业1
  • 避坑指南!Flutter 编译 Android 程序常见问题 + 解决方案,附安全加固技巧
  • [SQL] SQL Server 编写表脚本生成的SQL语句不包含索引以及触发器的解决方法
  • chrome高版本浏览器不兼容driver.execute_script(“return window.performance.getEntries()“)的解决方法
  • 移动端盒子元素实现左右可滑动且竖向页面可滑动
  • 双桶倒水的Python程序
  • 【API接口】最新可用天翼云盘解析接口
  • 搭建GZCTF平台及上传动态flag密码题目过程
  • 微信小程序触发订阅消息
  • TOR内置网桥失效 - Andy
  • PageHelper的使用
  • Linux系统目录结构全解析:基础到大神必读!
  • HarmonyOS实现快递APP自动识别地址
  • Tor浏览器内置网桥失效 - Andy
  • 基于 Rockchip 开发板的 openEuler 镜像的构建
  • 【API接口】应用商店接口
  • MySQL锁
  • 异步电机的无速度传感器的矢量控制
  • 打包好dist文件 本地如何测?
  • 日期函数(mysql和oracle)