简单使用MCP

Python FastMCP实现MCP实践全解析:SSE与STDIO通信模式详解 本文全面介绍Python FastMCP框架在MCP实践中的应用,详细解析了MCP中SSE和STDIO两种通信模式的区别和实现方法,并提供了完整的代码示例,帮助开发者快速搭建MCP服务。 阅读详情
AI摘要

本文介绍了模型上下文协议(MCP),它由Anthropic推出,可规范应用程序向LLM提供上下文,帮助构建代理和复杂工作流。核心功能有Server、Resources等。还提及简单实现,包括用pip安装、构建服务等,但作者认为MCP尚不完善,很多东西待发展。

简单使用MCP

1 简介

模型上下文协议(Model Context Protocol,MCP)是由Anthropic(产品是Claude)推出的开放协议,它规范了应用程序如何向LLM提供上下文。MCP可帮助你在LLM之上构建代理和复杂的工作流。

从官网上看核心的功能点主要有Server、Resources、Tools、Prompts、Images。

Server的主要功能是通过MCP协议实现服务连接管理、协议合规性验证、消息路由等。

Resources的主要功能是向LLM传递数据,包括本地资源和远程资源等;

Tools的主要功能是向LLM提供函数调用和数据计算等;

Prompts主要功能是帮助LLM有效的与服务交互;

Images主要功能是自动化处理图像;

# 官网地址
https://modelcontextprotocol.io/introduction

# Github地址
https://github.com/modelcontextprotocol

# Python服务
https://github.com/modelcontextprotocol/python-sdk

# Java服务
https://github.com/modelcontextprotocol/java-sdk

# 第三方的MCP
# fastmcp的Github
https://github.com/jlowin/fastmcp

# fastmcp的官网
https://gofastmcp.com/getting-started/welcome

2 简单实现

注意:我没有完全调试起来,感觉MCP还需要继续发展,很多东西都不太完善。

使用pip安装mcp。

pip install "mcp[cli]"

构建mcp服务

mcp_server.py

# server.py
from mcp.server import FastMCP

# Create an MCP server
mcp = FastMCP("Demo")


