Skip to main content
Glama
oborchers

mcp-server-pacman

by oborchers

吃豆人标志

Pacman MCP 服务器

提供包索引查询功能的模型上下文协议 (MLM) 服务器。该服务器使 LLM 能够从 PyPI、npm、crates.io、Docker Hub 和 Terraform Registry 等包存储库中搜索和检索信息。

可用工具

  • search_package - 在包索引中搜索包

    • index (字符串,必需):要搜索的包索引(“pypi”,“npm”,“crates”,“terraform”)

    • query (字符串,必需):包名称或搜索查询

    • limit (整数,可选):返回的最大结果数(默认值:5,最大值:50)

  • package_info获取特定包的详细信息

    • index (字符串,必需):要查询的包索引(“pypi”,“npm”,“crates”,“terraform”)

    • name (字符串,必需):包名称

    • version (字符串,可选):获取信息的特定版本(默认值:最新)

  • search_docker_image - 在 Docker Hub 中搜索 Docker 镜像

    • query (字符串,必需):图像名称或搜索查询

    • limit (整数,可选):返回的最大结果数(默认值:5,最大值:50)

  • docker_image_info - 获取特定 Docker 镜像的详细信息

    • name (字符串,必需):图像名称(例如,用户/repo 或库/repo)

    • tag (字符串,可选):特定图像标签(默认值:最新)

  • terraform_module_latest_version - 获取 Terraform 模块的最新版本

    • name (字符串,必需):模块名称(格式:命名空间/名称/提供程序)

提示

  • search_pypi

    • 在 PyPI 上搜索 Python 包

    • 参数:

      • query (字符串,必需):包名称或搜索查询

  • pypi_info

    • 获取有关特定 Python 包的信息

    • 参数:

      • name (字符串,必需):包名称

      • version (字符串,可选):特定版本

  • 搜索_npm

    • 在 npm 上搜索 JavaScript 包

    • 参数:

      • query (字符串,必需):包名称或搜索查询

  • npm_info

    • 获取有关特定 JavaScript 包的信息

    • 参数:

      • name (字符串,必需):包名称

      • version (字符串,可选):特定版本

  • search_crates

    • 在 crates.io 上搜索 Rust 软件包

    • 参数:

      • query (字符串,必需):包名称或搜索查询

  • crates_info

    • 获取有关特定 Rust 包的信息

    • 参数:

      • name (字符串,必需):包名称

      • version (字符串,可选):特定版本

  • 搜索_docker

    • 在 Docker Hub 上搜索 Docker 镜像

    • 参数:

      • query (字符串,必需):图像名称或搜索查询

  • docker_info

    • 获取有关特定 Docker 镜像的信息

    • 参数:

      • name (字符串,必需):图像名称(例如,用户/仓库)

      • tag (字符串,可选):特定标签

  • 搜索_terraform

    • 在 Terraform 注册表中搜索 Terraform 模块

    • 参数:

      • query (字符串,必需):模块名称或搜索查询

  • terraform_info

    • 获取有关特定 Terraform 模块的信息

    • 参数:

      • name (字符串,必需):模块名称(格式:命名空间/名称/提供程序)

  • terraform_latest_version

    • 获取特定 Terraform 模块的最新版本

    • 参数:

      • name (字符串,必需):模块名称(格式:命名空间/名称/提供程序)

安装

使用 uv(推荐)

使用uv时无需特殊安装。我们将使用uvx直接运行mcp-server-pacman 。

使用 PIP

或者,您可以通过 pip 安装mcp-server-pacman :

pip install mcp-server-pacman

安装后,您可以使用以下命令将其作为脚本运行:

python -m mcp_server_pacman

使用 Docker

您还可以使用 Docker 镜像:

docker pull oborchers/mcp-server-pacman:latest
docker run -i --rm oborchers/mcp-server-pacman

Related MCP server: JSR MCP

配置

为 Claude.app 配置

添加到您的 Claude 设置:

"mcpServers": {
  "pacman": {
    "command": "uvx",
    "args": ["mcp-server-pacman"]
  }
}
"mcpServers": {
  "pacman": {
    "command": "docker",
    "args": ["run", "-i", "--rm", "oborchers/mcp-server-pacman:latest"]
  }
}
"mcpServers": {
  "pacman": {
    "command": "python",
    "args": ["-m", "mcp-server-pacman"]
  }
}

配置 VS Code

如需手动安装,请将以下 JSON 块添加到 VS Code 中的“用户设置 (JSON)”文件中。您可以按下Ctrl + Shift + P并输入Preferences: Open User Settings (JSON)来完成此操作。

或者,您可以将其添加到工作区中名为.vscode/mcp.json的文件中。这样您就可以与其他人共享该配置。

请注意,使用mcp.json文件时需要mcp密钥。

