Pastebin MCP Server
Provides tools for interacting with the Pastebin API, enabling users to log in, create public/unlisted/private pastes, list and delete their pastes, and fetch trending pastes.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Pastebin MCP Servercreate a public paste with my build logs and give me the link"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 |
| Exchange username/password for a Pastebin User Key |
| Create a paste (public / unlisted / private) |
| List your pastes (requires a User Key) |
| Delete one of your pastes |
| Fetch the current trending pastes |
| Shut the server down |
Related MCP server: Reddit MCP
Configuration
Variable | Required | Description |
| yes | Your Pastebin developer API key |
| for private/list/delete | User Key returned by |
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-pastebinPin a version:
uvx mcp-pastebin@0.1.0From a local checkout (development):
PASTEBIN_DEV_KEY=your_key uv run mcp-pastebinMCP 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 . # lintuv.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.0The 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 |
|
Owner |
|
Repository name |
|
Workflow name |
|
Environment name |
|
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-... # TestPyPILicense
MIT
Available Tools
6 toolscreate_pasteCreate PasteC
Create a new paste on Pastebin.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The content of the paste. | |
| name | No | Name or title of the paste. | |
| format | No | Syntax highlighting format (e.g., 'python', 'javascript'). | |
| private | No | Privacy level (0=Public, 1=Unlisted, 2=Private). Private requires api_user_key. | |
| api_dev_key | No | Your Pastebin Developer API Key. | |
| expire_date | No | Expiration time (N=Never, 10M, 1H, 1D, 1W, 2W, 1M, 6M, 1Y). Default is 1H. | 1H |
| api_user_key | No | Your Pastebin User Key (from login). Required for private pastes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| paste_key | Yes | The unique key of the paste to delete (e.g., 'vP9H81M1'). | |
| api_dev_key | No | Your Pastebin Developer API Key. | |
| api_user_key | No | Your Pastebin User Key. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
get_trending_pastesGet Trending PastesB
Get the top trending pastes on Pastebin.
| Name | Required | Description | Default |
|---|---|---|---|
| api_dev_key | No | Your Pastebin Developer API Key. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and one sentence does not deliver it. It says nothing about whether the api_dev_key is required for this endpoint, rate limits on the trending feed, result count/pagination, or caching. The only safety context available comes from the name being a 'Get'.
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?
A single front-loaded sentence with zero filler, so nothing needs trimming. It is efficient, though the brevity reflects under-specification rather than a fully earned short form.
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?
An output schema exists, so return values need not be explained, and the single parameter is fully documented in the schema. However, for an unannotated endpoint with an opt-in developer key, the description should at least say whether the call works without authentication or is rate-limited.
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 description coverage is 100% and there is only one optional parameter (api_dev_key), so the schema already documents it fully. The description adds no meaning about why or when to supply the key, matching the baseline 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?
States a specific verb+resource ('Get ... pastes') and scopes it to 'trending ... on Pastebin', which implicitly separates it from list_user_pastes (user-scoped) and create_paste/delete_paste (mutations). It does not name any sibling explicitly, so it stops 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'trending' implies the use case (fetch the public trending feed rather than a user's pastes), but there is no explicit when-to-use, when-not-to-use, or named alternative. Guidance is only implied.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of results (1-1000, default 50). | |
| api_dev_key | No | Your Pastebin Developer API Key. | |
| api_user_key | No | Your Pastebin User Key. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| password | Yes | Your Pastebin password. | |
| user_name | Yes | Your Pastebin username. | |
| api_dev_key | No | Your Pastebin Developer API Key. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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, 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.
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.
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.
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.
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.
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.
6 tool updates
v0.1.0- First observed
create_paste - First observed
delete_paste - First observed
get_trending_pastes - First observed
list_user_pastes - First observed
login - First observed
stop
TDQS
Scored across 6 tools
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.
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.
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.
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
Publish, update, and organize HTML and Markdown pastes on PasteHTML as the authorized user.
Deploy HTML and Markdown as live URLs. Create, search, update, and manage pastes from any AI agent.
Durable, versioned memory for AI assistants. Remote memory needs a Pastepile subscription.
Paste short text, get a shareable URL. Read any by slug; create with an API key.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceEnables 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 npm2MIT
- AlicenseAqualityCmaintenanceEnables browsing, searching, and reading Reddit posts, comments, and subreddits through Reddit's API using PRAW.6MIT

Locket MCP Serverofficial
FlicenseNot gradedqualityDmaintenanceEnables 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-- AlicenseAqualityDmaintenanceEnables searching and managing Spotify playlists, tracks, and user information through the Spotify Web API.10MIT