Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .agents/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@ server.
- After generating the tool, call the tool to actually test it.
- When testing by calling the tool, prefer to not set the `jsRender` parameter.

# Releasing

- When bumping server versions, make sure all instances of the old server version are updated. These
are in `package.json`, `server.json` and possibly in other files.

# Documentation

- Update readme with new tool, toolset and parameter information.
31 changes: 31 additions & 0 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: Pull request

on:
pull_request:
types: [opened, synchronize, reopened]

concurrency:
group: pr-${{ github.event.pull_request.number }}
cancel-in-progress: true

jobs:
test:
runs-on: ubuntu-latest
permissions:
contents: read

steps:
- name: Checkout
uses: actions/checkout@v5

- name: Setup Node.js
uses: actions/setup-node@v5
with:
node-version: 'lts/*'
cache: npm

- name: Install dependencies
run: npm ci

- name: Run unit tests
run: npm test
51 changes: 1 addition & 50 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,56 +11,7 @@ concurrency:
cancel-in-progress: false

jobs:
semantic-release:
runs-on: ubuntu-latest
outputs:
released: ${{ steps.release.outputs.released }}
tag: ${{ steps.release.outputs.tag }}
permissions:
contents: write
issues: write
pull-requests: write
id-token: write

steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-depth: 0
persist-credentials: true

- name: Setup Node.js
uses: actions/setup-node@v5
with:
node-version: 'lts/*'
registry-url: 'https://registry.npmjs.org'

- name: Install dependencies
run: npm ci

- name: Build
run: npm run build --if-present