{
  "mcp": {
    "servers": {
      "pacman": {
        "command": "uvx",
        "args": ["mcp-server-pacman"]
      }
    }
  }
}
{
  "mcp": {
    "servers": {
      "pacman": {
        "command": "docker",
        "args": ["run", "-i", "--rm", "oborchers/mcp-server-pacman:latest"]
      }
    }
  }
}

定制 - 用户代理

默认情况下,服务器将使用用户代理:

ModelContextProtocol/1.0 Pacman (+https://github.com/modelcontextprotocol/servers)

可以通过将参数--user-agent=YourUserAgent添加到配置中的args列表来进行定制。

发展

运行测试

  • 运行所有测试:

    uv run pytest -xvs
  • 运行特定的测试类别:

    # Run all provider tests
    uv run pytest -xvs tests/providers/
    
    # Run integration tests for a specific provider
    uv run pytest -xvs tests/integration/test_pypi_integration.py
    
    # Run specific test class
    uv run pytest -xvs tests/providers/test_npm.py::TestNPMFunctions
    
    # Run a specific test method
    uv run pytest -xvs tests/providers/test_pypi.py::TestPyPIFunctions::test_search_pypi_success
  • 检查代码风格:

    uv run ruff check .
    uv run ruff format --check .
  • 格式代码:

    uv run ruff format .

调试

您可以使用 MCP 检查器来调试服务器。对于 uvx 安装:

npx @modelcontextprotocol/inspector uvx mcp-server-pacman

或者,如果您已将软件包安装在特定目录中或正在其上进行开发:

cd path/to/pacman
npx @modelcontextprotocol/inspector uv run mcp-server-pacman

发布流程

该项目使用 GitHub Actions 进行自动发布:

  1. 更新pyproject.toml中的版本

  2. 使用git tag vX.YZ创建一个新标签(例如, git tag v0.1.0 )

  3. 使用git push --tags推送标签

这将自动:

  • 验证pyproject.toml中的版本与标签匹配

  • 运行测试和 Lint 检查

  • 构建并发布到 PyPI

  • 构建并发布到 Docker Hub,作为oborchers/mcp-server-pacman:latest和oborchers/mcp-server-pacman:XYZ

项目结构

代码库组织成以下结构:

src/mcp_server_pacman/
├── models/             # Data models/schemas
├── providers/          # Package registry API clients
│   ├── pypi.py         # PyPI API functions
│   ├── npm.py          # npm API functions
│   ├── crates.py       # crates.io API functions
│   ├── dockerhub.py    # Docker Hub API functions
│   └── terraform.py    # Terraform Registry API functions
├── utils/              # Utilities and helpers
│   ├── cache.py        # Caching functionality
│   ├── constants.py    # Shared constants
│   └── parsers.py      # HTML parsing utilities
├── __init__.py         # Package initialization
├── __main__.py         # Entry point
└── server.py           # MCP server implementation

测试遵循类似的结构:

tests/
├── integration/        # Integration tests (real API calls)
├── models/             # Model validation tests
├── providers/          # Provider function tests
└── utils/              # Test utilities

贡献

我们鼓励您为扩展和改进 mcp-server-pacman 做出贡献。无论您是想添加新的软件包索引、增强现有功能还是改进文档,您的贡献都弥足珍贵。

有关其他 MCP 服务器和实现模式的示例,请参阅: https://github.com/modelcontextprotocol/servers

欢迎提交 Pull 请求!欢迎贡献新想法、错误修复或改进,让 mcp-server-pacman 更加强大实用。

执照

mcp-server-pacman 采用 MIT 许可证。这意味着您可以自由使用、修改和分发该软件,但需遵守 MIT 许可证的条款和条件。更多详细信息,请参阅项目仓库中的 LICENSE 文件。

Available Tools

5 tools
docker_image_infoC

Get detailed information about a specific Docker image

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesImage name (e.g., user/repo or library/repo)
tagNoSpecific image tag (default: latest)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It only states a generic 'get information' without specifying side effects, required permissions, network dependencies, or the nature of the returned data. This is insufficient for an agent to anticipate tool behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single sentence is concise and front-loaded with the key action. No extraneous words or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 2 parameters and no output schema. The description fails to explain what 'detailed information' includes (e.g., layers, config, metadata). An agent cannot predict the return format or completeness without additional context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (both parameters have descriptions). The tool description adds no additional meaning beyond what the schema provides. Per guidelines, baseline 3 applies; the description does not enhance understanding of parameter usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get detailed information about a specific Docker image' clearly states the tool's purpose with a specific verb ('Get') and resource ('Docker image'). However, it does not differentiate from sibling tools like search_docker_image, leaving ambiguity about what 'detailed information' entails.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as search_docker_image or package_info. The agent receives no indication of prerequisites, exclusions, or appropriate context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

package_infoC

Get detailed information about a specific package

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYesPackage index to query (pypi, npm, crates, terraform)
nameYesPackage name
versionNoSpecific version to get info for (default: latest)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose any behavioral traits beyond the basic action. It does not confirm whether the operation is read-only, destructive, or has any side effects, which is a significant gap for a tool likely performing external queries.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no wasted words. It is efficiently front-loaded with the action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, yet the description only vaguely says 'detailed information'. It does not specify what fields or structure the response contains, leaving the agent without adequate context for handling the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for parameters, so the description adds no additional meaning beyond what the schema already provides. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and resource 'detailed information about a specific package'. It is specific enough to distinguish from sibling tools like 'search_package' and 'docker_image_info', though it does not explicitly differentiate them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool vs alternatives. There is no mention of prerequisites, context, or exclusions, leaving the agent without decision support.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_docker_imageB

Search for Docker images in Docker Hub

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesImage name or search query
limitNoMaximum number of results to return

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, but it only states the function without disclosing behavioral traits like read-only nature, rate limits, or default pagination. Basic search behavior is implied but not explicitly guaranteed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no repetition or fluff. While brief, it front-loads the core purpose, earning points for conciseness, though slightly more context could fit without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and simple parameters, the description suffices for a basic search. However, it does not clarify return format (e.g., tags, repositories, pagination), leaving some ambiguity for an agent. Adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 100% of parameters with clear descriptions (e.g., 'Image name or search query', 'Maximum number of results'). The description adds no extra meaning beyond the schema, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Search' and the resource 'Docker images' with location 'Docker Hub', making the purpose unmistakable. It effectively distinguishes from sibling tools like `docker_image_info` and `search_package`.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as `docker_image_info` (for details) or `search_package` (for non-Docker packages). The description lacks any context for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_packageB

Search for packages in package indices (PyPI, npm, crates.io, Terraform Registry)

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYesPackage index to search (pypi, npm, crates, terraform)
queryYesPackage name or search query
limitNoMaximum number of results to return

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It only states the basic purpose without disclosing behavioral traits such as rate limits, authentication requirements, error handling, or the structure of the response. This is minimal transparency for a search tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that immediately conveys the verb and resource. It is front-loaded and contains no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks information about the output format or what the search results contain. Since there is no output schema, the description should have provided context on the return structure to help the agent interpret results. This gap reduces completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for all parameters. The tool description adds no extra meaning beyond what the schema already provides (e.g., listing indices that match the enum). Baseline 3 is appropriate given high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the action 'search for packages' and the resource 'package indices', with explicit examples (PyPI, npm, crates.io, Terraform Registry). It effectively distinguishes from sibling tools like 'package_info' which likely provides details on a specific package.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for searching packages but does not provide explicit guidance on when to use this tool versus alternatives like 'package_info' or 'search_docker_image'. No exclusions or context-driven triggers are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

terraform_module_latest_versionB

Get the latest version of a Terraform module

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesModule name (format: namespace/name/provider)

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It only states 'Get', implying read-only, but no disclosure of potential errors, caching, rate limits, or behavior when module not found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence. It is concise and front-loaded, though slightly minimal for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (one parameter, no output schema, no annotations), the description is minimally complete. However, it lacks details about return values or error states, which are needed for full understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (the single parameter is well-described). The description does not add extra semantics beyond the schema's parameter description, earning a baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Get the latest version of a Terraform module'. It uses a specific verb and resource, and distinguishes from sibling tools (docker_image_info, package_info, etc.) that deal with different domains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. There is no mention of prerequisites, scenarios, or explicit when-to-use context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv1.0.0
    • First observeddocker_image_info
    • First observedpackage_info
    • First observedsearch_docker_image
    • First observedsearch_package
    • First observedterraform_module_latest_version

TDQS

B3.2/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a distinct resource and action: Docker images have separate search and info tools, packages similarly, and Terraform modules have a dedicated version lookup. No overlap between resources.

Naming Consistency3/5

Names use snake_case but the ordering of resource and action varies: e.g., 'docker_image_info' (resource_action) vs 'search_docker_image' (action_resource). 'terraform_module_latest_version' uses a different pattern with an adjective. This inconsistency could cause confusion.

Tool Count4/5

With 5 tools, the server is focused and well-scoped for an informational package manager. It covers Docker, general packages, and Terraform modules without being too sparse.

Completeness3/5

The server provides search and info for Docker and packages, which is reasonable for an informational tool. However, only one Terraform module operation exists, and missing CRUD operations like install or delete are on the boundary of the domain.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    A Model Context Protocol server that allows interaction with the RubyGems.org API to fetch metadata about Ruby packages, search gems, and explore dependencies and ownership information.
    6
    1
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server for querying PyPI package information, dependencies, and compatibility checking. Supports advanced dependency analysis, download statistics, and trending analysis.
    34 PyPI
    18
    MIT