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

outx-mcp-server

v1.8.6

Published

MCP server for OutX: LinkedIn social listening & data API

Readme

OutX MCP Server

npm version License: MIT

MCP server for the OutX LinkedIn social listening and data API. Connect AI agents like Claude, Cursor, and Claude Code to LinkedIn: create watchlists, search posts, fetch profiles, and engage, all through natural language.

What You Can Do

  • Monitor LinkedIn: Track posts by keywords, people, or companies with watchlists
  • Search & filter posts: 15+ filters: keyword, date, seniority, trending, language
  • Fetch profiles & companies: Get full LinkedIn profiles, company pages, and connections
  • Search LinkedIn: Find people by title, company, location, industry, and more
  • Message connections: Send direct messages to 1st-degree connections
  • Engage: Like and comment on posts through your LinkedIn account
  • All via natural language: Just tell your AI agent what you want

Quick Start

1. Get an API key at mentions.outx.ai/api-doc

2. Add to your AI tool (pick one):

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "outx": {
      "command": "npx",
      "args": ["-y", "outx-mcp-server"],
      "env": {
        "OUTX_API_KEY": "your-api-key"
      }
    }
  }
}

Add to .cursor/mcp.json in your project:

{
  "mcpServers": {
    "outx": {
      "command": "npx",
      "args": ["-y", "outx-mcp-server"],
      "env": {
        "OUTX_API_KEY": "your-api-key"
      }
    }
  }
}

Add to .mcp.json in your project:

{
  "mcpServers": {
    "outx": {
      "command": "npx",
      "args": ["-y", "outx-mcp-server"],
      "env": {
        "OUTX_API_KEY": "your-api-key"
      }
    }
  }
}

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "outx": {
      "command": "npx",
      "args": ["-y", "outx-mcp-server"],
      "env": {
        "OUTX_API_KEY": "your-api-key"
      }
    }
  }
}

3. Start using it:

"Create a watchlist to monitor LinkedIn posts about AI startups raising Series A"

Available Tools (33)

Watchlist Management

One watchlist carries one signal for one audience. Pause and resume any watchlist with disable: true or disable: false on its update tool. Configure Slack alerts with slack_webhook_url. Grow a people or company watchlist with add_profiles / add_companies on its update tool, never by creating a second list: 200 members per watchlist, and a per-plan cap on the total your team tracks.

| Tool | Description | |------|-------------| | list_watchlists | List every watchlist on the team, all four types (keyword, reddit, people, company) in one call. Call this before creating anything, so you extend or reuse what is already there instead of making a near-duplicate. | | create_keyword_watchlist | Create a watchlist that monitors LinkedIn posts matching keywords. Two modes: provide keywords to track exact terms, OR provide prompt to have OutX generate keywords and intent labels from a plain-English description. | | list_keyword_watchlists | List all keyword watchlists for your account. Each item includes disabled (true when the watchlist is paused and collecting nothing) and disabledAt. | | update_keyword_watchlist | Update a keyword watchlist. Patch any fields (name, fetchFreqInHours, disable, slack_webhook_url, keywords, labels), OR pass prompt to have OutX regenerate keywords and labels from a new description. | | delete_keyword_watchlist | Delete a keyword watchlist and all its tracked data. | | create_people_watchlist | Create a watchlist that monitors posts from specific LinkedIn profiles. A watchlist holds at most 200 profiles, and your plan caps the total profiles and companies your team tracks across every watchlist it owns. | | list_people_watchlists | List all people watchlists for your account. Each item includes disabled (true when the watchlist is paused and collecting nothing) and disabledAt. | | update_people_watchlist | Update a people watchlist: change the name, scan frequency or Slack webhook, pause or resume it with disable, and add or remove tracked profiles with add_profiles and remove_profiles. This is how you grow a people watchlist, so never create a second list for the same audience. | | delete_people_watchlist | Delete a people watchlist and all its tracked data. | | create_company_watchlist | Create a watchlist that monitors posts from LinkedIn company pages. A watchlist holds at most 200 companies, and your plan caps the total profiles and companies your team tracks across every watchlist it owns. | | list_company_watchlists | List all company watchlists for your account. Each item includes disabled (true when the watchlist is paused and collecting nothing) and disabledAt. | | update_company_watchlist | Update a company watchlist: change the name, scan frequency or Slack webhook, pause or resume it with disable, and add or remove tracked companies with add_companies and remove_companies. This is how you grow a company watchlist, so never create a second list for the same audience. | | delete_company_watchlist | Delete a company watchlist and all its tracked data. | | create_reddit_watchlist | Create a watchlist that monitors Reddit posts matching keywords. Two modes: provide keywords to track exact terms, OR provide prompt to have OutX generate keywords and intent labels from a plain-English description. | | list_reddit_watchlists | List all reddit watchlists for your account. Each item includes disabled (true when the watchlist is paused and collecting nothing) and disabledAt. | | update_reddit_watchlist | Update a reddit watchlist. Patch any fields (name, fetchFreqInHours, disable, slack_webhook_url, keywords, labels), OR pass prompt to regenerate keywords and labels. | | delete_reddit_watchlist | Delete a reddit watchlist and all its tracked data. |

