0.4.2 • Published 6 months ago

@psachan/pitools v0.4.2

Weekly downloads
-
License
ISC
Repository
-
Last release
6 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

6 months ago

0.4.1

6 months ago

0.4.0

6 months ago

0.3.0

6 months ago

0.2.0

6 months ago

0.1.1

6 months ago

0.1.0

6 months ago