mcp-server-pacman

パックマンMCPサーバー
パッケージインデックスのクエリ機能を提供するモデルコンテキストプロトコルサーバー。このサーバーにより、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(文字列、必須): イメージ名 (例: user/repo または library/repo)tag(文字列、オプション):特定の画像タグ(デフォルト:最新)
terraform_module_latest_version- Terraformモジュールの最新バージョンを取得するname(文字列、必須): モジュール名 (形式: 名前空間/名前/プロバイダー)
プロンプト
検索_pypi
PyPIでPythonパッケージを検索する
引数:
query(文字列、必須): パッケージ名または検索クエリ
pypi_info
特定のPythonパッケージに関する情報を取得する
引数:
name(文字列、必須): パッケージ名version(文字列、オプション): 特定のバージョン
検索_npm
npmでJavaScriptパッケージを検索する
引数:
query(文字列、必須): パッケージ名または検索クエリ
npm_info
特定のJavaScriptパッケージに関する情報を取得する
引数:
name(文字列、必須): パッケージ名version(文字列、オプション): 特定のバージョン
検索ボックス
crates.ioでRustパッケージを検索する
引数:
query(文字列、必須): パッケージ名または検索クエリ
クレート情報
特定のRustパッケージに関する情報を取得する
引数:
name(文字列、必須): パッケージ名version(文字列、オプション): 特定のバージョン
検索ドッカー
Docker HubでDockerイメージを検索する
引数:
query(文字列、必須): 画像名または検索クエリ
docker_info
特定のDockerイメージに関する情報を取得する
引数:
name(文字列、必須): イメージ名 (例: ユーザー/リポジトリ)tag(文字列、オプション):特定のタグ
検索_terraform
Terraform レジストリで Terraform モジュールを検索する
引数:
query(文字列、必須): モジュール名または検索クエリ
テラフォーム情報
特定の Terraform モジュールに関する情報を取得する
引数:
name(文字列、必須): モジュール名 (形式: 名前空間/名前/プロバイダー)
terraform_最新バージョン
特定の Terraform モジュールの最新バージョンを取得する
引数:
name(文字列、必須): モジュール名 (形式: 名前空間/名前/プロバイダー)
インストール
uvの使用(推奨)
uvを使用する場合、特別なインストールは必要ありません。uvx uvx使用してmcp-server-pacmanを直接実行します。
PIPの使用
あるいは、pip 経由でmcp-server-pacmanをインストールすることもできます。
pip install mcp-server-pacmanインストール後、次のコマンドを使用してスクリプトとして実行できます。
python -m mcp_server_pacmanDockerの使用
Docker イメージを使用することもできます。
docker pull oborchers/mcp-server-pacman:latest
docker run -i --rm oborchers/mcp-server-pacmanRelated 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用の設定
手動でインストールする場合は、VS Code のユーザー設定 (JSON) ファイルに次の JSON ブロックを追加します。Ctrl 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)これは、構成のargsリストに引数--user-agent=YourUserAgentを追加することでカスタマイズできます。
発達
テストの実行
すべてのテストを実行します。
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 を使用しています。
pyproject.tomlのバージョンを更新するgit tag vX.YZで新しいタグを作成します (例:git tag v0.1.0)git push --tagsでタグをプッシュします。
これにより、次の処理が自動的に実行されます。
pyproject.tomlのバージョンがタグと一致していることを確認しますテストとリントチェックを実行する
PyPI にビルドして公開する
oborchers/mcp-server-pacman:latestおよびoborchers/mcp-server-pacman:XYZとしてビルドし、Docker Hub に公開します。
プロジェクト構造
コードベースは次の構造で構成されています。
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を参照してください。
プルリクエストを歓迎します!mcp-server-pacman をさらに強力で便利なものにするために、新しいアイデア、バグ修正、機能強化などをお気軽にご提供ください。
ライセンス
mcp-server-pacmanはMITライセンスに基づいてライセンスされています。つまり、MITライセンスの条件に従って、ソフトウェアを自由に使用、改変、配布することができます。詳細については、プロジェクトリポジトリのLICENSEファイルをご覧ください。
Available Tools
5 toolsdocker_image_infoC
Get detailed information about a specific Docker image
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Image name (e.g., user/repo or library/repo) | |
| tag | No | Specific image tag (default: latest) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | Package index to query (pypi, npm, crates, terraform) | |
| name | Yes | Package name | |
| version | No | Specific version to get info for (default: latest) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Image name or search query | |
| limit | No | Maximum number of results to return |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | Package index to search (pypi, npm, crates, terraform) | |
| query | Yes | Package name or search query | |
| limit | No | Maximum number of results to return |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Module name (format: namespace/name/provider) |
TDQS
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.
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.
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.
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.
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.
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.
5 tool updates
v1.0.0- First observed
docker_image_info - First observed
package_info - First observed
search_docker_image - First observed
search_package - First observed
terraform_module_latest_version
TDQS
Scored across 5 tools
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.
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.
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.
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
Related MCP Connectors
Model Context Protocol server for Studex tools, notifications, and profile integrations
A Model Context Protocol server for Wix AI tools
Search and browse every MCP server in the Model Context Protocol registry.
Model Context Protocol server for todo.vu task management and time tracking.
Related MCP Servers
- FlicenseAqualityDmaintenanceA 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.61-
- AlicenseNot gradedqualityDmaintenanceModel Context Protocol server for the JSR (JavaScript Registry)4MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server for querying PyPI package information, dependencies, and compatibility checking. Supports advanced dependency analysis, download statistics, and trending analysis.34 PyPI18MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server for querying package registries (npm, PyPI, crates.io) to retrieve metadata, release timelines, and maintenance signals.1-