Skip to main content
Glama

mcp-pypi

What this project is

This project is an MCP server built with FastMCP. It exposes tools that give an MCP client or agent basic terminal abilities, such as running commands, running Python, and working with files and folders. The server uses the MCP stdio transport, so it communicates over standard input and output and is meant to be started by an MCP client.

Related MCP server: My Awesome MCP

What it does

  1. Starts an MCP server over stdio.

  2. Registers a set of tools that act on the local machine.

MCP tools

The server provides these tools:

Tool

Purpose

Notes

bash(command: str)

Run a shell command.

Uses the system shell. Returns stderr on error. On success, it does not return a value in the current implementation.

python_code(code: str)

Run Python code.

Executes python -c <code>. Returns stdout or error text.

python_file(file: str)

Run a Python file.

Executes python <file>. Returns stdout or error text.

glob(pattern: str)

Find files by pattern.

Returns a list of matching paths.

grep(pattern: str, file: str)

Search for a pattern in a file.

Uses findstr on Windows. Prints matches and does not return a value in the current implementation.

read_file(file: str)

Read a file.

Returns file content or error text.

write_file(file: str, content: str)

Write a file.

Overwrites if the file exists and returns a success message or error text.

create_folder(folder: str)

Create a folder.

Returns a message if it was created or already exists.

delete_folder(folder: str)

Delete a folder.

Recursively removes the folder if it exists and returns a message.

Install

Python 3.10 or later is required.

From the repository root:

python -m pip install .

Run as an MCP server

Start the server with the stdio transport:

mcp_pypi

Or:

python -m mcp_pypi.main

Then configure your MCP client to launch it with stdio. Example:

{
  "mcpServers": {
    "mcp-pypi": {
      "command": "mcp_pypi",
      "args": []
    }
  }
}

Project layout

  1. src/mcp_pypi/tools.py defines the MCP tools.

  2. src/mcp_pypi/main.py starts the MCP server over stdio.

  3. test.py starts the server directly for quick local runs.

Available Tools

9 tools
bashC

This function will execute a bash command and return the output. This function is useful for executing commands including creating files, directories, and other shell commands.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYes

TDQS

C2.9/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 does not disclose behavioral traits such as potential destructiveness, working directory, environment variables, or timeouts. The agent has no indication of 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.

Conciseness4/5

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

Two sentences are concise and front-loaded with the primary action. The second sentence adds context but is not redundant. However, it could be more structurally organized with bullet points for examples.

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?

Given the complexity of bash commands, no output schema, and sibling tools covering file operations, the description lacks context on safe usage, working directory, environment, and when to prefer specialized sibling tools over bash.

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

Parameters2/5

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

The single 'command' parameter has schema coverage of 0% (no description in schema). The description only adds generic examples, not syntax details, constraints, or format expectations, providing minimal added meaning.

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 it executes bash commands and gives examples like creating files and directories, distinguishing it from siblings (e.g., python_code, write_file). However, it could explicitly mention it supports arbitrary shell commands beyond those examples.

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 shell commands (creating files, directories, etc.) but provides no explicit guidance on when to choose this over siblings like write_file or create_folder, nor any exclusions (e.g., avoid interactive commands).

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

create_folderA

This function will create a folder with the given name. If the folder already exists, it will return a message indicating that the folder already exists.

ParametersJSON Schema
NameRequiredDescriptionDefault
folderYes

TDQS

A3.7/5.0
Behavior3/5

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

The description discloses that calling it on an existing folder returns a message, which is useful. However, it does not mention permissions, side effects, or error conditions beyond duplicate, leaving gaps for a tool with no annotations.

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 two sentences with no unnecessary words, front-loading the main purpose and then adding the duplicate behavior, making it highly efficient.

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?

Given the tool's simplicity (one parameter, no output schema), the description covers the success case and a key edge case (duplicate). It lacks details on error handling or return structure but is nearly complete for basic use.

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

Parameters2/5

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

The description adds only 'with the given name' to the folder parameter, which is vague. It does not explain path format, relative vs absolute, or allowed characters, failing to compensate for the 0% schema description 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 states the verb 'create' and resource 'folder' with a specific behavior of returning a message if it already exists, distinguishing it from sibling tools like delete_folder.

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 implicitly states to use it for creating folders, but provides no guidance on when not to use it or alternatives. It mentions behavior on duplicate but lacks context compared to other tools.

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

