MCP
MCP 何时比 CLI 更合适?
LLM 非常擅长使用命令行工具。他们已经学习过数百万份手册页
命令行界面 (CLI) 可以进行组合操作
优秀的 API,优秀的 CLI
身份验证功能
拥有一个标准化的接口是有价值的
MCP 使用 JSON-RPC 2.0 协议进行通信,这是一种轻量级的远程过程调用协议
stdio transport(标准输入/输出传输)是一种基于操作系统标准流(stdin/stdout)实现的本地进程间通信(IPC)机制
stdio 传输是最简单也最常见的内置 Transport
官方标准 Transport
官方给出了两种开箱即用的实现:
stdio:利用 stdin/stdout,面向本地进程通信(modelcontextprotocol.io, mcp-framework.com)。
SSE / Streamable HTTP:基于长连接的服务器推送,适合多客户端、跨网络场景(modelcontextprotocol.io, medium.com)
案例
Python FastMCP 实战 依赖:pip install fastmcp
Server:对外暴露工具的服务端 一个 Python 脚本,声明"这些函数可以被 LLM 调用",跑起来之后就在监听请求。
Tool:希望 LLM 使用的函数,可以是任何东西:查天气、查数据库、发邮件。这跟写普通 Python 函数没什么区别,加个装饰器剩下的交给 MCP。
Client:连接 Server 并调用工具的客户端。生产环境里一般就是 LLM 应用本身。测试阶段可以用 FastMCP 自带的客户端,开箱即用
增加MCP
命令行
方法1:命令行添加(推荐新手)
Claude Code提供了简单的命令行工具来添加MCP服务器:
# 基本语法
claude mcp add [选项] <名称> <命令或URL> [参数...]
# 实际例子:添加本地文件系统访问
claude mcp add my-filesystem -- npx -y @modelcontextprotocol/server-filesystem ~/Documents
# 带环境变量的例子
claude mcp add api-server -e API_KEY=your-key-here -- /path/to/server
配置文件 Project作用域(团队共享 User作用域(全局
claude mcp add --scope user duckdb --transport stdio -- uvx mcp-server-motherduck --db-path /absolute/path/to/db.duckdb
-s user
--scope user
command
npx 是一个用于执行 Node.js 包的便捷工具
uvx 是 Python 包管理工具 uv 的重要组成部分,主要用于在隔离环境中快速运行 Python 命令行工具或脚本,无需永久安装工具包
uvx 是uv 的一个功能扩展,专门用于运行Python工具
常见的命令
claude mcp list
claude mcp remove [选项] <名称>
claude mcp add-json <名称> <JSON字符串>
add-json命令允许通过JSON字符串直接添加MCP服务器配置,特别适合复杂配置。
mcp-server-duckdb
mcp-server-motherduck
Skills
Claude Skills 是一种模块化的能力包(modular skill package), 用简单点的比喻:它就像给 AI 装插件
每个 Skill 是一个文件夹,通常包含:SKILL.md:说明书,描述用途、操作流程
duckdb MCP
claude mcp add MotherDuck --transport http https://api.motherduck.com/mcp
参数
"--allow-switch-databases"
###S3的权限
AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_DEFAULT_REGION
src/mcp_server_motherduck/database.py
if aws_access_key and aws_secret_key and not aws_session_token:
# Use CREATE SECRET for better credential management
conn.execute(f"""
CREATE SECRET IF NOT EXISTS s3_secret (
TYPE S3,
KEY_ID '{aws_access_key}',
SECRET '{aws_secret_key}',
REGION '{aws_region}'
);
""")
elif aws_session_token:
# Use credential_chain provider to automatically fetch credentials
# This supports IAM roles, SSO, instance profiles, etc.
conn.execute(f"""
CREATE SECRET IF NOT EXISTS s3_secret (
TYPE S3,
PROVIDER credential_chain,
REGION '{aws_region}'
);
""")
###tools
src/mcp_server_motherduck/tools
UV工具
一个是 UV_DEFAULT_INDEX (给 pip 包用的),
一个是 UV_PYTHON_INSTALL_MIRROR (给 Python 版本下载用的)
UV_PYTHON_INSTALL_MIRROR
述压缩包放入这个目录,
然后将环境变量UV_PYTHON_INSTALL_MIRROR设置成这个目录,
这样就uv就会去这个目录里面找压缩包,然后快速安装python了。比如
export UV_PYTHON_INSTALL_MIRROR=file:///mnt/workspace/uv_python_install_mirror/20250409
pip install uv -i https://pypi.tuna.tsinghua.edu.cn/simple
echo 'export UV_DEFAULT_INDEX=https://mirrors.aliyun.com/pypi/simple/' >> ~/.bashrc
echo 'export UV_PYTHON_INSTALL_MIRROR=https://mirrors.ustc.edu.cn/github-release/astral-sh/python-build-standalone/' >> ~/.bashrc
claude mcp add --scope user duckdb --transport stdio -- uvx mcp-server-motherduck --db-path /data/database/test.db
https://github.com/astral-sh/python-build-standalone/releases/download
该地址是 uv 工具在未设置镜像时默认使用的源,
用于下载由 astral-sh/python-build-standalone 提供的 Python 独立构建版本
南京大学
https://mirror.nju.edu.cn/github-release/indygreg/python-build-standalone/LatestRelease/
UV_CACHE_DIR
等同于 --cache-dir 命令行参数。如果设置,uv 将使用此目录进行缓存,而不是默认的缓存目录
参考
Claude Code 添加 MCP 服务器完整指南
https://pypi.org/project/mcp-server-motherduck/
https://github.com/motherduckdb/mcp-server-motherduck
https://hellowac.github.io/uv-zh-cn/configuration/environment/
https://motherduck.com/docs/sql-reference/mcp/