Skip to main content
Glama
ntanhprt

pshare-share-mcp

by ntanhprt

pshare-share-mcp

MCP server that allows any AI (Claude Code, Claude Desktop, or other MCP clients) to upload files/folders to Pshare and get back a share link — exactly like the manual flow: upload via the UI then click the Share button to copy the link.

No login or token needed — consistent with Pshare's current architecture (the web client itself doesn't really authenticate, it just uses a self-generated X-Browser-Id).

Requirement: you already have a running Pshare instance somewhere (localhost or on the LAN) — this repo is only an MCP server that calls Pshare's REST API, it doesn't run Pshare itself.

Provided tools

pshare_upload

field

required

description

paths

array of absolute paths (file or folder) on the machine running the MCP server. Folders are uploaded recursively, preserving the subdirectory structure.

title

title displayed on the share card

senderName

sender name shown to the recipient

password

password required to open the share link

description

description displayed on the share card

ttlMinutes

number of minutes the link stays valid; leave empty = never expires

Returned result: a share link of the form http://<pshare-host>/?share=<N> along with the file count and password status.

Files larger than 90MB automatically switch to chunked upload (same as the web client's LAN upload behavior); no further action needed.

Related MCP server: vnsh-mcp

Installation

Just clone this repo — no need to download Pshare itself:

git clone https://github.com/ntanhprt/Pshare-mcp.git
cd Pshare-mcp
pnpm install
pnpm build      # biên dịch ra dist/

Configuration (environment variables)

variable

default

description

PSHARE_BASE_URL

http://localhost:5173

URL of the Pshare server that the MCP will call to upload/share

PSHARE_MCP_HOST

0.0.0.0

bind host when running HTTP transport

PSHARE_MCP_PORT

7317

port when running HTTP transport

PSHARE_MCP_ALLOWED_HOSTS

(not set)

list of allowed hosts, comma-separated, used to enable DNS-rebinding protection when binding 0.0.0.0

localhost is only correct when the MCP server runs on the very machine running Pshare. localhost always points to "the machine running that process" — so if you install this MCP on a different machine/laptop than the one running Pshare (even on the same LAN), you must change it to the real IP of the machine running Pshare. For example, if Pshare is running on a machine with IP 192.168.3.7:

PSHARE_BASE_URL=http://192.168.3.7:5173 claude mcp add pshare-share -- node "$(pwd)/dist/index.js"

Only keep the default localhost when you run the MCP (stdio) directly on the same machine running Pshare.

Standalone test run

# stdio (mặc định)
pnpm start

# HTTP/SSE — AI ở máy khác trong LAN cũng gọi được
pnpm start:http
# → nghe tại http://<PSHARE_MCP_HOST>:<PSHARE_MCP_PORT>/mcp

Integration guide for other developers

After cloning + building (see Installation above), from inside the Pshare-mcp directory:

claude mcp add pshare-share -- node "$(pwd)/dist/index.js"

To point to Pshare on another machine, pass env via -e (see the localhost note in Configuration):

claude mcp add pshare-share \
  -e PSHARE_BASE_URL=http://192.168.3.7:5173 \
  -- node "$(pwd)/dist/index.js"

Verify it's registered:

claude mcp list

2. Use with Claude Desktop (stdio transport)

Open the config file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows) and add:

{
  "mcpServers": {
    "pshare-share": {
      "command": "node",
      "args": ["/đường/dẫn/tuyệt/đối/tới/Pshare-mcp/dist/index.js"],
      "env": {
        "PSHARE_BASE_URL": "http://localhost:5173"
      }
    }
  }
}

Restart Claude Desktop to get the pshare_upload tool.

3. Use over HTTP/SSE (when the AI runs on another machine on the same LAN)

Run the MCP server on the machine hosting Pshare (or any machine that can reach Pshare):

PSHARE_BASE_URL=http://localhost:5173 pnpm start:http

On the client machine (Claude Code, or any MCP client that supports HTTP transport), point to:

http://<IP-máy-chạy-mcp>:7317/mcp

Example with Claude Code:

claude mcp add --transport http pshare-share http://192.168.3.7:7317/mcp

4. Use with any other AI/agent framework

MCP is a standard JSON-RPC protocol — any MCP client (LangChain MCP adapter, custom agent, etc.) can connect, just need:

  • stdio: spawn the command node dist/index.js and communicate via stdin/stdout.

  • HTTP: call POST http://<host>:<port>/mcp following MCP's Streamable HTTP transport spec.

Security notes

This MCP server does not authenticate — anyone who can reach it (via stdio if they can run the process, or via HTTP if they can access the host:port) can upload/share files to the real Pshare. This is consistent with Pshare itself (no auth on the upload/share API), but keep this in mind when exposing the HTTP transport beyond the LAN.

Available Tools

1 tool
pshare_uploadUpload to Pshare and get a share linkA

Uploads one or more files/folders from this machine to Pshare (LAN file sharing) and returns the same share link a user would get by uploading through the UI and clicking "Share".

ParametersJSON Schema
NameRequiredDescriptionDefault
pathsYesAbsolute file or folder paths on this machine to upload. Folders are uploaded recursively.
titleNoTitle shown on the share card
passwordNoPassword required to open the share link
senderNameNoName of the sender shown to recipients
ttlMinutesNoMinutes until the share expires; omit for no expiry
descriptionNoDescription shown on the share card

TDQS

A4/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 full burden. It clearly states the upload side-effect and the nature of the return value, but it does not disclose potential caveats such as file size limits, authentication requirements, or whether an existing share is reused or a new one is created. The UI-equivalence note adds value, but behavioral disclosure remains basic.

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 that immediately states the action and outcome. Every phrase earns its place, and there is zero filler or repetition of schema field names.

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?

The tool has no output schema, so the description's mention of the returned share link is valuable for understanding what to expect. With six parameters well-documented in the schema and a straightforward purpose, the description is complete enough for an agent to use the tool, though it could add edge-case behavior (e.g., handling of inaccessible paths).

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 description rightfully leaves parameter details to the schema. The only parameter-related hint in the description is 'one or more files/folders', which mirrors the 'paths' array. This adds no meaning beyond the schema, so baseline 3 is appropriate.

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 names a specific verb ('Uploads'), a clear resource ('one or more files/folders from this machine to Pshare'), and a concrete outcome ('returns the same share link a user would get'). It fully distinguishes the tool's purpose even without sibling tools.

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 description provides clear usage context by equating the tool's output to the UI 'Share' action, implying when to use it: whenever a user would upload files via the Pshare interface. It does not explicitly mention exclusions or alternatives, but with no sibling tools, this is sufficient.

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. 1 tool updatev1.0.0
    • First observedpshare_upload

TDQS

A3.9/5.0

Scored across 1 tool

Disambiguation5/5

With only a single tool, there is no possibility of confusion or overlap. The tool's purpose is clearly unique by virtue of being the only one.

Naming Consistency5/5

A single tool name cannot be inconsistent with itself. 'pshare_upload' uses a clear prefix plus verb structure, and there are no other names to compare against.

Tool Count2/5

A one-tool server for a file-sharing service feels too thin. While the tool covers the upload action, the apparent scope of 'share' implies at least download or retrieval functionality, making a single tool insufficient.

Completeness2/5

The tool surface is severely limited to uploading. There are no tools for downloading, listing, deleting, or managing shares, which means agents have no way to complete a full sharing workflow.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to manage Microsoft SharePoint documents and folders through natural language, supporting operations like listing, reading, uploading, updating, deleting, and creating Office files.
    13
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables sharing and reading encrypted files (text, images, logs) for AI workflows, with automatic 24-hour expiration and host-blind security.
    180 npm
    156
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to securely transfer files between machines via encrypted, expiring share links, with tools for upload, download, status checks, and link management.
    MIT
  • F
    license
    A
    quality
    B
    maintenance
    Enables AI agents and users to upload and download files via MCP, generating shareable links and identifier codes. Files are automatically deleted after 24 hours.
    9
    -