# Add an addition tool
@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two numbers"""
    return a + b


# Add a dynamic greeting resource
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
    """Get a personalized greeting"""
    return f"Hello, {name}!"

if __name__ == '__main__':
    mcp.run(transport="sse", host="0.0.0.0", port=8000)

启动服务

mcp dev mcp_server.py

启动后的调试页面

在这里插入图片描述

spring-ai MCP的简单实例 其实也可以理解为大模型的一个扩展点,和spring bpp/bfpp类似,让大模型与外部服务交互,更好的辅助回答。一个简单的天气服务,工程启动后可以看到如下注册了工具。客户端请求和log如下。 阅读详情

相关推荐

​​手把手实现AI万能插头:基于FastMCP构建企业级智能服务;无需魔法!用Cline+VSCode玩转MCP协议实战

MCP协议定位作为AI时代的"万能插头",MCP通过标准化接口实现大模型与外部系统的即插即用连接。如同HTTP协议统一了网络通信,MCP正在成为AI与数据源、工具交互的新基建。技术实现架构采用客户端-服务器模型(如图示的Cline客户端与server.py服务端),支持资源注册()、工具调用(@mcp.tool)和Prompt模板()三大核心功能。开发流程类似FastAPI,但专为AI场景优化。实战价值体现• 通过工具方法,演示了AI直接访问数据库的能力• 使用模板规范客诉处理流程。

xiezhipu的博客 1732

FastMCP - 快速、Pythonic风格的构建MCP server 和 client

一、关于 FastMCP 相关链接资源 快速构建示例 什么是MCP? 为什么选择FastMCP? 核心特性 服务器 客户端 v2 版本更新内容 二、安装 添加 验证安装 安装用于开发 三、核心概念 1、`FastMCP` 服务器 2、工具 3、资源 4、提示 5、上下文 6、图片 7、MCP 客户端 7.1 客户端方法 7.2 运输选项 7.3 LLM Sampling 7.4 根访问 四、高级功能 1、代理服务器 2、组成 MCP 服务器 3、OpenAPI & FastAPI 生成 4、处理 `std

AI工程化、开源分享、文档翻译、代码笔记 1万+

快速构建 MCP 服务器的 Python 利器:FastMCP 快速入门

无论是在数据分析、智能客服、物联网还是教育培训等领域,FastMCP 都能发挥巨大的作用,帮助开发者快速构建功能强大、易于维护的 MCP 服务器,推动 LLM 应用的发展和创新。例如,一个财经新闻 LLM 应用可以调用 MCP 服务器上的股票数据分析工具,获取股票的走势、指标等信息,为用户提供个性化、准确的财经新闻和投资建议。当客户通过 LLM 应用咨询问题时,LLM 可以调用相应的工具获取准确的信息,并以自然语言的方式回复客户,提高客户服务的效率和质量。而 FastMCP 的出现,极大地简化了这一过程。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 3368

FastMCP:为大语言模型构建强大的上下文和工具服务

FastMCP是一个高效的Python库,旨在为大语言模型(LLM)提供强大的上下文和工具服务。它基于模型上下文协议(MCP),该协议为LLM与外部系统的交互提供了标准化方式。FastMCP简化了MCP服务器和客户端的构建,具有高效开发、简洁设计和Python风格等优势。其核心功能包括资源(Resources)、工具(Tools)、提示(Prompts)和上下文(Context),分别用于提供数据、执行操作、创建提示模板和增强交互功能。

专注于人工智能领域的小何尚 6332

STM32 SYSTICK定时器及延时函数详解

STM32 SYSTICK及延时函数详解 SysTick定时器 SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。在以前,大多操作系统需要一个硬件定时器来产生操作系统需要的滴答中断,作为整个系统的时基。例如,为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心

w1050321758的博客 2366

MTK Linux DRM分析(八)- KMS drm_crtc.c

CRTC 在 Linux DRM 子系统中是显示控制的核心,负责时序生成、模式设置和管线的调度。理解其工作原理和 API 对于进行底层图形开发、调试显示问题或 simply understanding how your graphics stack works 都至关重要。

iTom1900 1349

从MCP实践到开发简单的MCP服务

说明下,为什么其他MCP服务器基本上配置就好了,这边要启动那,其他的MCP Server是在远程启动好的服务,而Lark-MCP的服务器需要本地启动,然后Lark-MCP只是将MCP的交互协议转成了飞书的各种API调用,飞书没有在平台启动MCP ,所以不行。它正在以惊人的速度进化,而今天的选择,将决定明天的高度。高德地图的MCP是基于SSE的,是一种基于HTTP的技术,客户端和服务器端建立持久连接,服务器端可以实时单向向客户端推送消息,无需客户端反复请求,有点类似websocket;

1090

VS2022跨平台开发实战:SSH远程调试Linux程序全攻略

本文详细介绍了如何使用Visual Studio 2022进行跨平台开发,通过SSH协议远程调试部署在Linux服务器上的C/C++程序。文章提供了从环境搭建、连接配置、项目创建到编译调试的完整实战指南,帮助Windows开发者无缝衔接Linux环境,显著提升问题定位与开发效率。

weixin_28826521的博客 429

MCP入门级简单尝试

既然MCP都已经出现了,甚至已经纳入面试题目了,就简单尝试一下这个新玩意儿。

ordinary_brony的博客 897

Python在Windows环境下驱动乐视三合一摄像头的深度图像处理实践

本文详细介绍了在Windows系统下,使用Python驱动乐视三合一摄像头进行深度图像处理的完整实践流程。从环境配置、驱动安装、OpenNI与OpenCV库的部署,到深度与彩色数据流的读取、可视化、三维点云转换以及背景移除等应用开发,为开发者提供了从零开始掌握深度摄像头编程的实战指南。

gitlab7runner的博客 232

运动控制中的编码器信号优化:滤波技术实战解析

本文深入解析运动控制系统中编码器信号的滤波技术优化方案。从硬件RC低通滤波器参数计算到软件卡尔曼滤波算法实践,详细介绍了如何有效抑制传导干扰、辐射干扰和机械振动带来的信号噪声。通过半导体设备升级案例,展示了三级混合滤波架构如何将位置检测精度提升至±0.8μm,为工程师提供了一套完整的信号优化方法论。

weixin_29247219的博客 237

AutoGen MCP 简单使用

日志相关配置# 初始化FastMCP服务器,并指定服务的名称为:calculatorname="calculator_mcp_server", # 服务名instructions="计算器", # 服务描述# 定义加法工具函数"""加法运算:param x: 第一个数字:param y: 第二个数字:return:"""logger.info(f"加法运算 :{x} + {y} = {res}")# 定义减法工具函数"""减法运算:param x: 第一个数字。

2501_90353350的博客 761

Spring Boot入门(13):Mybatis-Plus之条件构造器使用手册:精通让你快速提高查询效率的技巧!

化繁为简,MP 中条件构造器的使用,极其详细.

**My Coding Family** 3万+

MCP引入一段简单的LangGraph

在https://blog.youkuaiyun.com/ordinary_brony/article/details/150351142中,我们讨论了怎么在构建MCP。为了能够实现更复杂的功能,我们尝试将LangGraph引入到MCP中。

