Skip to main content
Glama
neopunisher
by neopunisher

Pastebin MCP Server

An MCP server for the Pastebin API, built with FastMCP. Managed with uv and distributed on PyPI so it can be run directly with uvx — no install step, no virtualenv to manage.

Tools

Tool

Description

login

Exchange username/password for a Pastebin User Key

create_paste

Create a paste (public / unlisted / private)

list_user_pastes

List your pastes (requires a User Key)

delete_paste

Delete one of your pastes

get_trending_pastes

Fetch the current trending pastes

stop

Shut the server down

Related MCP server: Reddit MCP

Configuration

Variable

Required

Description

PASTEBIN_DEV_KEY

yes

Your Pastebin developer API key

PASTEBIN_USER_KEY

for private/list/delete

User Key returned by login

Both can also be passed per-call as api_dev_key / api_user_key arguments.

Run it

Once published, no installation is needed:

PASTEBIN_DEV_KEY=your_key uvx mcp-pastebin

Pin a version:

uvx mcp-pastebin@0.1.0

From a local checkout (development):

PASTEBIN_DEV_KEY=your_key uv run mcp-pastebin

MCP client configuration

Add to your client's MCP config (.mcp.json, claude_desktop_config.json, etc.):

{
  "mcpServers": {
    "pastebin": {
      "command": "uvx",
      "args": ["mcp-pastebin"],
      "env": {
        "PASTEBIN_DEV_KEY": "your_key"
      }
    }
  }
}

While developing, point uvx at the working tree instead:

{
  "mcpServers": {
    "pastebin": {
      "command": "uvx",
      "args": ["--from", "/absolute/path/to/pastebin-mcp", "mcp-pastebin"],
      "env": { "PASTEBIN_DEV_KEY": "your_key" }
    }
  }
}

Development

uv sync                 # create .venv and install deps from uv.lock
uv run mcp-pastebin     # run the server from source
uv lock --upgrade       # refresh the lockfile
uv run ruff check .     # lint

uv.lock is committed so development environments are reproducible; it does not constrain consumers installing from PyPI.

Every push and pull request runs .github/workflows/ci.yml: uv sync --locked, ruff check ., then uv build and a stdio smoke test that starts the built wheel's console script and checks it answers an MCP initialize request - on Python 3.10, 3.11, 3.12 and 3.13.

Releasing

Releases are automated: pushing a tag that starts with v runs .github/workflows/release.yml, which builds the sdist and wheel with uv build, smoke-tests the built wheel, and uploads it to PyPI with uv publish. Authentication is PyPI trusted publishing over OIDC, so there is no PyPI token stored in this repository.

To cut a release:

# 1. bump the version in both places and commit
#      pyproject.toml            version = "0.2.0"
#      mcp_pastebin/__init__.py  __version__ = "0.2.0"
git commit -am "Release 0.2.0"

# 2. tag and push - the tag is what triggers the upload
git tag v0.2.0
git push origin main v0.2.0

The tag and the version in pyproject.toml must agree. PyPI never accepts a re-upload of an existing version, so a release that fails after the upload step needs a new version number rather than a moved tag.

One-time PyPI setup

Before the first release, register a trusted publisher on PyPI. The project does not exist on PyPI yet, so add it as a pending publisher at https://pypi.org/manage/account/publishing/:

Field

Value

PyPI Project Name

mcp-pastebin

Owner

neopunisher

Repository name

py-pastebin-mcp

Workflow name

release.yml

Environment name

pypi

Every field is checked on upload, including the workflow filename and the environment: pypi declared in release.yml - if you rename either, update the publisher to match. GitHub creates the pypi environment on the first run; to require a manual approval before each upload, add yourself as a required reviewer to it under Settings -> Environments -> pypi.

After the first successful upload the pending publisher becomes an ordinary publisher on the project, and no further setup is needed.

Publishing by hand

Only needed to bypass the workflow (or to rehearse against TestPyPI):

uv build                                   # -> dist/*.whl and dist/*.tar.gz
python scripts/smoke_test.py               # start the built wheel, speak MCP to it
uv publish --token pypi-...                # upload to PyPI
uv publish --publish-url https://test.pypi.org/legacy/ --token pypi-...   # TestPyPI

License

MIT

Available Tools

6 tools
create_pasteCreate PasteC

