使用说明
Python包管理器MCP服务器
用于管理Python包的生产就绪MCP(模型上下文协议)服务器 uv,具有企业功能,包括安全性、审计以及对stdio和HTTP传输的支持。服务器公开资源(包列表、依赖树、项目索引)和工具(安装、卸载、同步),同时维护以学习为重点的文档。
特性
- 包管理:使用以下命令安装、卸载、添加、删除、同步和锁定Python包
uv - 项目索引:发现并索引LLM辅助开发的项目结构
- 代码库资源:搜索代码库、读取文件、提取符号
- 语言标准支持Dart和TypeScript语言标准、风格指南和最佳实践
- 代码质量工具:格式化、lint、分析和验证Dart和TypeScript的代码
- 企业功能:基于角色的身份验证(管理员/用户)、策略引擎、审计日志
- 双重运输:支持stdio(本地)和HTTP/SSE(企业)传输
- IDE集成:为游标和VS代码预先配置
- 易于执行:Linux/macOS的简单脚本和CLI命令
快速开始
先决条件
- Python 3.10+
- 紫外线 已安装包管理器
安装
# Clone the repository
git clone https://github.com/gurkanfikretgunak/mcp_server.git
cd mcp_server
# Create virtual environment and install dependencies
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
uv pip install -e .
运行服务器
标准交通(地方发展)
# Using the run script
./scripts/run_stdio.sh
# Using the CLI
python -m python_package_mcp_server.cli stdio
HTTP传输(企业)
# Using the run script
./scripts/run_http.sh --host localhost --port 8000
# Using the CLI
python -m python_package_mcp_server.cli http --host localhost --port 8000
开发模式(热重载)
# Using the dev script
./scripts/dev.sh
# Using the CLI
python -m python_package_mcp_server.cli dev
配置
可以使用环境变量配置服务器:
MCP_TRANSPORT:运输类型(stdio或http)MCP_HOST:HTTP服务器主机(默认值:localhost)MCP_PORT:HTTP服务器端口(默认值:8000)MCP_API_KEY:用于HTTP身份验证的API密钥(传统的单一API密钥模式)MCP_ENABLE_AUTH:启用身份验证(true/false)MCP_ENABLE_USER_AUTH:启用基于用户的身份验证(true/false)MCP_USERS_FILE:用户JSON文件的路径(默认值:~/.mcp_server/users.json)MCP_SINGLE_API_KEY_MODE:使用传统的单个API密钥模式(true/false,默认值:true)MCP_ALLOWED_PACKAGES:逗号分隔的允许包模式列表MCP_BLOCKED_PACKAGES:以逗号分隔的被阻止的包模式列表MCP_LOG_LEVEL:日志记录级别(DEBUG,INFO,WARNING,ERROR)MCP_LOG_FORMAT:日志格式(json或text)MCP_PROJECT_ROOT:项目根目录MCP_WORKSPACE_ROOT:工作区根目录
认证
服务器支持具有管理员和常规用户角色的基于角色的身份验证。
快速设置
-
启用用户身份验证:
export MCP_ENABLE_USER_AUTH=true export MCP_USERS_FILE=~/.mcp_server/users.json -
创建第一个管理员帐户:
python -m python_package_mcp_server.cli create-admin --username admin --api-key <your-api-key>如果您不提供API密钥,将自动生成一个密钥。 安全保存 -它不会再显示了!
-
创建其他用户 (仅限管理员): 使用
create_user通过您的客户使用MCP工具:{ "tool": "create_user", "arguments": { "username": "user1", "role": "user" } }
用户角色
-
管理员(一级):完全访问所有操作
- 可以创建/删除用户
- 可以执行所有工具(安装、卸载、同步等)
- 可以访问所有资源
-
普通用户:只读访问
- 可以读取资源(包、依赖项、代码库)
- 无法执行写入操作(安装、卸载、同步等)
- 无法创建或删除用户
权限矩阵
| 操作 | 管理员 | 普通用户 |
|---|---|---|
| 阅读资源 | ✅ | ✅ |
| 安装软件包 | ✅ | ❌ |
| 卸载软件包 | ✅ | ❌ |
| 同步依赖关系 | ✅ | ❌ |
| 创建用户 | ✅ | ❌ |
| 删除用户 | ✅ | ❌ |
| 列出用户 | ✅ | ❌ |
用户管理工具
服务器提供以下用户管理工具(仅限管理员):
-
create_user:创建新用户帐户- 参数:
username(必填),api_key(可选),role(管理员/用户,默认:用户) - 返回:使用API密钥创建的用户信息(安全保存!)
- 参数:
-
list_users:列出所有用户- 返回:所有用户及其角色和创建日期的列表
-
delete_user:删除用户帐户- 参数:
username(必填) - 注意:无法删除最后一个管理员用户
- 参数:
配置
环境变量:
# Enable user-based authentication
export MCP_ENABLE_USER_AUTH=true
# Set users file location (optional, defaults to ~/.mcp_server/users.json)
export MCP_USERS_FILE=~/.mcp_server/users.json
# For stdio transport, set API key for authentication
export MCP_API_KEY=<your-api-key>
用户文件 (~/.mcp_server/users.json):
{
"users": [
{
"username": "admin",
"api_key_hash": "hashed-api-key",
"role": "admin",
"created_at": "2024-01-01T00:00:00Z"
},
{
"username": "user1",
"api_key_hash": "hashed-api-key-2",
"role": "user",
"created_at": "2024-01-02T00:00:00Z"
}
]
}
安全说明:
- API密钥存储为SHA-256哈希
- 用户文件具有限制权限(
chmod 600) - 只能通过CLI创建第一个帐户(成为管理员)
- 后续帐户必须由管理员用户通过以下方式创建
create_user工具 - 无法删除最后一个管理员用户
向后兼容
服务器与传统的单一API密钥模式保持向后兼容性:
- 如果
MCP_ENABLE_USER_AUTH=false(默认),使用单个API密钥身份验证 - 如果
MCP_ENABLE_USER_AUTH=true,使用基于用户的身份验证 - 现有安装继续工作,无需更改
有关详细的身份验证设置说明,请参阅 身份验证设置指南.
有关配置选项,请参阅 MCP配置指南.
提示
服务器提供以下提示(可重用的提示模板):
一般提示
analyze_package_dependencies-分析包依赖关系并建议更新(可选:package_name)code_review-检查代码以了解最佳实践和潜在问题(必填:file_path,可选:language)project_setup_guide-生成一份全面的项目设置指南(可选:include_rependency)dependency_audit-审核安全和更新的项目依赖关系(无参数)code_formatting_check-检查代码是否符合格式标准(必填:file_path,language)
飞镖特定提示
dart_abstract_base_widget-按照最佳实践为Flutter创建抽象基础小部件类(必需:widget_name,可选:file_path,widget_type)dart_migration_guide-为Dart/Flutter版本升级生成迁移指南(可选:从_version、到_version、file_path)dart_performance_optimization-分析并优化Dart代码的性能(必填:file_path,可选:focus_area)dart_widget_refactoring-按照最佳实践重构Flutter小部件(必需:file_path,可选:reforming_type)dart_test_generation-为Dart代码生成全面的测试(必需:file_path,可选:test_framework)dart_null_safety_check-检查Dart代码是否符合空安全合规性(必填:file_path)dart_architecture_review-审查Dart/Flutter项目架构并提出改进建议(可选:project_path、architecture_pattern)
TypeScript特定提示
typescript_migration_guide-为JavaScript到TypeScript或版本升级生成迁移指南(可选:from_language、to_version、file_path)typescript_type_optimization-优化TypeScript类型以获得更好的类型安全性和性能(必需:file_path,可选:focus_area)typescript_refactoring-按照最佳实践重构TypeScript代码(必需:file_path,可选:reforming_type)typescript_test_generation-为TypeScript代码生成全面的测试(必需:file_path,可选:test_framework)typescript_config_review-检查并优化tsconfig.json配置(可选:config_path)typescript_decorator_guide-TypeScript装饰器和元数据使用指南(可选:use_case)typescript_generics_guide-有效使用TypeScript泛型的指南(可选:file_path,complexity_level)
有关提示的详细信息,请参阅 提示指南.
资源
服务器公开以下资源:
包管理资源
python:packages://installed-列出所有已安装的软件包及其版本python:packages://outdated-列出包含可用更新的软件包python:dependencies://tree-依赖树可视化python:project://info-项目元数据(pyproject.toml、uv.lock信息)python:environment://active-活动虚拟环境详细信息
项目索引资源
project://index-包含结构、文件和元数据的完整项目索引project://structure-文件和目录结构树project://config-配置文件发现project://dependencies-跨项目类型的所有依赖关系文件project://readme-README和文档文件project://entrypoints-入口点和主文件发现project://tests-测试文件和测试结构
代码库资源
codebase://search-按模式或内容搜索代码库codebase://file-读取带有行号的特定文件内容codebase://symbols-从代码库中提取符号(函数、类)
Dart标准资源
dart:standards://effective-dart-有效的Dart指南(风格、文档、用法)dart:standards://style-guide-带有命名约定和格式规则的飞镖风格指南dart:standards://linter-rules-飞镖门楣规则和描述的完整列表dart:standards://best-practices-Dart代码质量和可维护性的最佳实践
TypeScript标准资源
typescript:standards://style-guide-带有命名约定和格式规则的TypeScript风格指南typescript:standards://tsconfig-options-推荐的tsconfig.json编译器选项和含义typescript:standards://eslint-rules-TypeScript代码质量和一致性的ESLint规则typescript:standards://best-practices-TypeScript类型安全和代码质量的最佳实践
工具
服务器提供以下工具:
包管理工具
install-安装具有版本约束的软件包uninstall-删除程序包add-将包添加到项目依赖项中remove-从项目依赖项中删除包sync-将环境与锁定文件同步lock-生成/更新锁文件init-初始化新的Python项目upgrade-将软件包升级至最新版本
项目索引工具
index_project-索引/扫描项目目录并构建资源缓存refresh_index-刷新项目索引缓存discover_projects-在工作区中发现多个项目analyze_codebase-分析代码库结构并提取元数据
飞镖工具
dart_format-根据Dart风格指南格式化Dart代码dart_analyze-分析Dart代码中的错误和警告dart_fix-对Dart代码应用自动修复dart_generate_code-根据标准和最佳实践生成Dart代码dart_check_standards-检查Dart代码是否遵循标准和最佳实践
TypeScript工具
typescript_format-使用Prettier格式化TypeScript代码typescript_lint-使用ESLint编写TypeScript代码typescript_type_check-使用tsc检查TypeScript代码的类型typescript_generate_code-根据标准和最佳实践生成TypeScript代码typescript_check_standards-检查TypeScript代码是否遵循标准和最佳实践
配置
添加到mcp.json
将此服务器添加到您的 mcp.json 配置文件,请参阅 MCP配置指南 详细说明。
快速入门:
{
"mcpServers": {
"python-package-manager": {
"command": "python",
"args": ["-m", "python_package_mcp_server.cli", "stdio"],
"env": {
"MCP_PROJECT_ROOT": ".",
"MCP_LOG_LEVEL": "INFO",
"MCP_LOG_FORMAT": "json"
}
}
}
}
文件位置:
- 光标IDE:
~/.cursor/mcp.json或.cursor/mcp_config.json - VS Code:
.vscode/settings.json(带MCP扩展) - 克劳德桌面版:
~/Library/Application Support/Claude/claude_desktop_config.json
IDE集成
快速设置脚本
使用安装脚本自动配置IDE:
# Interactive menu
./scripts/setup_ide.sh
# Or specify IDE directly
./scripts/setup_ide.sh cursor # Setup Cursor IDE
./scripts/setup_ide.sh vscode # Setup VS Code
./scripts/setup_ide.sh deeplink # Generate deep link for Cursor
./scripts/setup_ide.sh all # Setup all supported IDEs
Windows PowerShell:
.\scripts\setup_ide.ps1 cursor
.\scripts\setup_ide.ps1 vscode
.\scripts\setup_ide.ps1 deeplink
.\scripts\setup_ide.ps1 all
光标IDE
服务器已针对Cursor IDE进行了预配置。配置已完成 .cursor/mcp_config.json.
深度链接设置:
跑 ./scripts/setup_ide.sh deeplink 生成一个深度链接,您可以在Cursor中打开该链接以自动添加MCP服务器。
VS Code
VS代码配置文件在 .vscode/:
settings.json-工作区设置launch.json-调试配置extensions.json-推荐的扩展
注: VS Code MCP集成需要 MCP扩展.
建筑
看 docs/architecture.md 获取详细的架构文档。
学习指南
看 docs/learning.md 了解MCP服务器如何工作以及如何扩展此服务器的全面指南。
企业部署
看 docs/enterprise.md 了解企业部署指南和安全最佳实践。
例子
看 示例/usage.md 使用示例和 examples/client_configure.json 用于客户端配置示例。
发展
运行测试
uv pip install -e ".[dev]"
pytest tests/
代码格式化
black src/
ruff check src/
测试工具
- 单元测试:运行
pytest tests/用于自动化测试套件 - MCP 检查员:使用
./scripts/inspect.sh用于交互式测试和调试(见下文)
MCP检验员测试
MCP Inspector是一个用于测试和调试MCP服务器的交互式开发工具。它提供了一个基于web的UI,用于实时检查资源、测试工具和监控服务器通信。
先决条件
- 已安装Node.js(用于
npx命令) - Python虚拟环境设置
运行检查器
Linux/macOS:
# Run inspector with stdio transport (default)
./scripts/inspect.sh
# Run inspector with HTTP transport
./scripts/inspect.sh --transport http --host localhost --port 8000
# Use custom ports
./scripts/inspect.sh --client-port 8080 --server-port 9000
# Run with debug logging
MCP_LOG_LEVEL=DEBUG ./scripts/inspect.sh
Windows PowerShell:
# Run inspector with stdio transport (default)
.\scripts\inspect.ps1
# Run inspector with HTTP transport
.\scripts\inspect.ps1 -Transport http -Host localhost -Port 8000
# Use custom ports
.\scripts\inspect.ps1 -ClientPort 8080 -ServerPort 9000
检查器功能
一旦检查器启动,它将在浏览器中打开一个web UI(默认值: http://localhost:5173).你可以:
-
资源选项卡:浏览并测试所有可用资源
- 视图
python:packages://installed和python:packages://outdated - 测试项目指标资源
- 阅读Dart和TypeScript标准资源
- 视图
-
工具选项卡:以交互方式测试所有可用工具
- 测试包管理工具(
install,uninstall,sync) - 测试Dart工具(
dart_format,dart_analyze,dart_fix) - 测试TypeScript工具(
typescript_format,typescript_lint)
- 测试包管理工具(
-
日志选项卡:监控实时JSON-RPC通信
- 查看所有请求和响应
- 调试服务器通信
- 查看错误和警告
运输方式
-
标准模式 (默认):直接连接到Python服务器
- 最适合本地开发和测试
- 不需要单独的服务器进程
-
HTTP模式:连接到正在运行的HTTP服务器
- 要求服务器单独运行:
./scripts/run_http.sh - 可用于测试企业部署
- 支持身份验证标头
- 要求服务器单独运行:
故障排除
检查器未启动:
- 确保已安装Node.js:
node --version - 尝试:
npx -y @modelcontextprotocol/inspector@latest
端口冲突:
- 使用自定义端口:
./scripts/inspect.sh --client-port 8080 - 检查端口是否已在使用中
HTTP模式连接失败:
- 确保HTTP服务器正在运行:
./scripts/run_http.sh - 检查主机和端口匹配服务器配置
- 验证身份验证(如果启用)
综合指南
有关详细的分步说明、示例和故障排除,请参阅 MCP检查员使用指南本指南涵盖:
- 所有资源和工具的详细演练
- 实际工作流程示例
- 常见问题排查
- 使用检查器的最佳实践
有关更多信息,请参阅 MCP检查员官方文件.
许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
版权所有(c)2025 Gurkan Fikret Gunak
作者
树木好想法 (@ 我们的想法)
贡献
欢迎投稿!请随时提交拉取请求。