npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@link.me/mcp

v0.3.1

Published

Linkme platform MCP server for Claude, Cursor, and other AI agents

Readme

@link.me/mcp

Model Context Protocol server for the Linkme platform. Gives AI agents like Claude, Cursor, and Windsurf programmatic access to your Linkme account.

Install

npm install -g @link.me/mcp

Pre-compiled binaries are provided for macOS (arm64, x64), Linux (x64, arm64), and Windows (x64). No runtime dependencies required.

Setup

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "linkme": {
      "command": "linkme-mcp",
      "env": {
        "LINKME_TOKEN": "your-api-token"
      }
    }
  }
}

Claude Code

claude mcp add linkme linkme-mcp -e LINKME_TOKEN=your-api-token

Cursor

Add to your Cursor MCP settings:

{
  "mcpServers": {
    "linkme": {
      "command": "linkme-mcp",
      "env": {
        "LINKME_TOKEN": "your-api-token"
      }
    }
  }
}

Windsurf

Add to your Windsurf MCP configuration:

{
  "mcpServers": {
    "linkme": {
      "command": "linkme-mcp",
      "env": {
        "LINKME_TOKEN": "your-api-token"
      }
    }
  }
}

Authentication

Set the LINKME_TOKEN environment variable with your API token. The MCP server uses this to authenticate all requests to the Linkme platform.

You can obtain a token by logging in with the CLI:

npm install -g @link.me/cli
linkme auth login
linkme config show --json | jq -r '.token'

Available Tools

The MCP server exposes 170+ tools covering the full Linkme platform. All tools return structured JSON (both a text block and, on success, matching structuredContent).

Every tool is annotated with MCP tool annotations (readOnlyHint, destructiveHint, idempotentHint) so hosts can surface expected behavior before a call. Tools backed by a destructive CLI command (delete, cancel, reset, etc.) are marked destructiveHint: true and their description is suffixed with (Destructive: executes immediately without a confirmation prompt.) — the underlying --force flag is auto-injected and these tools run immediately with no confirmation step, so check annotations/descriptions before calling them.

Profile & Identity

| Tool | Description | |------|-------------| | whoami | Show current identity | | profile | View profile details | | profile_edit | Edit profile fields | | profile_theme | Update theme colors | | profile_linkme-icon | Toggle Linkme icon | | profile_pixels | Manage tracking pixels | | profile_contact_list | List contact info | | profile_contact_set | Set contact info | | profile_contact_delete | Delete contact info | | profile_sections_list | List profile sections | | profile_sections_enable | Enable a section | | profile_sections_disable | Disable a section | | profile_sections_move | Reorder a section |

Links

| Tool | Description | |------|-------------| | links_list | List custom and platform links | | links_add | Add a custom link | | links_edit | Edit a custom link | | links_delete | Delete a custom link | | links_set | Set a platform/social link | | links_unset | Remove a platform/social link | | links_platform_list\|set\|delete | Platform links (shared link system) | | links_schedule_list\|create\|edit\|delete\|publish-now\|cancel | Scheduled links | | featured_list\|add\|edit\|delete\|reorder | Featured links | | featured_headers_*, featured_multilinks_* | Featured headers and multilinks |

AP (Post on All Platforms)

| Tool | Description | |------|-------------| | ap_accounts | List connected accounts | | ap_disconnect | Disconnect a provider | | ap_upload | Upload a video for posting | | ap_limits | Show plan limits and remaining quota | | ap_post_list | List posts | | ap_post_calendar | Posts in a date range | | ap_post_create | Create a post | | ap_post_status | Check post status | | ap_post_publish | Publish a draft | | ap_post_cancel | Cancel a post (whole post or specific targets) | | ap_post_retry | Retry a failed post | | ap_post_reschedule | Update caption/schedule of a scheduled post | | ap_post_insights | Per-target live insights | | ap_post_comments | Per-target comments | | ap_analytics_post | Post analytics | | ap_analytics_accounts | Account-wide analytics |

Connecting a provider (linkme ap connect) is an interactive OAuth flow and is CLI-only.

Analytics

| Tool | Description | |------|-------------| | analytics_overview | Aggregated analytics | | analytics_visits | Visit breakdown | | analytics_links | Per-link clicks | | analytics_geo | Geographic breakdown | | analytics_realtime | Real-time visitors |

Email

| Tool | Description | |------|-------------| | email_send | Send a campaign | | email_test | Send a test email | | email_history | Campaign history | | email_detail | Campaign details | | email_recipients | List campaign recipients | | email_cancel | Cancel a campaign | | email_upload-image | Upload an image | | email_domains_list | List sending domains (verified and pending) | | email_domains_add | Add a sending domain | | email_domains_verify | Check DNS verification status | | email_templates_list\|get\|create\|update\|delete | Email templates |