Create a new paste on Pastebin.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesThe content of the paste.
nameNoName or title of the paste.
formatNoSyntax highlighting format (e.g., 'python', 'javascript').
privateNoPrivacy level (0=Public, 1=Unlisted, 2=Private). Private requires api_user_key.
api_dev_keyNoYour Pastebin Developer API Key.
expire_dateNoExpiration time (N=Never, 10M, 1H, 1D, 1W, 2W, 1M, 6M, 1Y). Default is 1H.1H
api_user_keyNoYour Pastebin User Key (from login). Required for private pastes.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior1/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, yet it adds nothing beyond the title. It does not mention authentication requirements, privacy defaults, expiration behavior, or any side effects, leaving the agent with zero behavioral context.

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

Conciseness2/5

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

The description is a single short sentence that is front-loaded and free of filler, but it is severely under-specified for a tool with seven parameters. Conciseness is not the issue; the sentence does not earn its place by conveying necessary information.

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

Completeness1/5

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

Given the tool's complexity (seven parameters, no annotations) and the existence of an output schema, the description is still grossly incomplete. It fails to mention any prerequisite, default behavior, or contextual constraint, leaving the agent reliant entirely on the schema.

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 description coverage is 100%, so the schema fully documents all seven parameters including privacy levels, expiration formats, and key requirements. The description adds no parameter meaning, which is acceptable at baseline 3 when the schema does all the heavy lifting.

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 a specific verb ('Create') and resource ('paste on Pastebin'), making the tool's purpose immediately clear. However, it offers no differentiation from sibling tools like delete_paste or list_user_pastes, which is the only reason it falls short of a 5.

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?

There is no guidance on when to use this tool versus alternatives, nor any mention of prerequisites such as needing an api_dev_key or api_user_key. The agent must infer usage entirely from the schema and sibling names.

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

delete_pasteDelete PasteA

Delete a paste (requires login/api_user_key).

ParametersJSON Schema
NameRequiredDescriptionDefault
paste_keyYesThe unique key of the paste to delete (e.g., 'vP9H81M1').
api_dev_keyNoYour Pastebin Developer API Key.
api_user_keyNoYour Pastebin User Key.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It discloses the auth requirement (login/api_user_key), but does not state whether deletion is irreversible, whether ownership is required, or what side effects occur.

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 zero waste. The action and its auth requirement are front-loaded, making it easy to scan.

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?

An output schema exists, so return values need not be described. The auth prerequisite is stated, but the lack of annotations and missing when-to-use guidance leaves gaps for a destructive operation.

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 description coverage is 100%, so the schema already documents all parameters. The description does not add any syntax or format details beyond what the schema provides.

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?

States the specific verb 'Delete' and resource 'paste'. It is clearly distinct from siblings like create_paste and list_user_pastes, but does not explicitly differentiate itself from them in the text.

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?

Provides the prerequisite 'requires login/api_user_key', which gives some usage context. However, it does not explain when to use this tool versus alternatives or 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.

list_user_pastesList User PastesB

List your pastes (requires login).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of results (1-1000, default 50).
api_dev_keyNoYour Pastebin Developer API Key.
api_user_keyNoYour Pastebin User Key.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries full behavioral burden. It usefully discloses the auth requirement, but says nothing about pagination behavior, ordering of results, or rate limits — relevant details for a listing endpoint that returns up to 1000 items.

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?

A single short sentence with the resource front-loaded and no filler. It is arguably too terse to be maximally helpful, but nothing in it is wasted.

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?

An output schema exists, so return values need no explanation, and the auth prerequisite is stated. What remains missing is any hint about result ordering or pagination strategy for a tool whose limit parameter stretches to 1000 — enough of a gap to keep this at minimum-viable.

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 description coverage is 100%, so api_dev_key, api_user_key, and limit are all documented in the schema itself. The description adds no additional parameter meaning, which is the expected baseline when the schema does the heavy lifting.

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 a specific verb+resource ('List your pastes'), which clearly separates it from create_paste, delete_paste, and get_trending_pastes. It lacks explicit sibling differentiation language, but the scope ('your pastes') is unambiguous.

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 parenthetical '(requires login)' conveys a clear prerequisite for use, which is genuine usage guidance for an authenticated-only endpoint. However, it offers no when-not condition and does not name any alternative tool for cases where the user is unauthenticated or wants public pastes.

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

loginLoginA

