@muhammadhamidraza/social-media-mcp-server 1.0.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.
Files changed (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +164 -0
  3. package/dist/config.d.ts +92 -0
  4. package/dist/config.d.ts.map +1 -0
  5. package/dist/config.js +66 -0
  6. package/dist/config.js.map +1 -0
  7. package/dist/index.d.ts +3 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +37 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/platforms/facebook.d.ts +23 -0
  12. package/dist/platforms/facebook.d.ts.map +1 -0
  13. package/dist/platforms/facebook.js +145 -0
  14. package/dist/platforms/facebook.js.map +1 -0
  15. package/dist/platforms/index.d.ts +4 -0
  16. package/dist/platforms/index.d.ts.map +1 -0
  17. package/dist/platforms/index.js +29 -0
  18. package/dist/platforms/index.js.map +1 -0
  19. package/dist/platforms/instagram.d.ts +22 -0
  20. package/dist/platforms/instagram.d.ts.map +1 -0
  21. package/dist/platforms/instagram.js +95 -0
  22. package/dist/platforms/instagram.js.map +1 -0
  23. package/dist/platforms/linkedin.d.ts +27 -0
  24. package/dist/platforms/linkedin.d.ts.map +1 -0
  25. package/dist/platforms/linkedin.js +157 -0
  26. package/dist/platforms/linkedin.js.map +1 -0
  27. package/dist/platforms/platform.d.ts +12 -0
  28. package/dist/platforms/platform.d.ts.map +1 -0
  29. package/dist/platforms/platform.js +2 -0
  30. package/dist/platforms/platform.js.map +1 -0
  31. package/dist/platforms/tiktok.d.ts +22 -0
  32. package/dist/platforms/tiktok.d.ts.map +1 -0
  33. package/dist/platforms/tiktok.js +95 -0
  34. package/dist/platforms/tiktok.js.map +1 -0
  35. package/dist/platforms/twitter.d.ts +23 -0
  36. package/dist/platforms/twitter.d.ts.map +1 -0
  37. package/dist/platforms/twitter.js +156 -0
  38. package/dist/platforms/twitter.js.map +1 -0
  39. package/dist/platforms/youtube.d.ts +23 -0
  40. package/dist/platforms/youtube.d.ts.map +1 -0
  41. package/dist/platforms/youtube.js +177 -0
  42. package/dist/platforms/youtube.js.map +1 -0
  43. package/package.json +49 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Social Media MCP Server
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,164 @@
1
+ # Social Media MCP Server
2
+
3
+ A universal MCP (Model Context Protocol) server that provides access to 6 social media platforms: YouTube, LinkedIn, Facebook, Instagram, TikTok, and Twitter/X. This server dynamically exposes tools based on the API keys you provide.
4
+
5
+ ## Features
6
+
7
+ - **Dynamic Tool Registration**: Only shows tools for platforms with configured API keys
8
+ - **Comprehensive API Coverage**: Access to all major endpoints for each platform
9
+ - **Secure**: API keys are never stored or logged, only used in memory
10
+ - **Easy Distribution**: Run via npx without installation
11
+ - **MCP Compliant**: Works with Claude Desktop, Claude Code, and other MCP clients
12
+
13
+ ## Supported Platforms
14
+
15
+ | Platform | Status | Authentication |
16
+ |----------|--------|----------------|
17
+ | YouTube | ✅ Implemented | API Key |
18
+ | LinkedIn | ✅ Implemented | OAuth 2.0 |
19
+ | Facebook | ✅ Implemented | Access Token |
20
+ | Instagram | ✅ Implemented | Access Token |
21
+ | TikTok | ✅ Implemented | Access Token |
22
+ | Twitter/X | ✅ Implemented | Bearer Token |
23
+
24
+ ## Quick Start
25
+
26
+ ### 1. Get API Keys
27
+
28
+ You need to obtain API keys for the platforms you want to use:
29
+
30
+ #### YouTube
31
+ 1. Go to [Google Cloud Console](https://console.cloud.google.com/)
32
+ 2. Create a new project
33
+ 3. Enable YouTube Data API v3
34
+ 4. Create credentials (API Key)
35
+
36
+ #### Other Platforms
37
+ - **LinkedIn**: [LinkedIn Developer Portal](https://developer.linkedin.com/)
38
+ - **Facebook/Instagram**: [Meta for Developers](https://developers.facebook.com/)
39
+ - **TikTok**: [TikTok for Developers](https://developers.tiktok.com/)
40
+ - **Twitter/X**: [Twitter Developer Portal](https://developer.twitter.com/)
41
+
42
+ ### 2. Configure Claude
43
+
44
+ Add to your Claude Desktop configuration (`claude_desktop_config.json`):
45
+
46
+ ```json
47
+ {
48
+ "mcpServers": {
49
+ "social-media": {
50
+ "command": "npx",
51
+ "args": ["-y", "social-media-mcp-server"],
52
+ "env": {
53
+ "YOUTUBE_API_KEY": "your_youtube_api_key_here",
54
+ "LINKEDIN_CLIENT_ID": "your_linkedin_client_id",
55
+ "LINKEDIN_CLIENT_SECRET": "your_linkedin_client_secret",
56
+ "FACEBOOK_ACCESS_TOKEN": "your_facebook_token",
57
+ "INSTAGRAM_ACCESS_TOKEN": "your_instagram_token",
58
+ "TIKTOK_ACCESS_TOKEN": "your_tiktok_token",
59
+ "TWITTER_BEARER_TOKEN": "your_twitter_bearer_token"
60
+ }
61
+ }
62
+ }
63
+ }
64
+ ```
65
+
66
+ ### 3. Start Using
67
+
68
+ Once configured, Claude will automatically discover available tools. Only tools for platforms with valid API keys will be shown.
69
+
70
+ ## Available Tools
71
+
72
+ ### YouTube
73
+
74
+ - `youtube_search` - Search for videos
75
+ - `youtube_get_video` - Get video details
76
+ - `youtube_get_comments` - Get video comments
77
+
78
+ ### LinkedIn
79
+
80
+ - `linkedin_post` - Create a post
81
+ - `linkedin_get_profile` - Get profile information
82
+
83
+ ### Facebook
84
+
85
+ - `facebook_post` - Create a page post
86
+ - `facebook_get_page` - Get page information
87
+ - `facebook_get_insights` - Get page analytics
88
+
89
+ ### Instagram
90
+
91
+ - `instagram_get_media` - Get media/posts
92
+ - `instagram_get_insights` - Get account insights
93
+
94
+ ### TikTok
95
+
96
+ - `tiktok_get_user_info` - Get user information
97
+ - `tiktok_get_videos` - Get user videos
98
+
99
+ ### Twitter/X
100
+
101
+ - `twitter_post` - Create a tweet (requires paid API access)
102
+ - `twitter_get_user` - Get user information
103
+ - `twitter_search` - Search tweets (requires paid API access)
104
+
105
+ ## Security
106
+
107
+ - **No Persistent Storage**: API keys are only held in memory during execution
108
+ - **No Logging**: Keys are never logged or written to disk
109
+ - **Environment-Based**: Keys are passed via environment variables
110
+ - **Validation**: Keys are validated before tool registration
111
+
112
+ ## Development
113
+
114
+ ### Prerequisites
115
+
116
+ - Node.js 18+
117
+ - npm or yarn
118
+
119
+ ### Setup
120
+
121
+ ```bash
122
+ git clone https://github.com/yourusername/social-media-mcp-server.git
123
+ cd social-media-mcp-server
124
+ npm install
125
+ ```
126
+
127
+ ### Build
128
+
129
+ ```bash
130
+ npm run build
131
+ ```
132
+
133
+ ### Development Mode
134
+
135
+ ```bash
136
+ npm run dev
137
+ ```
138
+
139
+ ### Testing
140
+
141
+ ```bash
142
+ npm test
143
+ ```
144
+
145
+ ## Architecture
146
+
147
+ This project follows the architecture decision records (ADRs) documented in the `history/adr/` directory:
148
+
149
+ 1. **ADR-0001**: Technology Stack (TypeScript/Node.js)
150
+ 2. **ADR-0002**: Authentication Strategy (Environment-based)
151
+ 3. **ADR-0003**: Dynamic Tool Registration
152
+ 4. **ADR-0004**: npx Distribution Model
153
+
154
+ ## Contributing
155
+
156
+ Contributions are welcome! Please see our contributing guidelines for details.
157
+
158
+ ## License
159
+
160
+ MIT License - see LICENSE file for details.
161
+
162
+ ## Support
163
+
164
+ For issues and feature requests, please use the GitHub issue tracker.
@@ -0,0 +1,92 @@
1
+ import { z } from "zod";
2
+ export declare const ConfigSchema: z.ZodObject<{
3
+ youtube: z.ZodOptional<z.ZodObject<{
4
+ apiKey: z.ZodString;
5
+ }, "strip", z.ZodTypeAny, {
6
+ apiKey: string;
7
+ }, {
8
+ apiKey: string;
9
+ }>>;
10
+ linkedin: z.ZodOptional<z.ZodObject<{
11
+ clientId: z.ZodString;
12
+ clientSecret: z.ZodString;
13
+ }, "strip", z.ZodTypeAny, {
14
+ clientId: string;
15
+ clientSecret: string;
16
+ }, {
17
+ clientId: string;
18
+ clientSecret: string;
19
+ }>>;
20
+ facebook: z.ZodOptional<z.ZodObject<{
21
+ accessToken: z.ZodString;
22
+ }, "strip", z.ZodTypeAny, {
23
+ accessToken: string;
24
+ }, {
25
+ accessToken: string;
26
+ }>>;
27
+ instagram: z.ZodOptional<z.ZodObject<{
28
+ accessToken: z.ZodString;
29
+ }, "strip", z.ZodTypeAny, {
30
+ accessToken: string;
31
+ }, {
32
+ accessToken: string;
33
+ }>>;
34
+ tiktok: z.ZodOptional<z.ZodObject<{
35
+ accessToken: z.ZodString;
36
+ }, "strip", z.ZodTypeAny, {
37
+ accessToken: string;
38
+ }, {
39
+ accessToken: string;
40
+ }>>;
41
+ twitter: z.ZodOptional<z.ZodObject<{
42
+ bearerToken: z.ZodString;
43
+ }, "strip", z.ZodTypeAny, {
44
+ bearerToken: string;
45
+ }, {
46
+ bearerToken: string;
47
+ }>>;
48
+ }, "strip", z.ZodTypeAny, {
49
+ youtube?: {
50
+ apiKey: string;
51
+ } | undefined;
52
+ linkedin?: {
53
+ clientId: string;
54
+ clientSecret: string;
55
+ } | undefined;
56
+ facebook?: {
57
+ accessToken: string;
58
+ } | undefined;
59
+ instagram?: {
60
+ accessToken: string;
61
+ } | undefined;
62
+ tiktok?: {
63
+ accessToken: string;
64
+ } | undefined;
65
+ twitter?: {
66
+ bearerToken: string;
67
+ } | undefined;
68
+ }, {
69
+ youtube?: {
70
+ apiKey: string;
71
+ } | undefined;
72
+ linkedin?: {
73
+ clientId: string;
74
+ clientSecret: string;
75
+ } | undefined;
76
+ facebook?: {
77
+ accessToken: string;
78
+ } | undefined;
79
+ instagram?: {
80
+ accessToken: string;
81
+ } | undefined;
82
+ tiktok?: {
83
+ accessToken: string;
84
+ } | undefined;
85
+ twitter?: {
86
+ bearerToken: string;
87
+ } | undefined;
88
+ }>;
89
+ export type Config = z.infer<typeof ConfigSchema>;
90
+ export declare function loadConfig(): Config;
91
+ export declare function getEnabledPlatforms(config: Config): string[];
92
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA6BxB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOvB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD,wBAAgB,UAAU,IAAI,MAAM,CA4CnC;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAI5D"}
package/dist/config.js ADDED
@@ -0,0 +1,66 @@
1
+ import { z } from "zod";
2
+ const YouTubeConfigSchema = z.object({
3
+ apiKey: z.string().min(1),
4
+ });
5
+ const LinkedInConfigSchema = z.object({
6
+ clientId: z.string().min(1),
7
+ clientSecret: z.string().min(1),
8
+ });
9
+ const FacebookConfigSchema = z.object({
10
+ accessToken: z.string().min(1),
11
+ });
12
+ const InstagramConfigSchema = z.object({
13
+ accessToken: z.string().min(1),
14
+ });
15
+ const TikTokConfigSchema = z.object({
16
+ accessToken: z.string().min(1),
17
+ });
18
+ const TwitterConfigSchema = z.object({
19
+ bearerToken: z.string().min(1),
20
+ });
21
+ export const ConfigSchema = z.object({
22
+ youtube: YouTubeConfigSchema.optional(),
23
+ linkedin: LinkedInConfigSchema.optional(),
24
+ facebook: FacebookConfigSchema.optional(),
25
+ instagram: InstagramConfigSchema.optional(),
26
+ tiktok: TikTokConfigSchema.optional(),
27
+ twitter: TwitterConfigSchema.optional(),
28
+ });
29
+ export function loadConfig() {
30
+ const config = {};
31
+ const youtubeKey = process.env.YOUTUBE_API_KEY;
32
+ if (youtubeKey) {
33
+ config.youtube = { apiKey: youtubeKey };
34
+ }
35
+ const linkedinClientId = process.env.LINKEDIN_CLIENT_ID;
36
+ const linkedinClientSecret = process.env.LINKEDIN_CLIENT_SECRET;
37
+ if (linkedinClientId && linkedinClientSecret) {
38
+ config.linkedin = {
39
+ clientId: linkedinClientId,
40
+ clientSecret: linkedinClientSecret,
41
+ };
42
+ }
43
+ const facebookToken = process.env.FACEBOOK_ACCESS_TOKEN;
44
+ if (facebookToken) {
45
+ config.facebook = { accessToken: facebookToken };
46
+ }
47
+ const instagramToken = process.env.INSTAGRAM_ACCESS_TOKEN;
48
+ if (instagramToken) {
49
+ config.instagram = { accessToken: instagramToken };
50
+ }
51
+ const tiktokToken = process.env.TIKTOK_ACCESS_TOKEN;
52
+ if (tiktokToken) {
53
+ config.tiktok = { accessToken: tiktokToken };
54
+ }
55
+ const twitterToken = process.env.TWITTER_BEARER_TOKEN;
56
+ if (twitterToken) {
57
+ config.twitter = { bearerToken: twitterToken };
58
+ }
59
+ return config;
60
+ }
61
+ export function getEnabledPlatforms(config) {
62
+ return Object.entries(config)
63
+ .filter(([_, value]) => value !== undefined)
64
+ .map(([key]) => key);
65
+ }
66
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env node
2
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
3
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
5
+ import { loadConfig } from "./config.js";
6
+ import { getAvailablePlatforms } from "./platforms/index.js";
7
+ async function main() {
8
+ const config = loadConfig();
9
+ const platforms = getAvailablePlatforms(config);
10
+ const server = new Server({
11
+ name: "social-media-mcp-server",
12
+ version: "1.0.0",
13
+ }, {
14
+ capabilities: {
15
+ tools: {},
16
+ },
17
+ });
18
+ const allTools = platforms.flatMap(platform => platform.getTools());
19
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
20
+ return {
21
+ tools: allTools,
22
+ };
23
+ });
24
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
25
+ const { name, arguments: args } = request.params;
26
+ const platform = platforms.find(p => p.getTools().some(tool => tool.name === name));
27
+ if (!platform) {
28
+ throw new Error(`Tool "${name}" not found. Make sure the corresponding platform API key is configured.`);
29
+ }
30
+ return await platform.executeTool(name, args);
31
+ });
32
+ const transport = new StdioServerTransport();
33
+ await server.connect(transport);
34
+ console.error("Social Media MCP Server running on stdio");
35
+ }
36
+ main().catch(console.error);
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,SAAS,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAEhD,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;QACE,IAAI,EAAE,yBAAyB;QAC/B,OAAO,EAAE,OAAO;KACjB,EACD;QACE,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE;SACV;KACF,CACF,CAAC;IAGF,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEpE,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QAC1D,OAAO;YACL,KAAK,EAAE,QAAQ;SAChB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QAGjD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAClC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAC9C,CAAC;QAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,0EAA0E,CAAC,CAAC;QAC3G,CAAC;QAED,OAAO,MAAM,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;AAC5D,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { Tool } from "@modelcontextprotocol/sdk/types.js";
2
+ import { Platform } from "./platform.js";
3
+ interface FacebookConfig {
4
+ accessToken: string;
5
+ }
6
+ export declare class FacebookPlatform implements Platform {
7
+ name: string;
8
+ private accessToken;
9
+ private baseUrl;
10
+ constructor(config: FacebookConfig);
11
+ getTools(): Tool[];
12
+ executeTool(name: string, args: unknown): Promise<{
13
+ content: Array<{
14
+ type: string;
15
+ text: string;
16
+ }>;
17
+ }>;
18
+ private createPost;
19
+ private getPage;
20
+ private getInsights;
21
+ }
22
+ export {};
23
+ //# sourceMappingURL=facebook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"facebook.d.ts","sourceRoot":"","sources":["../../src/platforms/facebook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,UAAU,cAAc;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,gBAAiB,YAAW,QAAQ;IAC/C,IAAI,SAAc;IAClB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAsC;gBAEzC,MAAM,EAAE,cAAc;IAIlC,QAAQ,IAAI,IAAI,EAAE;IA2DZ,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;QACtD,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAChD,CAAC;YAaY,UAAU;YA4BV,OAAO;YAyBP,WAAW;CAwB1B"}
@@ -0,0 +1,145 @@
1
+ export class FacebookPlatform {
2
+ name = "facebook";
3
+ accessToken;
4
+ baseUrl = "https://graph.facebook.com/v18.0";
5
+ constructor(config) {
6
+ this.accessToken = config.accessToken;
7
+ }
8
+ getTools() {
9
+ return [
10
+ {
11
+ name: "facebook_post",
12
+ description: "Create a post on Facebook page",
13
+ inputSchema: {
14
+ type: "object",
15
+ properties: {
16
+ pageId: {
17
+ type: "string",
18
+ description: "Facebook Page ID"
19
+ },
20
+ message: {
21
+ type: "string",
22
+ description: "Post message content"
23
+ },
24
+ link: {
25
+ type: "string",
26
+ description: "Optional link to include"
27
+ }
28
+ },
29
+ required: ["pageId", "message"]
30
+ }
31
+ },
32
+ {
33
+ name: "facebook_get_page",
34
+ description: "Get Facebook page information",
35
+ inputSchema: {
36
+ type: "object",
37
+ properties: {
38
+ pageId: {
39
+ type: "string",
40
+ description: "Facebook Page ID"
41
+ }
42
+ },
43
+ required: ["pageId"]
44
+ }
45
+ },
46
+ {
47
+ name: "facebook_get_insights",
48
+ description: "Get Facebook page insights",
49
+ inputSchema: {
50
+ type: "object",
51
+ properties: {
52
+ pageId: {
53
+ type: "string",
54
+ description: "Facebook Page ID"
55
+ },
56
+ metric: {
57
+ type: "string",
58
+ description: "Insight metric (page_impressions, page_engaged_users, etc.)"
59
+ }
60
+ },
61
+ required: ["pageId", "metric"]
62
+ }
63
+ }
64
+ ];
65
+ }
66
+ async executeTool(name, args) {
67
+ switch (name) {
68
+ case "facebook_post":
69
+ return this.createPost(args);
70
+ case "facebook_get_page":
71
+ return this.getPage(args);
72
+ case "facebook_get_insights":
73
+ return this.getInsights(args);
74
+ default:
75
+ throw new Error(`Unknown tool: ${name}`);
76
+ }
77
+ }
78
+ async createPost(args) {
79
+ const url = new URL(`${this.baseUrl}/${args.pageId}/feed`);
80
+ url.searchParams.append("access_token", this.accessToken);
81
+ url.searchParams.append("message", args.message);
82
+ if (args.link) {
83
+ url.searchParams.append("link", args.link);
84
+ }
85
+ try {
86
+ const response = await fetch(url.toString(), { method: "POST" });
87
+ if (!response.ok) {
88
+ throw new Error(`Facebook API error: ${response.status} ${response.statusText}`);
89
+ }
90
+ const data = await response.json();
91
+ return {
92
+ content: [{
93
+ type: "text",
94
+ text: `Post created successfully! Post ID: ${data.id}`
95
+ }]
96
+ };
97
+ }
98
+ catch (error) {
99
+ throw new Error(`Failed to create Facebook post: ${error}`);
100
+ }
101
+ }
102
+ async getPage(args) {
103
+ const url = new URL(`${this.baseUrl}/${args.pageId}`);
104
+ url.searchParams.append("access_token", this.accessToken);
105
+ url.searchParams.append("fields", "name,about,fan_count,link,category");
106
+ try {
107
+ const response = await fetch(url.toString());
108
+ if (!response.ok) {
109
+ throw new Error(`Facebook API error: ${response.status} ${response.statusText}`);
110
+ }
111
+ const data = await response.json();
112
+ return {
113
+ content: [{
114
+ type: "text",
115
+ text: JSON.stringify(data, null, 2)
116
+ }]
117
+ };
118
+ }
119
+ catch (error) {
120
+ throw new Error(`Failed to get Facebook page: ${error}`);
121
+ }
122
+ }
123
+ async getInsights(args) {
124
+ const url = new URL(`${this.baseUrl}/${args.pageId}/insights`);
125
+ url.searchParams.append("access_token", this.accessToken);
126
+ url.searchParams.append("metric", args.metric);
127
+ try {
128
+ const response = await fetch(url.toString());
129
+ if (!response.ok) {
130
+ throw new Error(`Facebook API error: ${response.status} ${response.statusText}`);
131
+ }
132
+ const data = await response.json();
133
+ return {
134
+ content: [{
135
+ type: "text",
136
+ text: JSON.stringify(data, null, 2)
137
+ }]
138
+ };
139
+ }
140
+ catch (error) {
141
+ throw new Error(`Failed to get Facebook insights: ${error}`);
142
+ }
143
+ }
144
+ }
145
+ //# sourceMappingURL=facebook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"facebook.js","sourceRoot":"","sources":["../../src/platforms/facebook.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Config } from "../config.js";
2
+ import { Platform } from "./platform.js";
3
+ export declare function getAvailablePlatforms(config: Config): Platform[];
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/platforms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAQzC,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE,CA4BhE"}
@@ -0,0 +1,29 @@
1
+ import { YouTubePlatform } from "./youtube.js";
2
+ import { LinkedInPlatform } from "./linkedin.js";
3
+ import { FacebookPlatform } from "./facebook.js";
4
+ import { InstagramPlatform } from "./instagram.js";
5
+ import { TikTokPlatform } from "./tiktok.js";
6
+ import { TwitterPlatform } from "./twitter.js";
7
+ export function getAvailablePlatforms(config) {
8
+ const platforms = [];
9
+ if (config.youtube) {
10
+ platforms.push(new YouTubePlatform(config.youtube));
11
+ }
12
+ if (config.linkedin) {
13
+ platforms.push(new LinkedInPlatform(config.linkedin));
14
+ }
15
+ if (config.facebook) {
16
+ platforms.push(new FacebookPlatform(config.facebook));
17
+ }
18
+ if (config.instagram) {
19
+ platforms.push(new InstagramPlatform(config.instagram));
20
+ }
21
+ if (config.tiktok) {
22
+ platforms.push(new TikTokPlatform(config.tiktok));
23
+ }
24
+ if (config.twitter) {
25
+ platforms.push(new TwitterPlatform(config.twitter));
26
+ }
27
+ return platforms;
28
+ }
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/platforms/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,MAAM,SAAS,GAAe,EAAE,CAAC;IAEjC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,SAAS,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,SAAS,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,SAAS,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,SAAS,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,SAAS,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,SAAS,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { Tool } from "@modelcontextprotocol/sdk/types.js";
2
+ import { Platform } from "./platform.js";
3
+ interface InstagramConfig {
4
+ accessToken: string;
5
+ }
6
+ export declare class InstagramPlatform implements Platform {
7
+ name: string;
8
+ private accessToken;
9
+ private baseUrl;
10
+ constructor(config: InstagramConfig);
11
+ getTools(): Tool[];
12
+ executeTool(name: string, args: unknown): Promise<{
13
+ content: Array<{
14
+ type: string;
15
+ text: string;
16
+ }>;
17
+ }>;
18
+ private getMedia;
19
+ private getInsights;
20
+ }
21
+ export {};
22
+ //# sourceMappingURL=instagram.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instagram.d.ts","sourceRoot":"","sources":["../../src/platforms/instagram.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,UAAU,eAAe;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,iBAAkB,YAAW,QAAQ;IAChD,IAAI,SAAe;IACnB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAoC;gBAEvC,MAAM,EAAE,eAAe;IAInC,QAAQ,IAAI,IAAI,EAAE;IAiCZ,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;QACtD,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAChD,CAAC;YAWY,QAAQ;YA2BR,WAAW;CAwB1B"}