@scavio/mcp-server 0.1.3 → 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 +18 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/instagram.d.ts +3 -0
- package/dist/tools/instagram.js +212 -0
- package/dist/tools/instagram.js.map +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|

|
|
4
4
|

|
|
5
5
|
|
|
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, and Reddit.
|
|
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
|
|
|
@@ -233,6 +233,23 @@ 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
|
+
### [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
|
+
|
|
236
253
|
### [Reddit API](https://scavio.dev/docs/reddit-api)
|
|
237
254
|
|
|
238
255
|
| Tool | Description |
|
package/dist/tools/index.js
CHANGED
|
@@ -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
|
}
|
package/dist/tools/index.js.map
CHANGED
|
@@ -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,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.
|
|
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.
|
|
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",
|