delete_folderB

This function will delete a folder with the given name. If the folder does not exist, it will return a message indicating that the folder does not exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
folderYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations, so burden is on description. Only mentions behavior when folder doesn't exist, but omits whether deletion is permanent, permissions needed, or 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 concise sentences with no wasted words, front-loaded with key action.

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?

With no output schema, no annotations, and minimal parameter info, the description lacks completeness for a destructive tool—missing return format, error handling, permissions.

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

Parameters2/5

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

Schema coverage 0%. Description only says 'given name' without adding format, path rules, or constraints.

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 tool deletes a folder by name and handles non-existence. It distinguishes from siblings like create_folder.

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?

No explicit guidance on when to use this tool versus alternatives. It's implied, but no when-not-to-use or exclusions.

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

globC

This function will return a list of files that match the given pattern.

ParametersJSON Schema
NameRequiredDescriptionDefault
patternYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It omits critical behaviors: recursion behavior, starting directory, absolute vs relative paths, and whether directories are included. Minimal disclosure.

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

Conciseness3/5

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

Single sentence, front-loaded, no redundancy. However, under-specification makes it less valuable; it's concise but not sufficiently informative.

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?

No output schema, no annotations, and incomplete parameter description. Does not cover return format, edge cases, or usage context. Incomplete for a tool with 1 required parameter.

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

Parameters2/5

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

Schema coverage is 0% (no description for 'pattern'), and the description only says 'given pattern' without explaining pattern syntax (e.g., wildcards, glob rules). Fails to compensate for schema gap.

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 'return' and resource 'list of files', distinguishing it from siblings like grep or read_file. However, it doesn't specify the pattern syntax, which slightly reduces clarity.

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 like bash (for find/grep) or grep (for file content). The description lacks context for selection.

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

grepB

This function will search for a given pattern in the specified file and return the matching lines.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYes
patternYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, and the description only says 'return the matching lines.' It does not disclose if pattern is regex, whether case-sensitive, behavior on file not found, or empty results.

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?

Single sentence, no fluff. However, it could be more efficient by dropping 'This function will'.

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?

Adequate for a simple tool with two string parameters, but lack of pattern format details and output specification (e.g., lines returned as list or string) leaves gaps.

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

Parameters2/5

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

Schema coverage is 0%, so description should compensate. It only repeats parameter names ('pattern', 'file') without explaining format (regex?), path handling, or constraints, adding minimal value beyond the schema.

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 tool searches for a pattern in a file and returns matching lines, which is specific and distinguishes it from sibling tools like read_file (reads entire file) or bash (runs commands).

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 grep versus alternatives like python_code or glob. The description does not specify prerequisites, limitations, or context for use.

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

python_codeB

This function will execute a python code and return the output.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes

TDQS

B3.1/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 for behavioral disclosure. It only mentions execution and returning output, omitting details about side effects, execution environment, error handling, or whether the output is stdout, stderr, or an exit code.

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 unnecessary words. It efficiently states the core action and result, making it appropriately concise.

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?

Given the lack of annotations, output schema, and the inherent complexity of a code execution tool, the description is insufficient. The agent is not informed about the output shape, potential side effects, or safety considerations, leaving significant gaps.

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 input schema has one 'code' parameter with no description, and the description clarifies that it represents the Python code to execute. This adds meaning beyond the schema, but does not provide constraints like size or format specifics.

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 states the tool executes Python code and returns output, using a specific verb and resource. However, it does not differentiate from sibling tools like python_file or bash, so it falls short of a perfect score.

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 provides no guidance on when to use this tool versus alternatives such as bash or python_file. It lacks any context about preferred use cases or exclusions.

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

python_fileB

This function will execute a python file and return the output.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYes

TDQS

B3.1/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 of disclosing behavior. It only says it executes and returns output, but does not explain how errors are handled, what 'output' includes (stdout, stderr, exit code), whether execution is synchronous, or any side effects. This is a significant gap for a code execution 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 sentence that is concise and front-loaded with the core action. There is no wasted wording or redundant information. It is appropriately sized for a simple one-parameter tool.

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?

