使用Python开发自己的MCP服务:AI能力扩展入门指南
引言随着人工智能技术的快速发展,大语言模型(LLM)如ChatGPT、Claude等已经成为了改变我们工作和生活方式的强大工具。但你是否想过,如何让这些AI模型具备访问外部工具和数据的能力,从而解决更复杂的问题?今天,我将向大家介绍一项令人兴奋的技术——模型上下文协议(Model Context Protocol,简称MCP),并教你如何使用Python开发自己的MCP服务,为AI模型赋予更强大的能力。
什么是MCP?基本概念模型上下文协议(MCP)是一个开放标准,用于AI应用程序与大型语言模型之间的通信。它定义了一套标准接口,使应用程序能够向模型提供上下文信息,并允许模型调用应用程序暴露的工具。
简单来说,MCP就像是AI模型和外部世界之间的一座桥梁,让模型能够”看见”和”操作”外部的数据和功能。
为什么需要MCP?想象一下,如果你正在与ChatGPT聊天,希望它能够:
查询你的个人日历
分析你的Excel数据
控制你的智能家居设备
从你的私有数据库中获取信息
这些功能都需要AI模型能够访问外部系统和数据,而MCP正是为解决这一需求而生的。
MCP的核心组件MCP协议定义了三个核 ...
使用NSSM将程序注册为Windows服务
NSSM (Non-Sucking Service Manager) 是一个非常实用的Windows服务管理工具,它可以将任何应用程序注册为Windows服务,支持开机自启动、失败自动重启等功能,本文将介绍如何使用NSSM,并以Nginx为例进行实践。
NSSM简介NSSM的主要特点:
可以将任何可执行程序注册为Windows服务
支持服务失败自动重启
支持开机自动启动
可以捕获程序的标准输出和错误输出到日志文件
提供图形界面和命令行两种操作方式
完全免费开源
安装NSSM
下载NSSM访问 NSSM官网 下载最新版本或使用 Chocolatey 包管理器安装:
1choco install nssm
解压下载的zip文件(如果是手动下载)将win64目录下的nssm.exe复制到一个固定目录,比如:C:\Program Files\nssm
添加环境变量(可选)将nssm.exe所在目录添加到系统PATH环境变量中
使用NSSM注册Nginx服务图形界面方式
打开命令提示符,输入:
1nssm install nginx
在弹出的图形界面中配置:
Path:填写n ...
在Cursor中配置MCP
什么是Cursor MCPMCP (Model Context Protocol) 是由Anthropic公司开发的协议,旨在让大型语言模型(LLM)能够安全地与外部工具和服务交互。Cursor作为先进的AI编程工具,集成了MCP功能,允许Cursor连接自定义AI模型服务器,扩展AI助手能力,连接第三方服务(GitHub、Jira等)。通过MCP,AI助手能够获取实时数据、执行特定操作,大大增强了其实用性和功能范围。
配置步骤1. 打开MCP配置界面
打开Cursor
点击左下角设置图标或使用快捷键 Ctrl+Shift+P(Windows)/Cmd+Shift+P(Mac)
搜索并选择”Cursor Settings”
在左侧边栏选择”MCP”
2. 添加MCP服务器在MCP Servers部分,点击”Add new MCP server”,推荐配置以下三个服务器:
2.1 GitHub MCP Server
Name: GitHub
Type: command
Command: npx -y @modelcontextprotocol/server-github
主 ...
在本地电脑部署AI大模型
软件:
ollama: https://ollama.com/
docker: https://www.docker.com/
open-webui: https://github.com/open-webui/open-webui
1. 下载安装ollama. https://ollama.com/download1234567891011121314151617181920# ollama -hLarge language model runnerUsage: ollama [flags] ollama [command]Available Commands: serve Start ollama create Create a model from a Modelfile show Show information for a model run Run a model stop Stop a running model pull Pull a model from a regis ...
Sunshine & Moonlight实现串流传输
有时希望将家里的投影仪作为电脑显示器及音响,但是重新布线却很麻烦,这时使用串流传输就可以轻松解决。开源方案就是:Sunshine & Moonlight,它可以实现低延迟、高画质的跨平台串流体验。
简介Sunshine简介Sunshine是一个开源的串流服务器软件,可以安装在Windows、Linux等系统上。它的主要功能包括:
捕获屏幕画面和音频
对画面进行编码压缩
通过网络传输给客户端
Sunshine支持多种编码格式,如H.264、HEVC等,可以根据网络状况自动调整画质。
Moonlight客户端Moonlight是与Sunshine配套的客户端软件,支持Windows、Android、iOS等多个平台。它可以接收Sunshine传输的画面,并进行解码显示。Moonlight的主要特点包括:
低延迟:延迟可低至20ms
高画质:支持4K 120FPS串流
跨平台:支持PC、手机、平板等设备
手柄支持:可使用手柄控制远程设备
部署与配置SunShine安装SunShine部署在远程被控制电脑上,下载对应系统的安装包,直接安装运行即可。Sunshine下载:http ...
Vault常见操作
Hashicorp Vault 是一个基于身份的秘密和加密管理系统,用于严格控制访问各种机密数据,如 API 加密密钥、密码和证书。以下是 Vault 的一些常见使用操作。
Login12$ export VAULT_ADDR='http://your-vault-address:8200'$ export VAULT_TOKEN='your-vault-token'
Secret操作
secret引擎KV
Pathregion/cluster/project/application
Keydevops-api
fieldk-name
valuek-value
查看权限
1$ vault token lookup
新建kv
12345$ vault secrets enable \ -path=/git-av \ -description "k/v engine for the quickstart guide" \ -version=1 \ kv
查看所有secr ...
Lego签SSL证书
HTTPS已经成为当今网站的标准配置,为网站提供加密和身份验证功能。但是申请和维护SSL证书一直是一个繁琐的过程。幸运的是,Lego这个强大的工具可以帮助我们轻松地自动化获取和更新Let’s Encrypt免费SSL证书。
Lego 简介Lego是一个用Go语言编写的Let’s Encrypt客户端,它可以帮助我们自动化完成SSL证书的申请、验证和更新过程。相比于其他工具,Lego的优势在于:
支持多种验证方式,包括HTTP和DNS验证
集成了众多DNS服务商的API,可以自动完成DNS验证
使用简单,只需几个命令即可完成证书申请
支持通配符证书
安装 Lego
mac1brew install lego
docker1docker run goacme/lego -h
签发rout53证书
配置AWS密钥123export AWS_ACCESS_KEY_ID=xxxexport AWS_SECRET_ACCESS_KEY=xxxexport AWS_REGION=us-east-1
生成ssl证书1lego --email xhuaustc@gmail.com --domain ...
selenium+Xvfb+ffmpeg实现服务器录屏
在现代软件开发中,自动化测试变得越来越重要,而录屏功能则为测试结果的验证提供了直观的方式。通过结合Selenium、Xvfb和FFmpeg这三个强大的工具,我们可以在服务器上实现无头(headless)的录屏环境,这对于没有图形界面的服务器尤其有用。
Selenium是一个自动化测试工具,它可以模拟用户对网页的操作,如点击、输入文本等。Xvfb(X虚拟帧缓冲)提供了一个虚拟的显示环境,使得我们可以在不需要实际显示器的情况下运行图形应用程序。FFmpeg是一个强大的多媒体框架,能够处理视频和音频的录制、转换和流式传输。
将这三个工具结合起来,我们可以创建一个自动化的录屏流程,这个流程可以在后台运行,录制Selenium驱动的浏览器会话。这样,无论是进行自动化测试验证,还是生成用户操作教程,都可以通过这种方式来实现。
例如,我们可以使用Selenium启动一个浏览器会话,然后用Xvfb创建一个虚拟的显示环境来捕获这个会话的屏幕。接着,使用FFmpeg开始录制屏幕内容,直到测试完成。这个过程完全自动化,可以集成到持续集成/持续部署(CI/CD)的流程中,提高开发效率和质量 ...
常用的Tcpdump命令
监控某一网络接口的数据包
1tcpdump -i eth0
查看dns解析的包 port domain
1tcpdump -i eth0 -nt -s 500 port domain
-t 不显示时间-n 不会将ip显示为hostname
过滤IP
12345tcpdump -i eth0 host 202.22.22.22tcpdump -i eth0 src host 202.22.22.22 ## 指定源地址tcpdump -i eth0 dst host 202.22.22.22 ## 指定目的地址tcpdump -i eth0 host 202.22.22.22 and \(202.22.22.21 or 202.22.22.20 \) ## 获取202.22.22.22 与 202.22.22.21或202.22.22.20之间的包tcpdump -i eth0 host 202.22.22.22 and !202.22.22.21 ## 获取202.22.22.22 与 除了202.22.22.21 之外的ip之间的包
过滤端口 port
123tcpd ...
Jenkins Pipeline局部变量
变量未定义在编写Jenkinsfile时,经常会遇到变量问题,明明已经定义过了,但是函数是就是无法读取。例如:
123456789101112131415161718def some_var = "some value"def pr() { def another_var = "another " + some_var echo "${another_var}"}pipeline { agent any stages { stage ("Run") { steps { pr() } } }}
将获得如下错误:
1groovy.lang.MissingPropertyException: No such property: some_var for class: ...