- name: Semantic release
id: release
env:
GH_TOKEN: ${{ secrets.GH_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
run: |
set -e
BEFORE=$(git describe --tags --abbrev=0 2>/dev/null || true)
npx semantic-release
AFTER=$(git describe --tags --abbrev=0 2>/dev/null || true)
if [ -n "$AFTER" ] && [ "$BEFORE" != "$AFTER" ]; then
echo "released=true" >> "$GITHUB_OUTPUT"
echo "tag=$AFTER" >> "$GITHUB_OUTPUT"
else
echo "released=false" >> "$GITHUB_OUTPUT"
fi

mcp-publish:
needs: semantic-release
if: needs.semantic-release.outputs.released == 'true'
runs-on: ubuntu-latest
permissions:
id-token: write
Expand All @@ -70,7 +21,7 @@ jobs:
- name: Checkout tag
uses: actions/checkout@v5
with:
ref: ${{ needs.semantic-release.outputs.tag }}
ref: main

- name: Setup Node.js
uses: actions/setup-node@v5
Expand Down
29 changes: 28 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1 +1,28 @@
# Contributing
# Publishing

When After merging changes to the server, the following steps need to be done:

1. Server version bump (major/minor/patch)

2. Publish to MCP registry.

## Server version bump

Publishing is done manually through a developer machine. This enabled bundling multiple
features/fixes under one release.

When you want to publish a new version:

- Pull `main` locally.

- Bump the server version numbers in the following files: `package.json`, `server.json`. Note that
there may be more files where the version number

- Choose between major, minor or patch bump accordingly.

- Run `npm publish`. This command should instruct you how to authenticate with NPM. The full command
should look like this:

```
NPM_CONFIG__AUTHTOKEN=<one_time_token>npm publish --access public
```
26 changes: 13 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ services, streamlining access to our tools and capabilities.
1. Clone this repository:

```
git clone https://github.com/Decodo/decodo-mcp-server
git clone https://github.com/Decodo/mcp-server
```

2. Run the following commands in the terminal:
Expand Down Expand Up @@ -151,31 +151,31 @@ The server exposes the following tools:
| `scrape_as_markdown` | Scrapes any target URL, expects a URL to be given via prompt. Returns results in Markdown. | Scrape peacock.com from a US IP address and tell me the pricing. |
| `screenshot` | Captures a screenshot of any webpage and returns it as a PNG image. | Take a screenshot of github.com from a US IP address. |
| `google_search` | Scrapes Google Search for a given query, and returns parsed results. | Scrape Google Search for shoes and tell me the top position. |
| `google_ads` | Scrapes Google Ads search results. | Scrape Google Ads for laptop and show me the top ads. |
| `google_lens` | Scrapes Google Lens image search results. | Search Google Lens for this image: https://example.com/image.jpg |
| `google_ai_mode` | Scrapes Google AI Mode (Search with AI) results. | Ask Google AI Mode: What are the top three dog breeds? |
| `google_ads` | Scrapes Google Ads search results. | Scrape Google Ads for laptop and show me the top ads. |
| `google_lens` | Scrapes Google Lens image search results. | Search Google Lens for this image: https://example.com/image.jpg |
| `google_ai_mode` | Scrapes Google AI Mode (Search with AI) results. | Ask Google AI Mode: What are the top three dog breeds? |
| `google_travel_hotels` | Scrapes Google Travel Hotels search results. | Search Google Travel Hotels for hotels in Paris. |
| `amazon_search` | Scrapes Amazon Search for a given query, and returns parsed results. | Scrape Amazon Search for wireless keyboard. |
| `amazon_product` | Scrapes Amazon Product page. | Scrape Amazon product B09H74FXNW and show me the details. |
| `amazon_pricing` | Scrapes Amazon Product pricing information. | Get pricing for Amazon product B09H74FXNW. |
| `amazon_sellers` | Scrapes Amazon Seller information. | Get information about Amazon seller A1R0Z7FJGTKESH. |
| `amazon_bestsellers` | Scrapes Amazon Bestsellers list. | Show me Amazon bestsellers in electronics. |
| `amazon_product` | Scrapes Amazon Product page. | Scrape Amazon product B09H74FXNW and show me the details. |
| `amazon_pricing` | Scrapes Amazon Product pricing information. | Get pricing for Amazon product B09H74FXNW. |
| `amazon_sellers` | Scrapes Amazon Seller information. | Get information about Amazon seller A1R0Z7FJGTKESH. |
| `amazon_bestsellers` | Scrapes Amazon Bestsellers list. | Show me Amazon bestsellers in electronics. |
| `walmart_search` | Scrapes Walmart Search for a given query, and returns parsed results. | Scrape Walmart Search for camping tent. |
| `walmart_product` | Scrapes Walmart Product page. | Scrape Walmart product 15296401808. |
| `walmart_product` | Scrapes Walmart Product page. | Scrape Walmart product 15296401808. |
| `target_search` | Scrapes Target Search for a given query, and returns parsed results. | Scrape Target Search for kitchen appliances. |
| `target_product` | Scrapes Target Product page. | Scrape Target product 92186007. |
| `target_product` | Scrapes Target Product page. | Scrape Target product 92186007. |
| `tiktok_post` | Scrapes a TikTok post URL for structured data (e.g. engagement, caption, hashtags). | Scrape this TikTok post: https://www.tiktok.com/@nba/video/7393013274725403950 |
| `tiktok_shop_search` | Scrapes TikTok Shop Search for a given query, and returns parsed results. | Scrape TikTok Shop Search for phone cases. |
| `tiktok_shop_product` | Scrapes TikTok Shop Product page. | Scrape TikTok Shop product 1731541214379741272. |
| `tiktok_shop_url` | Scrapes TikTok Shop page by URL. | Scrape this TikTok Shop URL: https://www.tiktok.com/shop/s?q=HEADPHONES |
| `youtube_metadata` | Scrapes YouTube video metadata. | Get metadata for YouTube video dFu9aKJoqGg. |
| `youtube_channel` | Scrapes YouTube channel videos. | Scrape YouTube channel @decodo_official. |
| `youtube_channel` | Scrapes YouTube channel videos. | Scrape YouTube channel @decodo_official. |
| `youtube_subtitles` | Scrapes YouTube video subtitles. | Get subtitles for YouTube video L8zSWbQN-v8. |
| `youtube_search` | Search YouTube videos. | Search YouTube for "How to care for chinchillas". |
| `reddit_post` | Scrapes a specific Reddit post. | Scrape the following Reddit post: https://www.reddit.com/r/horseracing/comments/1nsrn3/ |
| `reddit_subreddit` | Scrapes Reddit subreddit results. | Scrape the top 5 posts on r/Python this week. |
| `reddit_subreddit` | Scrapes Reddit subreddit results. | Scrape the top 5 posts on r/Python this week. |
| `reddit_user` | Scrapes a Reddit user profile and their posts/comments. | Scrape this Reddit user: https://www.reddit.com/user/IWasRightOnce/ |
| `bing_search` | Scrapes Bing Search results. | Search Bing for laptop reviews. |
| `bing_search` | Scrapes Bing Search results. | Search Bing for laptop reviews. |
| `chatgpt` | Search and interact with ChatGPT for AI-powered responses and conversations. | Ask ChatGPT to explain quantum computing in simple terms. |
| `perplexity` | Search and interact with Perplexity for AI-powered responses and conversations. | Ask Perplexity what the latest trends in web development are. |

Expand Down
Loading
Loading