当前位置: 首页 > 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.zskr.cn/news/994.html

相关文章:

  • OCP认证烂大街了吗?别跟风问这个问题了
  • 虚机网络配置基础 - 小
  • 移动端盒子元素实现左右可滑动且竖向页面可滑动
  • 双桶倒水的Python程序
  • 微信小程序触发订阅消息
  • MySQL锁
  • AI智能体(Agent)开发实战:工业级项目案例驱动课
  • java 开发中VO、PO、DO、DTO、BO、QO、DAO、POJO
  • JDK 24软件介绍
  • 数据跨境学习笔记
  • NOIP 模拟赛十三
  • 目录导航
  • archlinux gnome48 顶部托盘选择
  • 第8章 STM32CUBE LCD配置和测试
  • Git的使用方法
  • 微算法科技(NASDAQ: MLGO)采用量子相位估计(QPE)方法,增强量子神经网络训练
  • DeepSeek文案短句:点燃创意火花
  • 如何通过Python SDK 统计Collection
  • 小程序web-view全覆盖问题
  • MySQL触发器
  • nvm下载与安装(Windows)
  • OSI 七层协议 和四层协议
  • 罗氏线圈的 “磁场烦恼”:干扰并非无解,防护有章可循
  • UOJ671 笔记
  • conda安装虚拟环境或者包时候都一个常见问题--HTTP 000 CONNECTION FAILED
  • 接口测试
  • 【IEEE出版】第四届传感器技术与控制国际研讨会(ISSTC 2025)
  • 解构 MyEMS:开源能源管理系统的核心特性与价值图谱
  • 在Spring Boot Admin中根据Nacos的命名空间来区分和管理不同的环境
  • npm 无法加载文件npm.ps1