0.4.2 • Published 11 months ago

@psachan/pitools v0.4.2

Weekly downloads
-
License
ISC
Repository
-
Last release
11 months ago

PiTools MCP - Useful Tools for Any Prompt

npm version

❌ Without PiTools

  • ❌ No up-to-date web search in your AI agent
  • ❌ Manual tab-switching for research
  • ❌ No easy way to add more tools to your AI workflow

✅ With PiTools

PiTools MCP brings real-time web search, social media posting, and more tools directly into your AI agent or coding assistant. Just add use pitools to your prompt in Cursor or any MCP-compatible client:

Search the web:

What is the latest version of Next.js? use pitools duckduckgo_search

Post to LinkedIn:

Post "Excited to share my new project update! #innovation #coding" to LinkedIn. use pitools linkedin_post_text
  • 1️⃣ Write your prompt naturally
  • 2️⃣ Tell the LLM to use pitools and specify the tool (e.g., duckduckgo_search, linkedin_post_text)
  • 3️⃣ Get up-to-date answers or see your actions performed

No tab-switching, no outdated info, no manual research or posting.


🛠️ Getting Started

Requirements

  • Node.js >= v18.0.0
  • Cursor, Windsurf, Claude Desktop, or any MCP Client
  • For LinkedIn tools: LINKEDIN_ACCESS_TOKEN environment variable set with a valid LinkedIn access token.

Install in Cursor

Go to: SettingsCursor SettingsMCPAdd new global MCP server

Paste the following configuration into your Cursor ~/.cursor/mcp.json file (replace the path if needed). Make sure to replace YOUR_LINKEDIN_ACCESS_TOKEN, YOUR_INSTAGRAM_ACCESS_TOKEN, and YOUR_INSTAGRAM_USER_ID_FOR_POSTING with your actual credentials.

{
  "mcpServers": {
    "pitools": {
      "command": "npx",
      "args": ["-y", "@psachan/pitools@latest"],
      "env": {
        "LINKEDIN_ACCESS_TOKEN": "YOUR_LINKEDIN_ACCESS_TOKEN",
        "INSTAGRAM_ACCESS_TOKEN": "YOUR_INSTAGRAM_ACCESS_TOKEN",
        "INSTAGRAM_USER_ID_FOR_POSTING": "YOUR_INSTAGRAM_USER_ID_FOR_POSTING"
      }
    }
  }
}
  • You can also use bunx or pnpm dlx if you prefer.
  • If you prefer to set the environment variables system-wide, you can omit the env block here, but ensure they are accessible to the npx command.

🧰 Available Tools

  • duckduckgo_search: Performs a web search using DuckDuckGo and returns the top results.

    • query (string, required): The search query string.
    • options (object, optional):
      • safeSearch (optional, default: MODERATE): STRICT | MODERATE | OFF.
      • region (optional, default: us-en): Search region (e.g., 'us-en', 'uk-en').
      • maxResults (optional): Maximum number of results to return.
      • time (optional): Time range for results (DAY, WEEK, MONTH, YEAR).
  • linkedin_post_text: Posts a text update to LinkedIn.

    • commentary (string, required): The main text content of the post.
  • linkedin_post_article: Posts an article (URL with commentary and title) to LinkedIn.

    • commentary (string, required): Text to accompany the article.
    • url (string, required): The URL of the article to share.
    • title (string, required): The title of the article.
    • thumbnailFilePath (string, optional): Local path to an image to use as the article thumbnail.
    • thumbnailAltText (string, optional): Alt text for the custom thumbnail image.
  • linkedin_post_image: Posts an image with commentary to LinkedIn from a local file path.

    • commentary (string, required): Text to accompany the image.
    • filePath (string, required): The local path to the image file.
  • linkedin_post_video: Posts a video with commentary to LinkedIn from a local file path.

    • commentary (string, required): Text to accompany the video.
    • filePath (string, required): The local path to the video file.
  • linkedin_post_poll: Posts a poll with commentary to LinkedIn.

    • commentary (string, optional): Text to accompany the poll.
    • pollQuestion (string, required): The question for the poll.
    • pollOptions (array of strings, required): 2 to 4 options for the poll.
  • instagram_post_image: Posts an image to Instagram from a publicly accessible URL with an optional caption.

    • imageUrl (string, required): Publicly accessible URL of the image to post.
    • caption (string, optional): Text to accompany the image.

(More tools coming soon!)


🧑‍💻 Development

Clone the project and install dependencies:

npm install

Build:

npm run build

Local Configuration Example

Make sure to replace tokens and IDs with your actual credentials if testing features.

{
  "mcpServers": {
    "pitools-local": {
      "command": "npx",
      "args": ["tsx", "/path/to/folder/pitools/src/index.ts"],
      "env": {
        "LINKEDIN_ACCESS_TOKEN": "YOUR_LINKEDIN_ACCESS_TOKEN",
        "INSTAGRAM_ACCESS_TOKEN": "YOUR_INSTAGRAM_ACCESS_TOKEN",
        "INSTAGRAM_USER_ID_FOR_POSTING": "YOUR_INSTAGRAM_USER_ID_FOR_POSTING"
      }
    }
  }
}

🧪 Testing with MCP Inspector

npx -y @modelcontextprotocol/inspector npx @psachan/pitools@latest

License

ISC

0.4.2

11 months ago

0.4.1

11 months ago

0.4.0

11 months ago

0.3.0

11 months ago

0.2.0

11 months ago

0.1.1

12 months ago

0.1.0

12 months ago