Login to Pastebin to get a User API Key for private pastes and listing.

ParametersJSON Schema
NameRequiredDescriptionDefault
passwordYesYour Pastebin password.
user_nameYesYour Pastebin username.
api_dev_keyNoYour Pastebin Developer API Key.

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 carries the full burden. It discloses the returned artifact (a User API Key), but says nothing about credential handling, error behavior on bad credentials, key lifetime, or the role of api_dev_key versus user credentials. For an auth tool with zero annotation coverage this is a notable gap.

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 front-loaded sentence with the verb first and the payoff second; no filler or 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?

The tool is simple, the schema fully documents its inputs, and an output schema exists so return values need not be explained. Still, with no annotations the description should have covered auth failure behavior or how the returned key is used, leaving it only minimally adequate.

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 description coverage is 100%, so all three parameters (user_name, password, api_dev_key) are already documented in the schema. The description adds no syntax, format, or precedence detail beyond that, so the baseline 3 applies.

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 (Login) plus the resource (Pastebin) and the concrete outcome (obtaining a User API Key). It also distinguishes itself from siblings like get_trending_pastes or create_paste by naming what the resulting key is for: private pastes and listing.

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

Usage Guidelines4/5

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

The phrase 'for private pastes and listing' gives a clear context for when this tool is needed, implicitly positioning it as a prerequisite to authenticated operations. However, it names no alternatives and gives no when-not-to-use guidance (e.g., whether anonymous pastes skip login entirely).

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

stopStopA

Stop the MCP server. This will terminate the process.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/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, and it does disclose the critical behavioral trait: this terminates the server process, i.e. it is an irreversible lifecycle-ending action. It does not say whether shutdown is graceful, whether in-flight operations are aborted, or whether a response is returned before the process dies, so it falls short of full disclosure.

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, effect front-loaded, no filler. Every word earns its place.

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 zero-param tool with an output schema, the description covers what the tool does and its main consequence. What is missing is operational context an agent would want before invoking an irreversible shutdown (graceful vs abrupt, effect on the response channel), but the essential information is present.

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, so there is nothing for the description to disambiguate. The baseline for a parameterless schema is 4.

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 ('Stop') and resource ('the MCP server'), and the second sentence clarifies the concrete effect ('terminate the process'). No sibling tool (login, create_paste, delete_paste, etc.) does anything similar, so it is unambiguously distinguishable from the rest of the toolset.

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 is implied rather than stated: the agent can infer this is the terminal shutdown action, but there is no explicit when-to-use framing, no warning about when not to call it, and no mention of alternatives or prerequisites. For a destructive lifecycle tool, that is the minimum viable level of guidance.

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. 6 tool updatesv0.1.0
    • First observedcreate_paste
    • First observeddelete_paste
    • First observedget_trending_pastes
    • First observedlist_user_pastes
    • First observedlogin
    • First observedstop

TDQS

B3.4/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: authentication (login), discovery (get_trending_pastes), creation (create_paste), listing (list_user_pastes), deletion (delete_paste), and lifecycle (stop). There is no meaningful overlap between any two tools, so an agent can easily select the right one.

Naming Consistency4/5

Most tools follow a clean verb_noun pattern (get_trending_pastes, create_paste, list_user_pastes, delete_paste), which is highly predictable. However, login and stop are bare verbs that break the pattern, a minor deviation.

Tool Count5/5

Six tools is well within the sweet spot and each maps to a real operation in the Pastebin domain (auth, discovery, CRUD-ish paste management, shutdown). No tool feels redundant or padded.

Completeness3/5

Core lifecycle is present (login, create, list, delete, trending), but there is no tool to retrieve/view a specific paste by key or URL, which is a fundamental read operation for a Pastebin server. This notable gap will force agents to work around the missing read capability.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables interaction with WordPress sites through the REST API, supporting content management for posts, pages, users, plugins, and custom post types with Application Password authentication.
    1,107 npm
    2
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables browsing, searching, and reading Reddit posts, comments, and subreddits through Reddit's API using PRAW.
    6
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with a read-later and link sharing social feed app, allowing users to manage links, bookmarks, and share through web, API, and MCP.
    86
    -
  • A
    license
    A
    quality
    D
    maintenance
    Enables searching and managing Spotify playlists, tracks, and user information through the Spotify Web API.
    10
    MIT