Python包管理服务器

一个生产就绪的Python包管理服务器,支持包安装、项目索引和代码质量工具,适用于企业级开发和IDE集成。

  • by gurkanfikretgunak
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 gurkanfikretgunak/mcp_server

使用说明

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:工作区根目录

认证

服务器支持具有管理员和常规用户角色的基于角色的身份验证。

快速设置

  1. 启用用户身份验证:

    export MCP_ENABLE_USER_AUTH=true
    export MCP_USERS_FILE=~/.mcp_server/users.json
    
  2. 创建第一个管理员帐户:

    python -m python_package_mcp_server.cli create-admin --username admin --api-key <your-api-key>
    

    如果您不提供API密钥,将自动生成一个密钥。 安全保存 -它不会再显示了!

  3. 创建其他用户 (仅限管理员): 使用 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通信

    • 查看所有请求和响应
    • 调试服务器通信
    • 查看错误和警告

运输方式

  1. 标准模式 (默认):直接连接到Python服务器

    • 最适合本地开发和测试
    • 不需要单独的服务器进程
  2. 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

作者

树木好想法 (@ 我们的想法)

贡献

欢迎投稿!请随时提交拉取请求。