ordinary_brony的博客 965

QGIS之七建筑面由DSM和DEM获取高度并可视化

QGIS建筑面由DSM和DEM获取高度并可视化

yilvyangguang520的博客 3511

2024年上半年试题二:论性能测试方法及其应用

2025年1月,我以系统分析师的身份参与了公司OA系统的开发与建设。该系统包含的功能有打卡签到、公文流转、工资查询等。我们吸取了之前由于系统使用人数激增暴露出的短时间卡顿等问题,所以在本次开发中,我们非常重视系统的性能测试。通过自动化的测试工具模拟多种正常、峰值及异常负载条件对系统的各项性能指标进行测试。性能测试在软件的质量保证中起着重要的作用,它包括的测试内容丰富多样,常见的负载测试和压力测试都属于性能测试。

银帅 548

mcp-agent: 简单的MCP代理框架

​mcp-agent​ 是一个基于 Model Context Protocol (MCP) 的简单、可组合的框架,用于构建智能代理。它旨在通过 MCP 服务器来管理代理的生命周期,并提供构建生产就绪的 AI 代理的简单模式。

748

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

简单容易理解的MCP server实现

Model Context Protocol (MCP) 是一个专门为 LLM(大语言模型)应用设计的协议,它允许你构建服务器以安全、标准化的方式向 LLM 应用程序公开数据和功能。1. Tool(工具)Tool 允许服务器公开可执行的函数,这些函数可由客户端调用并由 LLM 使用来执行操作。Tool 不仅人让 LLM 能从外部获取信息,还能执行写入或操作,为 LLM 提供真正的行动力。模型控制:Tool 直接暴露给 LLM 可执行函数,让模型可以主动调用。2. Resource(资源)

victorwjw的博客 1091

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

solon ai mcp简单使用

solon ai mcp/大模型 mcp简单使用

weixin_44104413的博客 1509

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

一篇文章带你了解MCP以及5分钟手动实现简单MCP Server

MCP协议:AI与外部数据的桥梁 MCP(模型上下文协议)是Anthropic推出的标准化协议,旨在解决AI模型与外部数据源和工具的连接问题。其架构包含MCP主机、客户端和服务器,通过资源(静态/动态数据)、工具(功能插件)和提示词(任务模板)三大核心概念,实现AI与本地/远程资源的交互。文中演示了使用Python SDK快速搭建MCPServer的过程,包括环境配置、工具注册及连接测试,展示了如何让AI安全访问特定数据(如员工评级查询)。该协议为AI应用提供了"即插即用"的通用接口,突

分享Java、Python、AI相关技术以及面试技巧 1142

关于MCP构建的简单代码实现

该内容主要简化整个MCP的代码结构,并实现了MCP的互通的基本结构。

ScalaX的博客 1025

MCP极简入门:超快速上手运行简单的MCP服务和MCP客户端

MCP(Model Context Protocol,模型上下文协议)是一个开放协议,旨在标准化应用程序如何向大型语言模型(LLM)提供上下文。首先我们快速过一下MCP的基本概念,接着我们会通过一个简单的天气服务的教程,来上手学会使用MCP服务和在主机运行服务。作为客户端,自己编写python文件作为服务端,在 Claude Desktop 里调用server.py。前期的步骤与上文介绍的一致,先决条件和uv的安装看。至此,我们的第一个MCP服务端和客户端编写完成。

Cherish 2万+

Python实现一个简单的MCP

• 在Cursor聊天框输入:“我的桌面上有哪些文件?• 推荐Python 3.10+(最低3.8)• 观察MCP工具调用过程,需手动授权首次访问。:创建可查询桌面文件列表的MCP服务。• 限制资源密集型操作的执行时间。应返回1.5.0+版本。

hello! 4007

简单的mcp 服务示例

本文介绍了如何创建和使用一个简单的Python工具集(tools.py)和MCP服务(mcp_test.py)。tools.py提供了文件操作、系统信息查询等功能,包括读取文件、列出文件、重命名文件、获取主机信息等。mcp_test.py将这些功能封装为MCP服务,支持通过stdio或HTTP调用。文章还详细说明了如何配置cursor编辑器以连接本地运行的MCP服务,包括指定Python解释器路径和脚本路径。最后通过测试截图展示了MCP服务的运行效果。这个简易的MCP实现可以作为本地工具调用的基础框架。

LiuPig 450
上一篇: 借助LlamaIndex实现简单Agent
下一篇: 简单使用Slidev和PPTist
MasonYyp
博客等级 码龄9年 301粉丝 297原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值