Given the tool has no annotations and no output schema, the description should provide more operational context. It omits critical details like error behavior, return format, and environment requirements. While the tool is simple, the lack of behavioral disclosure makes it incomplete for an AI agent to invoke safely and correctly.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not clarify the 'file' parameter beyond its name. It does not state whether 'file' is a path, content, or how paths are resolved. The description adds no meaningful param detail beyond what the schema already implies.

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 tool's purpose: 'execute a python file and return the output.' It uses a specific verb ('execute') and resource ('python file'), and it differentiates from sibling tools like python_code (which likely runs code snippets) and bash (which runs shell commands) by focusing on file execution.

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 provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., Python installed), when choosing it over python_code or bash, or any exclusions. There is no explicit 'when to use' or 'when not to use' context.

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

read_fileB

This function will read the contents of a file and return it as a string.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are present, so the description must carry the full burden. It merely restates the tool's name and basic action without disclosing error behavior, encoding handling, or safety properties. The description adds minimal value beyond the tool name itself.

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 that is front-loaded and directly states the action and return type. Every word is necessary and there is no redundancy.

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 read tool with no output schema, the description does explain the return type (string). However, it lacks detail on edge cases like missing files, permission errors, or path interpretation, which an agent may need. It is adequate but not comprehensive.

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

Parameters1/5

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

The only parameter 'file' has 0% schema description coverage, and the description does not specify whether it expects a path, URI, or file name. The description provides no additional meaning to the parameter beyond its name, leaving the agent to guess.

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 tool reads a file's contents and returns them as a string, which is a specific verb-resource pair. It distinguishes itself from siblings like write_file (write), grep (search), and glob (list files by pattern).

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 is implied: use when you need the full contents of a file. However, there is no explicit guidance on when not to use it or mention of alternatives like grep for searching, so it does not fully differentiate from sibling tools.

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

write_fileA

This function will write the given content to a file. If the file does not exist, it will be created. If the file already exists, it will be overwritten.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYes
contentYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations exist, so description carries full burden. It discloses creation and overwrite but omits details like file encoding, permissions, error handling, or 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 dense sentences with no fluff, front-loading core behavior. Every word earns its place.

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?

Covers core functionality for simple file writes but misses return values, error cases, and file path conventions. Adequate for basic use but incomplete considering no output schema or annotations.

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

Parameters2/5

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

Schema coverage is 0% (no parameter descriptions). The description barely adds beyond naming 'file' and 'content'; it lacks constraints, format, or size hints, forcing agents to infer.

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 tool writes content to a file, with creation and overwrite behavior. It is distinct from sibling tools like 'read_file' (reading), 'bash' (execution), and folder tools.

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 use when creating or overwriting files but provides no explicit when-to-use or when-not-to-use guidance compared to alternatives.

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. 9 tool updatesv0.1.0
    • First observedbash
    • First observedcreate_folder
    • First observeddelete_folder
    • First observedglob
    • First observedgrep
    • First observedpython_code
    • First observedpython_file
    • First observedread_file
    • First observedwrite_file

TDQS

C2.9/5.0

Scored across 9 tools

Disambiguation4/5

Tools have distinct purposes (code execution, bash, file ops, search), but some overlap exists between python_code and python_file; both execute Python code, differing only in input type (string vs file).

Naming Consistency3/5

Most tools use snake_case, but naming patterns vary: verb_noun for file ops (read_file, write_file, create_folder), single words for others (bash, glob, grep), and adjective_noun for python_code and python_file.

Tool Count4/5

9 tools is reasonable for a general utility server providing file system and command execution capabilities, though the server name suggests a PyPI focus, which is mismatched.

Completeness3/5

Covers basic file and command operations but lacks common features like file copy/move/rename, directory listing beyond glob, or process management, leaving notable gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    A simple MCP server that provides a terminal tool for executing shell commands with safety features like timeouts and error handling.
    -
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    A basic MCP server built with FastMCP framework that provides example tools including message echoing and server information retrieval. Supports both stdio and HTTP transports with Docker deployment capabilities.
    -
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    A basic MCP server built with FastMCP framework that provides example tools including message echoing and server information retrieval. Supports both stdio and HTTP transports with Docker deployment capabilities.
    -
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    A basic MCP server built with FastMCP framework that provides example tools including message echoing and server information retrieval. Supports both stdio and HTTP transports for integration with various MCP clients.
    -