Posts & Engagement (operates on posts your watchlists captured)

| Tool | Description | |------|-------------| | get_posts | Search and filter posts your watchlists captured. Supports keyword search, date range, seniority, trending, language, and more. | | get_interactions | Retrieve likes and comments for posts in a specific watchlist. Use to analyze engagement activity, build reports, or power dashboards. | | like_watchlist_post | Like a LinkedIn post that came from one of your OutX watchlists. Takes an OutX post_id (from get_posts results). | | comment_on_watchlist_post | Comment on a LinkedIn post that came from one of your OutX watchlists. Takes an OutX post_id (from get_posts results). |

LinkedIn Data API (direct LinkedIn actions, no watchlist required)

Async tools, the MCP server polls LinkedIn for ~150s and returns the result directly. You almost never need get_task_status because of this.

| Tool | Description | |------|-------------| | fetch_linkedin_profile | Fetch a LinkedIn profile by slug. Returns full profile data including name, headline, experience, education, and skills. | | fetch_linkedin_profile_posts | Fetch recent posts from one or more LinkedIn profiles by URN. Use fetch_linkedin_profile first to get the profile URN. | | like_linkedin_post | Like a LinkedIn post by its activity URN (direct LinkedIn action). Use this when you have a social_urn and don't need a watchlist. | | comment_on_linkedin_post | Comment on a LinkedIn post by its activity URN (direct LinkedIn action). Use this when you have a social_urn and don't need a watchlist. | | fetch_linkedin_company | Fetch a LinkedIn company page by slug. Returns company data including name, industry, employee count, description, headquarters, and logo. | | fetch_linkedin_company_posts | Fetch recent posts from a LinkedIn company page by slug. Returns posts with engagement data (likes, comments, shares). | | send_linkedin_message | Send a LinkedIn direct message to a 1st-degree connection. Requires the recipient's person URN (get it from fetch_linkedin_profile or search_linkedin_profiles). | | send_linkedin_connection_request | Send a LinkedIn connection request to a profile, with an optional note. Requires the person URN (get it from fetch_linkedin_profile or search_linkedin_profiles). | | search_linkedin_profiles | Search LinkedIn profiles by keywords, title, company, location, industry, and more. Returns matching profiles with name, headline, location, profile slug, and connection degree. | | fetch_linkedin_connections | Fetch your 1st-degree LinkedIn connections. Optionally filter by keyword, sort by recently added, and paginate. | | get_task_status | Recovery tool. Every other LinkedIn Data API tool polls automatically for ~150 seconds and returns the result directly, so you almost never need this. |

Account

| Tool | Description | |------|-------------| | get_team | Read your OutX team account: identity, effective plan (with expiry), and plan limits with current usage (watchlists and team members). Call this before creating watchlists to check remaining quota and avoid a 402. |

Note: LinkedIn Data tools require the OutX Chrome extension to be active within the last 48 hours.

Example Prompts

Once connected, try these with your AI agent:

Social listening:

  • "Create a watchlist to monitor LinkedIn posts about AI startups raising Series A"
  • "Show me trending posts from my watchlists this week"
  • "What are VPs and Directors posting about machine learning?"
  • "Find posts mentioning our competitor from the last 7 days"

Profile & company research:

  • "Fetch the LinkedIn profile for williamhgates"
  • "Get recent posts from this prospect's profile"
  • "Get company info and recent posts for OpenAI"
  • "Search for VPs of Engineering at Google in the US"
  • "Show me my most recently added connections"

Engagement & messaging:

  • "Like the top 3 most engaging posts about product management"
  • "Comment on this post with a thoughtful response"
  • "Send a message to this connection thanking them for connecting"

Workflows:

  • "Set up a watchlist for 'looking for a CRM' and check it every 6 hours"
  • "List all my watchlists and show me posts from the sales signals one"

Prerequisites

  • Node.js 18+: Required for the MCP server runtime
  • OutX account: Sign up free and get your API key
  • OutX Chrome extension: Required for LinkedIn Data API tools (profile fetching, direct engagement). Install here

How It Works

The OutX API has two surfaces:

  1. Watchlists & Engagement API (sync): Create watchlists to monitor LinkedIn by keywords, people, or companies. OutX scans on your schedule and stores posts. Query and engage via API.

  2. LinkedIn Data API (async): Direct LinkedIn proxy. Fetch profiles, get posts, like, comment. All endpoints return a task ID; the MCP server polls automatically until the result is ready.

The MCP server wraps both APIs into the tools listed above, callable by any MCP-compatible AI agent.

Development

git clone https://github.com/outxai/outx-mcp-server.git
cd outx-mcp-server
npm install
npm run build
OUTX_API_KEY=your-key npm start

For development with auto-reload:

OUTX_API_KEY=your-key npm run dev

The "Available Tools" table above is generated from the registered tools, so it cannot drift from the code. After adding or renaming a tool, regenerate it. The script rewrites README.md in place, between the GENERATED TOOL TABLE markers:

npx tsx scripts/gen-tool-table.ts

Documentation

Integrations

Guides & Tutorials

Links

Partnerships

Interested in a collaboration or affiliate partnership? Drop us a message at [email protected].

License

MIT