Commerce & Shop

| Tool | Description | |------|-------------| | commerce_products_list | List digital products | | commerce_products_create | Create a digital product | | commerce_products_edit | Edit a digital product | | commerce_products_reorder | Reorder digital products | | commerce_products_orders | List digital product sales | | commerce_products_delete | Delete a digital product | | commerce_merch_list\|categories | Merch catalog | | shop_products_list\|add\|edit\|delete | Physical shop products | | shop_categories_list\|add\|edit\|reorder\|delete | Shop categories |

Other Tools

| Tool | Description | |------|-------------| | search | Search Linkme users | | username_check | Check username availability | | waitlist_status\|join | Feature waitlists (e.g. AP) | | contacts_list | List contacts | | contacts_stats | Contact analytics | | gallery_upload\|list\|delete | Gallery media | | profile_video_show\|set\|remove | Profile video | | profile_forms_*, profile_events_* | Forms and events | | auth_login\|logout\|resume | Authentication | | auth_sessions_list\|revoke | Session management | | config_show\|set\|reset | Configuration | | automations_* | Instagram automations (16 tools) | | courses_* | Course management (incl. courses_videos_upload) | | feeds_* | Feed subscriptions | | reviews_* | Review subscriptions | | agency_* | Agency management | | skill_list\|show | Bundled agent skill docs |

Hosted / Remote Server (Streamable HTTP)

Besides the stdio binary, the server can run as a remote MCP endpoint over Streamable HTTP — the transport required for the claude.ai connectors directory and the ChatGPT Apps ecosystem:

PORT=8788 linkme-mcp-http          # or: bun run start:mcp-http
  • POST /mcp — the MCP endpoint (stateless; one request per call, safe for serverless).
  • Auth is per-request: Authorization: Bearer <linkme-token>. Requests without a token get a 401 with a WWW-Authenticate header pointing at the RFC 9728 metadata.
  • GET /.well-known/oauth-protected-resource/mcp — protected-resource metadata.
  • GET /healthz — health probe.

Sign in with Linkme (claude.ai / Claude Desktop / ChatGPT)

The hosted server supports OAuth 2.1, so no token setup is needed: add https://mcp.link.me/mcp as a custom connector in claude.ai, Claude Desktop, or ChatGPT and sign in with your Linkme account when prompted. No CLI or npm install required.

Self-hosting operators: see docs/mcp-oauth.md in the source repository for configuration.

  • The process is multi-tenant safe: the bearer token is scoped to the request, local CLI profiles are never read, and only LINKME_API_URL / LINKME_AUTH_URL / LINKME_AP_URL are forwarded from the host environment.

The handler is built on the SDK's web-standard transport (Request/Response), so createMcpHttpHandler() from mcp/http-server.ts also runs unchanged on Cloudflare Workers, Deno, or any fetch-based runtime.

Cloudflare Workers deploy

A ready-to-deploy Worker lives in workers/ (mcp-worker.ts + wrangler.jsonc):

bun run dev:mcp-worker      # local workerd via wrangler dev
bun run deploy:mcp-worker   # wrangler deploy (requires wrangler login)
  • Requires the nodejs_compat compatibility flag (already configured) — commands write config to workerd's in-memory virtual /tmp, never to real disk.
  • workers/stubs/ aliases two transitive deps that misbehave on workerd: when-exit (browser build references window) and atomically (temp-file rename fails on the virtual fs; a plain write is equivalent there).
  • Set LINKME_OAUTH_ISSUERS (and optionally LINKME_API_URL / LINKME_AUTH_URL / LINKME_AP_URL) as Worker vars.
  • Known limitation: skill_list / skill_show return an in-band tool error on Workers — skill markdown files are not bundled into the Worker.

Environment Variables

| Variable | Description | |----------|-------------| | LINKME_TOKEN | Auth token (required) | | LINKME_API_URL | Override core API gateway (fallback for user/analytics/commerce/email) | | LINKME_<SERVICE>_URL | Per-service overrides — see linkme config endpoints for the full list |

How It Works

The MCP server uses stdio transport and exposes each CLI command as an MCP tool. Tool inputs are derived from the same Zod schemas used by the CLI. All tools run in JSON mode with color disabled, returning structured responses suitable for LLM consumption.

Commands that genuinely require a terminal are excluded from the MCP tool set: shell completion, browser OAuth flows (ap connect, automations authorize), profile switching (auth switch), and interactive reordering (links reorder). Upload commands (ap_upload, gallery_upload, courses_videos_upload, email_upload-image, profile_video_set) are fully flag-driven and ARE available as tools.

CLI

A full command-line interface is available as a separate package:

npm install -g @link.me/cli

See @link.me/cli for documentation.

License

UNLICENSED