Skip to main content
Glama
petridisa

pyenv-manager-mcp

by petridisa

pyenv-manager-mcp

An MCP server for managing Python versions via pyenv.

Requirements

  • Linux or macOS (or Windows via WSL)

  • pyenv installed and available on PATH

  • uv

Related MCP server: Software Management MCP Server

Installation

Linux / macOS

Add to your MCP config:

{
  "mcpServers": {
    "pyenv-manager": {
      "command": "uv",
      "args": ["--directory", "/path/to/pyenv-manager-mcp", "run", "pyenv-manager-mcp"]
    }
  }
}

Windows (via WSL)

{
  "mcpServers": {
    "pyenv-manager": {
      "command": "wsl.exe",
      "args": [
        "bash",
        "-c",
        "export PATH=/home/<user>/.pyenv/bin:/home/<user>/.pyenv/shims:/home/<user>/.local/bin:/usr/local/bin:/usr/bin:/bin && cd /mnt/c/path/to/pyenv-manager-mcp && uv run pyenv-manager-mcp"
      ]
    }
  }
}

Tools

Tool

Description

list_versions

List installed Python versions

get_current_version

Get the currently active Python version

list_available_downloads

List versions available to install (supports optional filter, e.g. "3.12")

install_version

Install a specific Python version

set_global_version

Set the global Python version

set_local_version

Set the local (directory) Python version

Available Tools

6 tools
get_current_versionA

Get the currently active Python version (pyenv version).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. 'Get' clearly signals a read-only, non-mutating operation, which is adequate for a simple getter, but it does not mention error conditions or what happens if pyenv is unavailable. The presence of an output schema mitigates the lack of return-format detail.

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?

A single sentence with no filler, front-loading the verb and resource. The parenthetical adds useful precision without bloat.

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

Completeness5/5

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

For a zero-parameter, read-only getter with an output schema, the description is complete. It identifies the exact command, the resource being queried, and the operation. No critical information for invoking this tool is missing.

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

Parameters4/5

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

The tool has zero parameters, and the schema confirms an empty properties object. No parameter semantics are needed, and the description adds no irrelevant parameter information. Baseline of 4 is appropriate for a no-parameter tool.

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 uses a specific verb ('Get') and a specific resource ('currently active Python version'), and the parenthetical '(pyenv version)' identifies the exact underlying command. This clearly distinguishes it from sibling tools like list_versions and install_version.

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 usage context is implied: use this when you need the currently active Python version. However, the description does not explicitly contrast it with alternatives such as list_versions, nor does it state when not to use it.

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

install_versionB

Install a specific Python version using pyenv.

Args:
    version: The exact version string to install (e.g., '3.12.2').
ParametersJSON Schema
NameRequiredDescriptionDefault
versionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states that the tool installs a version, which implies a state-changing side effect, but does not mention prerequisites, network dependency, potential failures for unavailable versions, or what the tool returns on success or failure.

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 short and front-loaded: one clear verb-focused sentence followed by a concise parameter explanation. It contains no filler and gives the agent exactly the key information needed for the single parameter.

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?

For a simple one-parameter tool with an output schema, the description covers the basic invocation adequately. However, it lacks usage context relative to siblings and does not explain behavioral prerequisites or failure modes, making it only minimally viable for an agent deciding among the listed tools.

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

Parameters4/5

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

The schema coverage is 0%, but the description compensates by defining the version parameter as 'the exact version string' and providing a concrete example ('3.12.2'). This adds meaningful semantic detail beyond the bare schema type of 'string', even though it leaves some edge cases unaddressed.

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 uses a specific verb ('Install') with a clear resource ('a specific Python version using pyenv'), so an agent can understand the core action. It does not explicitly contrast with siblings, but the action is unique among the sibling list (list, get, set), so confusion is unlikely.

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 intended use is implied by the name and description: install a specific Python version into pyenv. However, there is no explicit guidance about when to prefer this over siblings, such as checking list_available_downloads before installing or using set_global_version/set_local_version after installation.

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

list_available_downloadsA

List all Python versions available for installation via pyenv.

Args:
    filter: Optional string to filter versions (e.g., '3.12' to show only 3.12.x versions).
ParametersJSON Schema
NameRequiredDescriptionDefault
filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries the disclosure burden. It clearly states the tool lists available versions and that filter narrows results, but it does not mention whether this contacts a remote source, the output format, or any preconditions like pyenv being installed. The behavior is simple and non-destructive, so the lack of additional disclosure is acceptable but not outstanding.

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 two-line description plus one-line Args section is tightly written. Every sentence adds value: the purpose statement is front-loaded and the parameter explanation is detailed enough without redundancy.

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

Completeness4/5

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

For a tool with one optional parameter and an output schema, the description is nearly complete. It explains what the tool does and exactly how filtering works. The only minor gap is not explicitly placing the tool among its siblings (e.g., that it lists remote/downloadable versions, not installed ones), though the wording already implies this.

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

Parameters5/5

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

The description provides the full meaning of the only parameter, filter, and gives a concrete example ('3.12' shows only 3.12.x versions), compensating for the schema's lack of a property description. This is unambiguous and directly actionable.

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 uses a specific verb ('List') and identifies the exact resource: Python versions available for installation via pyenv. The phrase 'available for installation' distinguishes it from sibling version-listing tools like list_versions, which likely list installed versions.

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 the tool should be used when you need to see which Python versions can be installed through pyenv, but it doesn't explicitly state when to prefer it over list_versions or other siblings. No exclusions or alternative conditions are given.

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

