@scavio/mcp-server 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  ![GitHub Repo stars](https://img.shields.io/github/stars/scavio-ai/scavio-mcp?style=social)
4
4
  ![License](https://img.shields.io/github/license/scavio-ai/scavio-mcp)
5
5
 
6
- An MCP server that connects AI agents to Google, YouTube, Amazon, Walmart, TikTok, and Reddit. 21 tools for web search, product lookup, video discovery, and social media analysis through a single HTTP endpoint.
6
+ [Scavio](https://scavio.dev) is a unified [Web Search API](https://scavio.dev/docs/search-api) and MCP server that connects AI agents to Google, YouTube, Amazon, Walmart, TikTok, Instagram, and Reddit. 33 tools for web search, product lookup, video discovery, and social media data through a single [Search API](https://scavio.dev/docs/search-api) endpoint.
7
7
 
8
8
  ## Remote MCP Server
9
9
 
@@ -190,34 +190,34 @@ Add to settings (`Cmd+,`):
190
190
 
191
191
  ## Available Tools
192
192
 
193
- ### Google
193
+ ### [Google Search API](https://scavio.dev/docs/search-api)
194
194
 
195
195
  | Tool | Description |
196
196
  |------|-------------|
197
197
  | `search_google` | Web search with structured results, news, images, maps, and knowledge graph |
198
198
 
199
- ### YouTube
199
+ ### [YouTube Data API](https://scavio.dev/docs/youtube-api)
200
200
 
201
201
  | Tool | Description |
202
202
  |------|-------------|
203
203
  | `search_youtube` | Search videos, channels, and playlists |
204
204
  | `get_youtube_metadata` | Get video metadata including title, views, likes, and duration |
205
205
 
206
- ### Amazon
206
+ ### [Amazon Product API](https://scavio.dev/docs/amazon-api)
207
207
 
208
208
  | Tool | Description |
209
209
  |------|-------------|
210
210
  | `search_amazon` | Search product listings with price and sort filters |
211
211
  | `get_amazon_product` | Get full product details by ASIN |
212
212
 
213
- ### Walmart
213
+ ### [Walmart API](https://scavio.dev/docs/walmart-api)
214
214
 
215
215
  | Tool | Description |
216
216
  |------|-------------|
217
217
  | `search_walmart` | Search product listings with price and delivery filters |
218
218
  | `get_walmart_product` | Get full product details by product ID |
219
219
 
220
- ### TikTok
220
+ ### [TikTok API](https://scavio.dev/docs/tiktok-api)
221
221
 
222
222
  | Tool | Description |
223
223
  |------|-------------|
@@ -233,7 +233,24 @@ Add to settings (`Cmd+,`):
233
233
  | `get_tiktok_user_followers` | Get a user's follower list |
234
234
  | `get_tiktok_user_followings` | Get a user's following list |
235
235
 
236
- ### Reddit
236
+ ### [Instagram API](https://scavio.dev/docs/instagram-api)
237
+
238
+ | Tool | Description |
239
+ |------|-------------|
240
+ | `get_instagram_profile` | Get user profile (bio, follower/following/post counts) |
241
+ | `get_instagram_user_posts` | List a user's posts with pagination |
242
+ | `get_instagram_user_reels` | List a user's Reels with pagination |
243
+ | `get_instagram_user_tagged` | List posts a user is tagged in |
244
+ | `get_instagram_user_stories` | Get a user's active stories |
245
+ | `get_instagram_post` | Get a single post by url, media_id, or shortcode |
246
+ | `get_instagram_post_comments` | Get comments on a post |
247
+ | `get_instagram_comment_replies` | Get replies to a specific comment |
248
+ | `search_instagram_users` | Search users by keyword |
249
+ | `search_instagram_hashtags` | Search hashtags by keyword |
250
+ | `get_instagram_user_followers` | Get a user's follower list |
251
+ | `get_instagram_user_followings` | Get a user's following list |
252
+
253
+ ### [Reddit API](https://scavio.dev/docs/reddit-api)
237
254
 
238
255
  | Tool | Description |
239
256
  |------|-------------|
@@ -248,6 +265,18 @@ Add to settings (`Cmd+,`):
248
265
 
249
266
  ---
250
267
 
268
+ ## About Scavio
269
+
270
+ [Scavio](https://scavio.dev) is a unified [Web Search API](https://scavio.dev/docs/search-api) and data API for AI agents and developers. One key, structured JSON, no scraping or proxies:
271
+
272
+ - [Google Search API](https://scavio.dev/docs/search-api) — SERP results, news, images, maps, and knowledge graph
273
+ - [Amazon Product API](https://scavio.dev/docs/amazon-api) and [Walmart API](https://scavio.dev/docs/walmart-api) — product search and details
274
+ - [TikTok API](https://scavio.dev/docs/tiktok-api), [Reddit API](https://scavio.dev/docs/reddit-api), and [YouTube API](https://scavio.dev/docs/youtube-api) — social and video data
275
+
276
+ Get a free [Search API](https://scavio.dev/docs/search-api) key at [scavio.dev](https://scavio.dev).
277
+
278
+ ---
279
+
251
280
  ## License
252
281
 
253
282
  [MIT](LICENSE)
@@ -4,6 +4,7 @@ import { registerAmazonTools } from "./amazon.js";
4
4
  import { registerWalmartTools } from "./walmart.js";
5
5
  import { registerUsageTool } from "./usage.js";
6
6
  import { registerTiktokTools } from "./tiktok.js";
7
+ import { registerInstagramTools } from "./instagram.js";
7
8
  import { registerRedditTools } from "./reddit.js";
8
9
  export function registerAllTools(server, getClient) {
9
10
  registerGoogleTools(server, getClient);
@@ -11,6 +12,7 @@ export function registerAllTools(server, getClient) {
11
12
  registerAmazonTools(server, getClient);
12
13
  registerWalmartTools(server, getClient);
13
14
  registerTiktokTools(server, getClient);
15
+ registerInstagramTools(server, getClient);
14
16
  registerRedditTools(server, getClient);
15
17
  registerUsageTool(server, getClient);
16
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,SAA6B;IAC/E,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvC,oBAAoB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACxC,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvC,oBAAoB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACxC,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvC,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvC,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,SAA6B;IAC/E,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvC,oBAAoB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACxC,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvC,oBAAoB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACxC,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvC,sBAAsB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC1C,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvC,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { ScavioClient } from "../lib/client.js";
3
+ export declare function registerInstagramTools(server: McpServer, getClient: () => ScavioClient): void;
@@ -0,0 +1,212 @@
1
+ import { z } from "zod";
2
+ import { McpError, ErrorCode } from "@modelcontextprotocol/sdk/types.js";
3
+ import { ApiError } from "../lib/errors.js";
4
+ function handleApiError(err) {
5
+ if (err instanceof ApiError) {
6
+ if (err.status === 429)
7
+ return { isError: true, content: [{ type: "text", text: "Rate limited. Wait and retry." }] };
8
+ if (err.status === 401)
9
+ throw new McpError(ErrorCode.InternalError, "Invalid SCAVIO_API_KEY. Check your configuration.");
10
+ return { isError: true, content: [{ type: "text", text: `Scavio API error (${err.status}): ${err.message}` }] };
11
+ }
12
+ throw new McpError(ErrorCode.InternalError, String(err));
13
+ }
14
+ export function registerInstagramTools(server, getClient) {
15
+ server.tool("get_instagram_profile", `Get an Instagram user's profile as JSON. Returns user ID, username, full name, biography, external URL, profile picture, verified/private flags, and follower/following/post counts. Provide either username or user_id.`, {
16
+ username: z.string().optional()
17
+ .describe("Instagram handle without the @ symbol, e.g. 'instagram'."),
18
+ user_id: z.string().optional()
19
+ .describe("Numeric Instagram user ID. Use if you already have it from a previous request."),
20
+ }, async (params) => {
21
+ try {
22
+ const data = await getClient().post("/api/v1/instagram/profile", params);
23
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
24
+ }
25
+ catch (err) {
26
+ return handleApiError(err);
27
+ }
28
+ });
29
+ server.tool("get_instagram_user_posts", `List an Instagram user's posts (timeline media) with pagination as JSON. Provide username or user_id. Use the end_cursor from data.page_info as the next cursor; stop when has_next_page is false.`, {
30
+ username: z.string().optional()
31
+ .describe("Instagram handle without the @ symbol."),
32
+ user_id: z.string().optional()
33
+ .describe("Numeric Instagram user ID."),
34
+ count: z.number().int().min(1).max(50).default(12)
35
+ .describe("Number of posts per page (1-50)."),
36
+ cursor: z.string().optional()
37
+ .describe("Pagination cursor (end_cursor) from a previous response."),
38
+ }, async (params) => {
39
+ try {
40
+ const data = await getClient().post("/api/v1/instagram/user/posts", params);
41
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
42
+ }
43
+ catch (err) {
44
+ return handleApiError(err);
45
+ }
46
+ });
47
+ server.tool("get_instagram_user_reels", `List an Instagram user's Reels with pagination as JSON. Provide username or user_id. Use the end_cursor from data.page_info as the next cursor; stop when has_next_page is false.`, {
48
+ username: z.string().optional()
49
+ .describe("Instagram handle without the @ symbol."),
50
+ user_id: z.string().optional()
51
+ .describe("Numeric Instagram user ID."),
52
+ count: z.number().int().min(1).max(50).default(12)
53
+ .describe("Number of reels per page (1-50)."),
54
+ cursor: z.string().optional()
55
+ .describe("Pagination cursor (end_cursor) from a previous response."),
56
+ }, async (params) => {
57
+ try {
58
+ const data = await getClient().post("/api/v1/instagram/user/reels", params);
59
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
60
+ }
61
+ catch (err) {
62
+ return handleApiError(err);
63
+ }
64
+ });
65
+ server.tool("get_instagram_user_tagged", `List posts an Instagram user is tagged in, with pagination as JSON. Provide username or user_id. Use the end_cursor from data.page_info as the next cursor; stop when has_next_page is false.`, {
66
+ username: z.string().optional()
67
+ .describe("Instagram handle without the @ symbol."),
68
+ user_id: z.string().optional()
69
+ .describe("Numeric Instagram user ID."),
70
+ count: z.number().int().min(1).max(50).default(12)
71
+ .describe("Number of posts per page (1-50)."),
72
+ cursor: z.string().optional()
73
+ .describe("Pagination cursor (end_cursor) from a previous response."),
74
+ }, async (params) => {
75
+ try {
76
+ const data = await getClient().post("/api/v1/instagram/user/tagged", params);
77
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
78
+ }
79
+ catch (err) {
80
+ return handleApiError(err);
81
+ }
82
+ });
83
+ server.tool("get_instagram_user_stories", `Get an Instagram user's currently active stories as JSON. Returns each story's media URLs, type, and timestamp. Provide either username or user_id.`, {
84
+ username: z.string().optional()
85
+ .describe("Instagram handle without the @ symbol."),
86
+ user_id: z.string().optional()
87
+ .describe("Numeric Instagram user ID."),
88
+ }, async (params) => {
89
+ try {
90
+ const data = await getClient().post("/api/v1/instagram/user/stories", params);
91
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
92
+ }
93
+ catch (err) {
94
+ return handleApiError(err);
95
+ }
96
+ });
97
+ server.tool("get_instagram_post", `Get a single Instagram post (or reel) as JSON, including caption, author, media URLs, and engagement stats. Provide one of: url (a /p/, /reel/, /reels/, or /tv/ link), media_id, or shortcode.`, {
98
+ url: z.string().optional()
99
+ .describe("Instagram post URL, e.g. 'https://www.instagram.com/p/DUajw4YkorV/'."),
100
+ media_id: z.string().optional()
101
+ .describe("Numeric media ID."),
102
+ shortcode: z.string().optional()
103
+ .describe("Post shortcode, e.g. 'DUajw4YkorV'."),
104
+ }, async (params) => {
105
+ try {
106
+ const data = await getClient().post("/api/v1/instagram/post", params);
107
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
108
+ }
109
+ catch (err) {
110
+ return handleApiError(err);
111
+ }
112
+ });
113
+ server.tool("get_instagram_post_comments", `Get comments on an Instagram post as JSON. Each comment includes ID (pk), text, author, timestamp, and like count. Provide shortcode or url. Use data.next_min_id as the next cursor; stop when it is absent.`, {
114
+ shortcode: z.string().optional()
115
+ .describe("Post shortcode, e.g. 'DUajw4YkorV'."),
116
+ url: z.string().optional()
117
+ .describe("Instagram post URL; the shortcode is extracted from it."),
118
+ cursor: z.string().optional()
119
+ .describe("Pagination cursor (next_min_id) from a previous response."),
120
+ sort_order: z.enum(["popular", "newest"]).default("popular")
121
+ .describe("Comment sort order."),
122
+ }, async (params) => {
123
+ try {
124
+ const data = await getClient().post("/api/v1/instagram/post/comments", params);
125
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
126
+ }
127
+ catch (err) {
128
+ return handleApiError(err);
129
+ }
130
+ });
131
+ server.tool("get_instagram_comment_replies", `Get replies to a specific Instagram comment as JSON. Requires the post's media_id and the parent comment_id (the pk from get_instagram_post_comments). Use data.next_min_child_cursor as the next cursor.`, {
132
+ media_id: z.string()
133
+ .describe("Numeric media ID of the post."),
134
+ comment_id: z.string()
135
+ .describe("Parent comment ID (pk) from the get_instagram_post_comments response."),
136
+ cursor: z.string().optional()
137
+ .describe("Pagination cursor (next_min_child_cursor) from a previous response."),
138
+ }, async (params) => {
139
+ try {
140
+ const data = await getClient().post("/api/v1/instagram/post/comments/replies", params);
141
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
142
+ }
143
+ catch (err) {
144
+ return handleApiError(err);
145
+ }
146
+ });
147
+ server.tool("search_instagram_users", `Search Instagram users by keyword as JSON. Each result includes user ID, username, full name, verified flag, and follower count. Pass the rank_token from a previous response as the cursor for the next page.`, {
148
+ keyword: z.string().min(1).max(500)
149
+ .describe("Search query."),
150
+ cursor: z.string().optional()
151
+ .describe("Rank token from a previous response for pagination."),
152
+ }, async (params) => {
153
+ try {
154
+ const data = await getClient().post("/api/v1/instagram/search/users", params);
155
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
156
+ }
157
+ catch (err) {
158
+ return handleApiError(err);
159
+ }
160
+ });
161
+ server.tool("search_instagram_hashtags", `Search Instagram hashtags by keyword as JSON. Each result includes the hashtag name, ID, and media count. Pass the rank_token from a previous response as the cursor for the next page.`, {
162
+ keyword: z.string().min(1).max(500)
163
+ .describe("Search query."),
164
+ cursor: z.string().optional()
165
+ .describe("Rank token from a previous response for pagination."),
166
+ }, async (params) => {
167
+ try {
168
+ const data = await getClient().post("/api/v1/instagram/search/hashtags", params);
169
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
170
+ }
171
+ catch (err) {
172
+ return handleApiError(err);
173
+ }
174
+ });
175
+ server.tool("get_instagram_user_followers", `Get an Instagram user's follower list as JSON. Each follower includes user ID, username, full name, and verified flag. Provide username or user_id. Use data.next_max_id as the next cursor; stop when it is absent.`, {
176
+ username: z.string().optional()
177
+ .describe("Instagram handle without the @ symbol."),
178
+ user_id: z.string().optional()
179
+ .describe("Numeric Instagram user ID."),
180
+ count: z.number().int().min(1).max(100).default(12)
181
+ .describe("Number of users per page (1-100)."),
182
+ cursor: z.string().optional()
183
+ .describe("Pagination cursor (next_max_id) from a previous response."),
184
+ }, async (params) => {
185
+ try {
186
+ const data = await getClient().post("/api/v1/instagram/user/followers", params);
187
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
188
+ }
189
+ catch (err) {
190
+ return handleApiError(err);
191
+ }
192
+ });
193
+ server.tool("get_instagram_user_followings", `Get the list of accounts an Instagram user follows as JSON. Each entry includes user ID, username, full name, and verified flag. Provide username or user_id. Use data.next_max_id as the next cursor; stop when it is absent.`, {
194
+ username: z.string().optional()
195
+ .describe("Instagram handle without the @ symbol."),
196
+ user_id: z.string().optional()
197
+ .describe("Numeric Instagram user ID."),
198
+ count: z.number().int().min(1).max(100).default(12)
199
+ .describe("Number of users per page (1-100)."),
200
+ cursor: z.string().optional()
201
+ .describe("Pagination cursor (next_max_id) from a previous response."),
202
+ }, async (params) => {
203
+ try {
204
+ const data = await getClient().post("/api/v1/instagram/user/followings", params);
205
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
206
+ }
207
+ catch (err) {
208
+ return handleApiError(err);
209
+ }
210
+ });
211
+ }
212
+ //# sourceMappingURL=instagram.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instagram.js","sourceRoot":"","sources":["../../src/tools/instagram.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@scavio/mcp-server",
3
- "version": "0.1.2",
3
+ "version": "0.2.0",
4
4
  "mcpName": "io.github.scavio-ai/scavio-mcp",
5
- "description": "MCP server connecting AI agents to Google, YouTube, Amazon, Walmart, TikTok, and Reddit. 21 tools for web search, product lookup, video discovery, and social media analysis.",
5
+ "description": "MCP server connecting AI agents to Google, YouTube, Amazon, Walmart, TikTok, Instagram, and Reddit. 33 tools for web search, product lookup, video discovery, and social media analysis.",
6
6
  "type": "module",
7
7
  "license": "MIT",
8
8
  "author": "Scavio",