mcp工具开发
·
MCP 工具开发
环境准备
首先安装 uv,本项目完全基于 uv 运行。这里解释下为什么用 uv:本地运行会从工作目录逐级向上找虚拟环境,而如果从三方库或 git 里拉包运行,uvx 可以自行解决依赖,交给 agent 的最好是一个命令就能解决。
代码编写
创建文件 src/my_mcp/server.py:
import time
from mcp.server import MCPServer
mcp = MCPServer("my-mcp")
@mcp.tool()
def add(a: int, b: int) -> int:
"""计算两个数字的和"""
return a + b
@mcp.tool()
def get_current_timestamp() -> str:
"""获取当前时间戳"""
return str(int(time.time()*1000))
def main():
print('my mcp server start')
mcp.run()
if name == "main":
main()
开发调试阶段
进入项目根目录,运行以下命令,会弹出界面可以调用调试工具:
uv run mcp dev src/my_mcp/server.py
提供给其它 agent 使用,如 trae
配置项目的 pyproject.toml
会从 src 找到对应的入口:
[project.scripts]
my-mcp = "my_mcp.server:main"
# ...添加其它的工具
[tool.uv]
# 需要配置识别 package
package = true
运行
my-mcp 就是上面 project.scripts 配置的入口别名,如果报错通过 uv sync 命令查看警告报错信息:
uv run my-mcp
trae 配置
在 .trae/mcp.json 里进行配置,指定到本地 D:/xx/my_mcp_tool 的项目根目录运行:
{
"mcpServers": {
"my-mcp": {
"command": "uv",
"args": ["run", "--directory", "D:/xx/my_mcp_tool", "my-mcp"]
}
}
}
给其它人使用
搭建 Python 私有仓库
docker-compose.yml 配置如下:
version: '3.8'
services:
pypiserver:
image: pypiserver/pypiserver:latest
container_name: pypi-private
restart: unless-stopped
ports:
- "8900:8900"
volumes:
- ./packages:/data/packages # 包存储目录 - 持久化你的 Python 包
- ./.htpasswd:/data/.htpasswd # 认证文件 - 存储用户名密码
environment:
- TZ=Asia/Shanghai # 设置时区
command: >
run
-P /data/.htpasswd
-a "update,download,list"
--fallback-url https://pypi.tuna.tsinghua.edu.cn/simple
/data/packages
networks:
- pypi-network
networks:
pypi-network:
driver: bridge
.htpasswd 生成:
# Ubuntu/Debian:
#sudo apt-get install apache2-utils
# CentOS/RHEL:
sudo yum install httpd-tools
# 创建密码文件,用户名设为 admin (交互式输入密码)
htpasswd -sc .htpasswd admin
docker 运行:
docker compose up -d
上传包
配置添加
# 配置私有仓库索引
[[tool.uv.index]]
name = "qatools" # 索引名称,后续命令会用到
url = "http://qatools.test.com:8900/simple/" # 安装时使用的索引地址(通常以 /simple/ 结尾)
publish-url = "http://qatools.test.com:8900/" # 上传包的地址
命令执行
uv build
export UV_INSECURE_HOST=qatools.test.com:8900
uv publish --index qatools --username admin --password ******
上传成功可在 web 页面访问查看:http://qatools.test.com:8900/simple/
本地安装包
uvx 运行(这里解释下 uvx 执行逻辑,一般会在用户根目录 .cache/uv 目录下自动创建虚拟环境安装依赖包):
uvx --extra-index-url http://admin:******@qatools.test.com:8900/simple/
--allow-insecure-host qatools.test.com
--from my-mcp-tool my-mcp.exe
trae 配置:
{
"mcpServers": {
"timestamp-mcp": {
"command": "uvx",
"args": [
"--extra-index-url",
"http://admin:******@qatools.test.com:8900/simple/",
"--allow-insecure-host",
"qatools.test.com",
"--from",
"my-mcp-tool",
"my-mcp.exe"
]
}
}
}更多推荐



所有评论(0)