卓越的MCP最佳实践 
一份精心策划的、有主见的优秀模型上下文协议(MCP)最佳实践列表,因为它们与构建MCP服务器和MCP客户端有关。
______________________________________________________________________
MCP服务器
- 1 MCP服务器工具:
- MCP服务器部署:
-
- MCP服务器安全:
- MCP服务器性能:
- MCP服务器错误和可观察性:
MCP客户端
待定
______________________________________________________________________
1个MCP服务器工具
🔵 1.1工具命名标准
为您的MCP服务器使用一致、兼容的命名约定 Tools 以确保MCP客户端能够正确发现和调用它们。
❌ 避免这些工具命名约定
- 空间:
get Npm Package Info - 点符号:
get.Npm.Package.Info - 括号/圆括号:
get(Npm)PackageInfo
-
✅ 推荐的工具命名约定
- ✅ camelCase(首选):
getNpmPackageInfo - 烤肉串箱:
get-npm-package-info - 蛇病例:
get_npm_package_info
server.tool(
"getNpmPackageInfo",
"Get information about an npm package",
{
packageName: z.string()
},
async ({ packageName }) => {
// Implementation details...
return {
content: [{ type: "text", text: output }],
};
}
);💡 为什么重要
使用非标准命名约定可能会阻止或干扰MCP客户端正确发现并向最终用户展示您的工具。GPT-4o代币化最适合 camelCase 命名约定。
______________________________________________________________________
🔵 1.2避免未找到响应
在MCP服务器中实现搜索类型工具时,即使没有精确匹配,也要避免返回显式的“未找到”消息。
❌ 问题模式
// Don't do this
if (!exactMatch) {
return {
content: [
{
type: "text",
text: `Module ${query} not found. Here are all available modules: ${allModules}`
}
]
};
}✅ 推荐作法
// Do this instead
return {
content: [
{
type: "text",
text: `Here are the available modules that may help with your query: ${relevantModules}`
}
]
};💡 为什么重要
让LLM根据提供的数据确定相关性,而不是过早地在工具响应中声明失败。LLM可能会受到“找不到”等负面陈述的过度影响,导致他们忽略下面的有用信息。通过提供没有负面框架的相关数据,您使LLM能够正确处理和利用所有可用信息。
⚠️ 重要例外
这种方法并不适用于所有场景。在处理敏感数据(如用户信息)时,安全和隐私问题应优先于提供替代数据。
______________________________________________________________________
MCP服务器部署:
🔵 将MCP服务器打包为Docker容器
将MCP服务器部署为Docker容器,以消除环境设置挑战,并确保跨不同系统的一致操作。
💡 为什么重要
MCP服务器通常需要具有特定版本和依赖关系的特定运行时环境(Node.js、Python)。Docker抽象了这些要求,将复杂的设置指令转化为简单的容器运行命令。
💪 关键利益
- 一致性:消除“在我的机器上工作”的问题
- 隔离:防止与主机系统的依赖性冲突
- 可移植性:在开发、测试和生产过程中运行一致
- 简化部署:将用户设置减少到安装Docker和运行容器
- 资源管理:提供用于控制CPU、内存和网络使用的内置工具
示例 Dockerfile 打包MCP服务器的实现:
FROM node:18-slim
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]用户按如下方式运行它:
docker run -p 3000:3000 your-mcp-server-image______________________________________________________________________
MCP服务器安全:
🔵 安全MCP服务器依赖关系
确保您的MCP服务器没有第三方依赖关系中的已知漏洞,以满足安全要求并促进组织采用。
💡 为什么重要
MCP服务器通常需要广泛的访问和集成能力,因此任何漏洞都是重大的安全风险。组织IT和安全团队在批准采用之前会仔细审查这些依赖关系。
- MCP服务器必须满足严格的安全和合规要求
- 易受攻击的依赖关系为恶意行为者创造了潜在的入口点
- SolarWinds攻击后,SBOM要求强制实施安全措施
✅ 推荐作法
- 定期扫描依赖关系以查找已知漏洞
- 将所有组件更新到最新的安全版本
- 监控与您的依赖关系相关的安全建议
- 确保符合许可和安全标准
