GLPI MCP

______________________________________________________________________
法语
服务器 MCP(模型上下文协议) 允许AI助手-如 克劳德 -通过其REST API直接与GLPI实例交互。
兼容 GLPI 10 (终点 apirest.php)et GLPI 11 (终点 api.php/v1).
配置后,Claude可以查看、创建和更新票证、添加跟踪和任务、发布解决方案、管理知识库和生成统计数据,所有这些都是您对话中的自然语言。
______________________________________________________________________
先决条件
1.GLPI
- GLPI 10.x 或 11.x (默认情况下启用REST API)
- 必须启用REST API: 配置→常规→API→启用REST API→是
- 一个 应用令牌 在GLPI中创建: 配置→常规→API→添加API客户端
- 一个 用户令牌 与您的帐户关联: 我的个人资料→API→重新生成
⚠️ 与用户令牌关联的帐户必须对GLPI中的票据具有足够的权限(根据所需用途读取、写入、删除)。
2.Python
- python 3.12或更高
- 紫外线 (推荐)
# Vérifier la version Python
python --version
# Installer uv si nécessaire
pip install uv3.克劳德桌面
- 克劳德桌面 安装在您的机器上
- Claude帐户,可访问 MCP集成 (专业或更高计划)
______________________________________________________________________
安装
1.克隆存储库
git clone https://github.com/svtica/glpi-mcp.git
cd glpi-mcp2.安装依赖项
uv sync______________________________________________________________________
配置(每个用户)
服务器从文件读取其凭据 config.json 位于同一文件夹中 server.py.这个文件是 每个用户的个人 并且永远不应该被版本化(它在 .gitignore).
创建config.json
复制示例文件并输入值:
cp config.example.json config.json值必须编码为 base64 :
PowerShell:
[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("https://glpi.monentreprise.ca"))Linux/macOS:
echo -n "https://glpi.monentreprise.ca" | base64然后填写中的字段 config.json :
| 冠军 | 描述 |
|---|---|
GLPI_URL | GLPI实例的基本URL(无 / 最终) |
GLPI_APP_TOKEN | 在GLPI API配置中创建的应用程序令牌 |
GLPI_USER_TOKEN | 您的GLPI帐户的用户令牌 |
LANG | 标签语言: fr (缺陷)或 en -未使用base64编码 |
GLPI_VERSION | GLPI版本: 10 (缺陷)或 11 -未使用base64编码 |
您还可以使用 环境变量 (GLPI_URL,GLPI_APP_TOKEN,GLPI_USER_TOKEN,GLPI_LANG,GLPI_VERSION)而不是文件config.json.
支持的GLPI版本
| 版本 | 端点API | 身份验证 |
|---|---|---|
| GLPI 10 | apirest.php | 应用令牌+用户令牌→会话密钥 |
| GLPI 11 | api.php/v1 | 应用程序令牌+用户令牌→会话令牌(相同机制) |
冠军 GLPI_VERSION 确定正在使用哪个端点前缀。两个版本每个会话使用相同的身份验证(initSession)的。所有工具都与两个版本兼容。
______________________________________________________________________
与Claude Desktop集成
方法1-Claude扩展(推荐)
将项目内容复制到Claude Extensions文件夹:
%APPDATA%\Claude\Claude Extensions\ant.dir.svtica.glpi-mcp\创建您的 config.json 您的凭证人员(见上一节)。
文件夹必须包含一个文件 manifest.json :
{
"manifest_version": "0.2",
"name": "GLPI-MCP",
"version": "0.1.0",
"description": "Serveur MCP pour l'integration GLPI",
"author": { "name": "Votre Nom", "url": "" },
"server": {
"type": "python",
"entry_point": "server.py",
"mcp_config": {
"command": "uv",
"args": ["--directory", "${__dirname}", "run", "python", "server.py"]
}
}
}重新启动Claude桌面。机器的每个用户都将自己的文件复制到自己的文件夹中 %APPDATA% 用他自己的 config.json.
方法2-claude-desktop-config.json(手动)
打开Claude桌面配置文件:
- 视窗 :
%APPDATA%\Claude\claude_desktop_config.json - macOS :
~/Library/Application Support/Claude/claude_desktop_config.json
添加部分 mcpServers :
视窗
{
"mcpServers": {
"glpi": {
"command": "uv",
"args": [
"--directory",
"C:\\Chemin\\vers\\glpi-mcp",
"run",
"python",
"server.py"
]
}
},
"preferences": {
"coworkScheduledTasksEnabled": false,
"sidebarMode": "code"
}
}macOS/Linux
{
"mcpServers": {
"glpi": {
"command": "uv",
"args": [
"--directory",
"/chemin/vers/glpi-mcp",
"run",
"python",
"server.py"
]
}
}
}⚠️ 确保JSON有效-缺少大括号或逗号足以阻止Claude Desktop加载配置。如果需要,请使用JSON验证器。
重新启动Claude桌面。如果配置正确,图标🔌 将出现在Claude工具栏中,指示MCP服务器已连接。
______________________________________________________________________
可用工具
🔐 会话
| 输出 | 描述 |
|---|---|
kill_session | 干净地关闭活动GLPI会话 |
🎫 门票
| 输出 | 描述 |
|---|---|
list_tickets | 列出带有分页和过滤器(状态、类型)的票证 |
get_ticket | 带有可读标签的票据的完整详细信息 |
search_tickets | 按关键字、状态、类型、类别、分配进行高级搜索 |
create_ticket | 创建新票证 |
update_ticket | 更改现有票据的字段 |
delete_ticket | 删除票证 |
link_tickets | 将两张票链接在一起(链接、重复、子、父) |
list_ticket_links | 列出票证中的所有链接 |
merge_tickets | 将源票据合并到目标票据(复制跟踪、链接重复、关闭源) |
💬 跟踪
| 输出 | 描述 |
|---|---|
list_followups | 列出票证的所有跟踪项 |
get_followup | 后续行动详情 |
add_followup | 添加跟踪(公共或私人) |
✅ 任务
| 输出 | 描述 |
|---|---|
list_tasks | 列出票据的任务 |
add_task | 在票据上创建任务 |
update_task | 更改任务(状态、持续时间、分配) |
delete_task | 删除任务 |
💡 解决方案
| 输出 | 描述 |
|---|---|
get_solution | 读取票证的解决方案 |
add_solution | 发布解决方案(根据GLPI配置关闭票据) |
📊 统计
| 输出 | 描述 |
|---|---|
stats_by_status | 按状态划分的门票数量 |
stats_by_type | 分发事件/服务请求 |
stats_by_priority | 门票按优先顺序开放 |
stats_by_category | 每个ITIL类别的门票数量 |
stats_by_assignee | 指定技术人员的门票 |
stats_resolution_time | 解决票证的平均时间 |
stats_overdue | 与SLA相比延迟的门票 |
📚 知识库
| 输出 | 描述 |
|---|---|
list_kb_articles | 用分页列出文章。是 range_start > 60 和 range_limit > 10, range_limit 自动箝位为10(JSON响应中的完整HTML内容通常超过 memory_limit GLPI侧的PHP-FPM)。当夹具应用时,响应是dict {"_clamped_range_limit": 10, "_warning": "...", "items": [...]} 而不是列表。 |
get_kb_article | 文章的完整详细信息 |
search_kb_articles | 按关键字搜索(默认标题;跳过 search_content=True 要包含html正文-在MySQL上没有全文索引的速度慢 knowbaseitems.answer) |
create_kb_article | 创建新文章(标题、HTML内容、类别、常见问题) |
update_kb_article | 更新现有文章 |
list_kb_categories | 列出知识库类别 |
get_kb_article_visibility | 读取文章的可见性规则(配置文件、组、用户、实体) |
add_kb_article_visibility_profile | 将配置文件添加到文章的可见性 |
add_kb_article_visibility_group | 将组添加到文章的可见性 |
update_kb_article_visibility_profile | 更改每个现有配置文件的可见性规则 |
update_kb_article_visibility_group | 更改每个现有组的可见性规则 |
注: 删除可见性规则并不是为了保留过时程序的历史记录而自愿公开的。
📋 参考
| 输出 | 描述 |
|---|---|
list_itil_categories | 列出可用的ITIL类别 |
get_users GLPI用户列表 | |
get_groups GLPI组列表 |
______________________________________________________________________
Claude的使用示例
*“向我展示所有高优先级的开放事件”*
*“为Marie Tremblay安装Adobe Acrobat创建服务请求票证”*
*“在票证号4521上添加跟踪,以通知用户问题正在调查中”*
*“将票证4530和4531合并到票证4521”* *“将票证4530链接到票证4521作为副本”* *“按状态划分的票务统计数据是什么?»* *“解决票证的平均时间是多少?»* *“向我展示SLA延迟的门票”*
*“在知识库中查找VPN问题的解决方案”*
*“谁可以查看知识库文章120?»*
*“将技术人员组添加到文章120的可见性”*
*«关闭票证4102,解决方案为:重新启动解决问题的服务»*
______________________________________________________________________
参考映射
法规
| 代码 | 标签 |
|---|---|
| 1 | 新风格 |
| 2 | 正在进行(已分配) |
| 3 | 正在进行(计划) |
| 4等待 | |
| 5已解决 | |
| 6 | 克洛斯 |
类型
| 代码 | 标签 |
|---|---|
| 1 | 事故 |
| 2服务请求 |
优先事项/紧急情况/影响
| 代码 | 标签 |
|---|---|
| 1非常低 | |
| 2低音 | |
| 3平均 | |
| 4 | 高级 |
| 5非常高 | |
| 6 | 不可抗力 |
门票之间的链接类型
| 代码 | 标签 |
|---|---|
| 1 | 链接到 |
| 2重复 | |
| 3 | 儿童 |
| 4 | 家长 |
______________________________________________________________________
故障排除
服务器不会出现在Claude Desktop中
- 检查配置文件的JSON语法(没有缺少逗号或过多,没有过大括号)
- 检查文件夹的路径是否正确且绝对
- 完全重新启动Claude桌面
- 确保文件
%APPDATA%\Claude\connectors\存在(如果需要,创建)
401每次呼叫时出错
- 检查
GLPI_APP_TOKEN和GLPI_USER_TOKEN在你的config.json - 确保在GLPI中启用了REST API
- 验证GLPI中的API客户端是否处于活动状态,以及是否允许IP
连接错误/超时
- 检查
GLPI_URL可从运行服务器的机器访问 - 确保没有防火墙阻止连接
- 所有HTTP请求的最大延迟为 30秒 (连接时间为10秒)。除此之外,该工具还返回带有键的结构化dict
error和detail(标签取自表格LANG)而不是pendre-默认为法语:{"error": "Timeout HTTP", "detail": "Requête > 30s — voir GLPI logs"}如果您反复收到此消息,请检查GLPI端的PHP-FPM/MySQL日志:底层查询可能太贵(通常是没有索引的全文搜索)。
企业环境-SSL拦截代理(Zscaler、Forcepoint等)
在企业环境中,SSL代理可以拦截HTTPS连接,并用内部证书替换证书。这会在安装依赖项时导致以下错误: uv :
× Failed to download `python-dotenv==X.X.X`
╰─▶ invalid peer certificate: UnknownIssuer解决方案: 动子 uv 要将Windows证书存储与环境变量一起使用: UV_NATIVE_TLS.
要在PowerShell中手动测试:
$env:UV_NATIVE_TLS=1
uv run python server.py要让Claude Desktop在服务器启动时自动传递此变量,请添加一个节 env 在你的 claude_desktop_config.json :
{
"mcpServers": {
"glpi": {
"command": "uv",
"args": [
"--directory",
"C:\\Chemin\\vers\\glpi-mcp",
"run",
"python",
"server.py"
],
"env": {
"UV_NATIVE_TLS": "1"
}
}
}
}企业环境-防病毒/EDR紫外线阻滞剂(Riskware)
某些防病毒或企业EDR解决方案可能会分类 uv.exe 如同 风险 因为它从互联网下载可执行文件和软件包。是 uv 被您的安全解决方案阻止:
- 请联系您的IT团队以添加例外
uv.exe(位于%USERPROFILE%\.local\bin\uv.exe) - 还要求允许以下域:
pypi.org,files.pythonhosted.org,astral.sh
或者,询问同事 uv 功能:向您发送文件 .venv 已经生成,这避免了任何下载。
减轻依赖
该项目取决于 mcp[cli] 这包括额外的 [cli] (键入、丰富、点击、shellingham、侏儒、markdown it py…)。此额外功能提供开发命令 mcp dev 和 mcp inspect,对调试有用。
如果您想减少生产中的占地面积(大约少8个软件包),请更改 pyproject.toml :
# Avant (avec outillage CLI)
dependencies = ["mcp[cli]>=1.9.4", "httpx>=0.27"]
# Après (sans outillage CLI — production allégée)
dependencies = ["mcp>=1.9.4", "httpx>=0.27"]然后重新启动 uv sync 以更新环境。
______________________________________________________________________
______________________________________________________________________
英语
MCP(模型上下文协议) 允许AI助手的服务器,例如 克劳德 -通过其REST API与GLPI实例直接交互。
兼容 GLPI 10 (终点 apirest.php)以及 GLPI 11 (终点 api.php/v1).
配置后,Claude可以查看、创建和更新工单,添加跟进和任务,发布解决方案,管理知识库,并生成统计数据,所有这些都可以从您的对话中以自然语言完成。
______________________________________________________________________
先决条件
1.GLPI
- GLPI 10.x 或 11.x (默认情况下启用REST API)
- 必须启用REST API: 设置→ 通用→ API → 启用Rest API→ Yes
- 一 应用令牌 在GLPI中创建: 设置→ 通用→ API → 添加API客户端
- A. 用户令牌 与您的帐户关联: 我的个人资料→ API → 再生
⚠️ 与用户令牌关联的帐户必须对GLPI中的票证具有足够的权限(根据需要进行读取、写入、删除)。
2.Python
- python 3.12或更高
- 紫外线 (推荐)
# Check Python version
python --version
# Install uv if needed
pip install uv3.克劳德桌面
- 克劳德桌面 安装在您的计算机上
- 有权访问的Claude帐户 MCP集成 (专业版或更高版本)
______________________________________________________________________
安装
1.克隆存储库
git clone https://github.com/svtica/glpi-mcp.git
cd glpi-mcp2.安装依赖项
uv sync______________________________________________________________________
配置(每个用户)
服务器从 config.json 文件位于与相同的文件夹中 server.py。此文件是 针对每个用户 并且决不能受版本控制(它在 .gitignore).
创建你的config.json
复制示例文件并填写您的值:
cp config.example.json config.json值必须编码为 base64:
PowerShell:
[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("https://glpi.mycompany.com"))Linux/macOS:
echo -n "https://glpi.mycompany.com" | base64然后填写以下字段 config.json:
| 字段 | 描述 |
|---|---|
GLPI_URL | GLPI实例的基本URL(无尾随 /) |
GLPI_APP_TOKEN | 在GLPI API配置中创建的应用程序令牌 |
GLPI_USER_TOKEN | GLPI帐户中的用户令牌 |
LANG | 标签语言: fr (默认)或 en --未进行base64编码 |
GLPI_VERSION | GLPI版本: 10 (默认)或 11 --未进行base64编码 |
你也可以使用 环境变量 (GLPI_URL,GLPI_APP_TOKEN,GLPI_USER_TOKEN,GLPI_LANG,GLPI_VERSION)而不是config.json文件。
支持的GLPI版本
| 版本 | API端点 | 身份验证 |
|---|---|---|
| GLPI 10 | apirest.php | 应用令牌+用户令牌→会话密钥 |
| GLPI 11 | api.php/v1 | 应用令牌+用户令牌→ 会话令牌(相同机制) |
这 GLPI_VERSION 字段决定使用哪个端点前缀。两个版本都使用相同的基于会话的身份验证(initSession).所有工具都与这两个版本兼容。
______________________________________________________________________
与Claude Desktop集成
方法1-Claude扩展(推荐)
将项目内容复制到Claude Extensions文件夹:
%APPDATA%\Claude\Claude Extensions\ant.dir.svtica.glpi-mcp\创建您的个人 config.json 使用您的凭据(请参阅上一节)。
文件夹必须包含 manifest.json 文件:
{
"manifest_version": "0.2",
"name": "GLPI-MCP",
"version": "0.1.0",
"description": "MCP server for GLPI integration",
"author": { "name": "Your Name", "url": "" },
"server": {
"type": "python",
"entry_point": "server.py",
"mcp_config": {
"command": "uv",
"args": ["--directory", "${__dirname}", "run", "python", "server.py"]
}
}
}重新启动克劳德桌面。计算机上的每个用户都将自己的文件复制到 %APPDATA% 拥有自己的文件夹 config.json.
方法2-claude_desktop_configure.json(手动)
打开Claude Desktop配置文件:
- 视窗:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
添加 mcpServers 章节:
视窗
{
"mcpServers": {
"glpi": {
"command": "uv",
"args": [
"--directory",
"C:\\Path\\to\\glpi-mcp",
"run",
"python",
"server.py"
]
}
},
"preferences": {
"coworkScheduledTasksEnabled": false,
"sidebarMode": "code"
}
}macOS/Linux
{
"mcpServers": {
"glpi": {
"command": "uv",
"args": [
"--directory",
"/path/to/glpi-mcp",
"run",
"python",
"server.py"
]
}
}
}⚠️ 确保JSON有效——缺少大括号或逗号就足以阻止Claude Desktop加载配置。如果需要,请使用JSON验证器。
重新启动克劳德桌面。如果配置正确,a🔌 图标将出现在Claude工具栏中,表示MCP服务器已连接。
______________________________________________________________________
可用工具
🔐 会话
| 工具 | 说明 |
|---|---|
kill_session | 优雅地结束当前的GLPI会议 |
🎫 门票
| 工具 | 说明 |
|---|---|
list_tickets | 列出带有分页和过滤器(状态、类型)的票证 |
get_ticket | 带有可读标签的完整门票详细信息 |
search_tickets | 按关键字、状态、类型、类别、受让人进行高级搜索 |
create_ticket | 创建新票证 |
update_ticket | 更新现有票证的字段 |
delete_ticket | 删除工单 |
link_tickets | 链接两张票(链接、复制、子票、父票) |
list_ticket_links | 列出门票的所有链接 |
merge_tickets | 将源票证合并到目标中(复制后续内容、链接为重复、关闭源) |
💬 后续行动
| 工具 | 说明 |
|---|---|
list_followups | 列出门票的所有后续活动 |
get_followup | 后续详细信息 |
add_followup | 添加跟进(公开或私人) |
✅ 任务
| 工具 | 说明 |
|---|---|
list_tasks | 列出工单的任务 |
add_task | 在工单上创建任务 |
update_task | 更新任务(状态、持续时间、受让人) |
delete_task | 删除任务 |
💡 解决方案
| 工具 | 说明 |
|---|---|
get_solution | 阅读票务解决方案 |
add_solution | 发布解决方案(根据GLPI配置关闭工单) |
📊 统计
| 工具 | 说明 |
|---|---|
stats_by_status | 按状态统计门票数量 |
stats_by_type | 事件与服务请求细分 |
stats_by_priority | 按优先级打开门票 |
stats_by_category | 按ITIL类别统计的门票数量 |
stats_by_assignee | 每位指定技术人员的门票 |
stats_resolution_time | 平均票解决时间 |
stats_overdue | SLA过期的门票 |
📚 知识库
| 工具 | 说明 |
|---|---|
list_kb_articles | 按页码列出文章。如果 range_start > 60 和 range_limit > 10, range_limit 自动限制为10(JSON响应中的完整HTML文章正文通常超过GLPI PHP-FPM memory_limit 除此之外)。当夹紧开始时,反应是一句格言 {"_clamped_range_limit": 10, "_warning": "...", "items": [...]} 而不是列表。 |
get_kb_article | 完整文章详情 |
search_kb_articles | 按关键字搜索(默认情况下仅标题;通过 search_content=True 还要匹配HTML正文——如果没有MySQL FULLTEXT索引,速度会很慢 knowbaseitems.answer) |
create_kb_article | 创建一篇新文章(标题、HTML内容、类别、常见问题解答) |
update_kb_article | 更新现有文章 |
list_kb_categories | 列出知识库类别 |
get_kb_article_visibility | 阅读文章的可见性规则(配置文件、组、用户、实体) |
add_kb_article_visibility_profile | 将个人资料添加到文章的可见性中 |
add_kb_article_visibility_group | 将组添加到文章的可见性中 |
update_kb_article_visibility_profile | 更新现有的配置文件可见性规则 |
update_kb_article_visibility_group | 更新现有组可见性规则 |
注: 删除可见性规则是故意不公开的,以保留程序的历史记录,甚至是过时的程序。
📋 参考数据
| 工具 | 说明 |
|---|---|
list_itil_categories | 列出可用的ITIL类别 |
get_users | 列出GLPI用户 |
get_groups | 列出GLPI组 |
______________________________________________________________________
Claude的使用示例
*“显示所有打开的高优先级事件”*
*“为Jane Smith创建安装Adobe Acrobat的服务请求单”*
*“在第4521号工单上添加一个跟进,通知用户正在调查该问题”*
*“将票#4530和#4531合并为票#4521”* *“将票#4530链接到票#4521作为副本”* *“按状态统计的门票数据是什么?”* *“平均票解决时间是多少?”* *“显示SLA中过期的门票”*
*“在知识库中搜索VPN故障排除解决方案”*
*“谁可以看到知识库文章#120?”*
*“将技术人员组添加到第120条的可见性中”*
*“使用解决方案关闭票证#4102:重新启动服务解决了问题”*
______________________________________________________________________
引用映射
状态
| 代码 | 标签(fr) | 标签(en) |
|---|---|---|
| 1 | 新风格 | 新 |
| 2 | 正在进行(已分配) | |
| 3 | 正在进行(计划) | |
| 4 | 待定 | |
| 5已解决 | ||
| 6 | 关闭 | 关闭 |
类型
| 代码 | 标签(fr) | 标签(en) |
|---|---|---|
| 1 | 事件 | 事件 |
| 2服务请求 |
优先事项/紧急情况/影响
| 代码 | 标签(fr) | 标签(en) |
|---|---|---|
| 1非常低 | 非常低 | |
| 2低 | 低 | |
| 3 | 中等 | 中等 |
| 4 | 高级 | 高 |
| 5非常高 | ||
| 6 | 不可抗力 | 重大 |
票证链接类型
| 代码 | 标签(fr) | 标签(en) |
|---|---|---|
| 1 | 链接到 | |
| 2 | 重复 | 重复 |
| 3 | 儿童 | |
| 4 | 父代 | 父代 |
______________________________________________________________________
故障排除
服务器未出现在Claude Desktop中
- 检查配置文件的JSON语法(没有缺失或多余的逗号/大括号)
- 验证文件夹路径是否正确且绝对
- 完全重新启动Claude Desktop
- 确保
%APPDATA%\Claude\connectors\文件夹已存在(如果需要,请创建它)
401每次通话出错
- 核实一下
GLPI_APP_TOKEN和GLPI_USER_TOKEN在你的config.json - 检查GLPI中是否启用了REST API
- 验证GLPI中的API客户端是否处于活动状态并且IP是否已授权
连接错误/超时
- 核实一下
GLPI_URL可从运行服务器的计算机访问 - 检查是否没有防火墙阻止连接
- 所有HTTP请求都有一个硬上限 30秒 (连接时间为10秒)。除此之外,该工具返回一个结构化的字典
error和detail(标签取自LANG桌子)而不是悬挂——英语:{"error": "HTTP timeout", "detail": "Request > 30s — see GLPI logs"}。如果您重复执行此操作,请检查GLPI端的PHP-FPM/MySQL日志:底层查询可能太昂贵(通常是没有索引的全文搜索)。
企业环境——SSL拦截代理(Zscaler、Forcepoint等)
在企业环境中,SSL代理可能会拦截HTTPS连接,并用内部证书替换证书。在安装依赖项时,这会导致以下错误 uv:
× Failed to download `python-dotenv==X.X.X`
╰─▶ invalid peer certificate: UnknownIssuer解决方案: 力 uv 将Windows证书存储与 UV_NATIVE_TLS 环境变量。
要在PowerShell中手动测试,请执行以下操作:
$env:UV_NATIVE_TLS=1
uv run python server.py要让Claude Desktop在启动服务器时自动传递此变量,请添加 env 部分到您的 claude_desktop_config.json:
{
"mcpServers": {
"glpi": {
"command": "uv",
"args": [
"--directory",
"C:\\Path\\to\\glpi-mcp",
"run",
"python",
"server.py"
],
"env": {
"UV_NATIVE_TLS": "1"
}
}
}
}企业环境——防病毒/EDR防紫外线(Riskware)
一些企业防病毒或EDR解决方案可能会进行分类 uv.exe 作为 风险 因为它从互联网下载可执行文件和包。如果 uv 被您的安全解决方案阻止:
- 请联系您的IT团队,为添加例外
uv.exe(位于%USERPROFILE%\.local\bin\uv.exe) - 还请求对域的授权:
pypi.org,files.pythonhosted.org,astral.sh
作为替代方案,问一位有工作经验的同事 uv 分享 .venv 文件夹,避免任何下载。
减少依赖性
该项目取决于 mcp[cli] 其中包括 [cli] 额外的(打字,丰富,点击,shellingham,pygments,标记它py…)。此附加命令提供了开发命令 mcp dev 和 mcp inspect,可用于调试。
如果你想减少生产中的占地面积(大约减少8个包),请修改 pyproject.toml:
# Before (with CLI tooling)
dependencies = ["mcp[cli]>=1.9.4", "httpx>=0.27"]
# After (without CLI tooling — lightweight production)
dependencies = ["mcp>=1.9.4", "httpx>=0.27"]然后运行 uv sync 再次更新环境。