list_versionsA

List all Python versions installed locally via pyenv.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden. 'List' implies a read-only operation and 'installed locally' scopes the behavior, but it does not explicitly state side effects, failure modes, or output characteristics. Since the tool is simple and non-destructive, the description is acceptable but not deeply transparent.

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, front-loaded sentence with no wasted words. It communicates the action, scope, and environment in a compact and scannable way.

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

Completeness5/5

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

For a zero-parameter read-only list operation with an output schema available, the description is complete. It specifies what is listed, where it looks, and which tool ecosystem it belongs to, making it contextually sufficient.

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

Parameters4/5

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

The tool takes zero parameters and the schema coverage is complete at 100%, so there are no parameter semantics to explain. The baseline score of 4 applies because no parameter documentation is needed.

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 uses a specific verb and resource: 'List all Python versions installed locally via pyenv.' It clearly distinguishes this from siblings like list_available_downloads and get_current_version, since it targets installed local versions rather than downloadable or current ones.

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?

Usage context is implied through the phrase 'installed locally via pyenv' and the sibling tool list_available_downloads, which suggests when this tool is appropriate. However, there is no explicit statement of when to choose this tool over alternatives or any exclusion criteria.

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

set_global_versionA

Set the global Python version for pyenv.

Args:
    version: The version string to set globally (e.g., '3.12.2').
ParametersJSON Schema
NameRequiredDescriptionDefault
versionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/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 describes the mutation (setting the global version) but discloses no behavioral context: no mention of side effects, whether the version must already be installed, reversibility, or impact on existing environments. This is a significant gap for a state-changing 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 extremely concise, front-loads the primary purpose, and includes only a small helpful Args section. Every sentence contributes meaning, with no filler or redundant restatement of the tool name.

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?

The tool is simple with one parameter and an output schema, but the description omits important operational context: the prerequisite that the version must be installed, and the behavioral effects of changing the global version. It is minimally viable but has clear gaps that could mislead an agent selecting this tool over install_version or set_local_version.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It defines version as 'The version string to set globally' and provides an example ('3.12.2'), giving clear semantic and format guidance beyond the bare schema property. It could note installation requirements, but the core parameter meaning is well covered.

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?

States a specific verb and resource: 'Set the global Python version for pyenv.' The term 'global' clearly distinguishes this from sibling set_local_version, so an agent can understand its unique role without ambiguity.

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?

The description gives no guidance on when to use this tool versus alternatives, no mention of prerequisites (such as the version needing to be installed via install_version), and no explicit exclusions. The 'global' wording implies scope but does not provide actionable selection criteria.

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

set_local_versionA

Set the local directory Python version (.python-version).

Args:
    version: The version string to set locally (e.g., '3.12.2').
ParametersJSON Schema
NameRequiredDescriptionDefault
versionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden. It states the action and the file but does not disclose that setting will overwrite an existing .python-version file, whether the version must be installed, or any other side effects.

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?

Two short sentences plus an Args block; every part is informative. No filler or duplication of schema titles.

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?

For a one-parameter setter, the core is covered, but the absence of behavioral notes and sibling differentiation makes it slightly incomplete. A note about overwriting or relation to set_global_version would make it fully self-sufficient.

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

Parameters4/5

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

With 0% schema coverage, the description compensates by explaining that the version is the local version string and provides a concrete format example ('3.12.2'), giving the agent a clear idea of acceptable values.

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 uses a specific verb ('Set') and names the exact resource ('local directory Python version (.python-version)'), clearly distinguishing it from set_global_version. It leaves no doubt about the tool's function.

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 a local, per-directory scope, but it never explicitly contrasts this with set_global_version or lists conditions for when to prefer one over the other. An agent must infer usage from the tool name and sibling list.

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

TDQS

A3.9/5.0
Disambiguation5/5

Each tool maps to a distinct pyenv operation: listing installed versions, showing the active version, listing downloadable versions, installing, and setting global/local versions. There is minimal overlap, and the descriptions clearly separate installed from available versions.

Naming Consistency5/5

Tool names consistently follow a predictable verb_noun pattern: list_*, get_*, install_*, set_*. Even though list_available_downloads uses 'downloads' instead of 'versions', the naming style remains uniform and easy to navigate.

Tool Count5/5

Six tools is a well-scoped set for a pyenv manager. Each tool covers a necessary core operation without unnecessary bloat or redundant additions.

Completeness3/5

The tool surface covers listing, installing, and setting versions, but notably lacks uninstall/remove functionality, which is a standard pyenv lifecycle operation. Agents can work around it, but version cleanup is a meaningful gap.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables AI assistants to interact with local Git repositories for operations like status, commits, branching, and diffs, plus GitHub API integration for managing pull requests when authenticated.
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to automate local software management workflows including installation, uninstallation, updates, and environment recommendations. It provides a standardized, non-interactive interface for managing system applications and tracking software versions safely.
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables LLMs to manage Python environments and dependencies via uv, supporting package inspection, installation, and requirement management.
    4
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/petridisa/pyenv-manager-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server