meta-ads-mcp 0.4.4__tar.gz → 0.4.5__tar.gz
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.
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/PKG-INFO +4 -2
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/README.md +3 -1
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/STREAMABLE_HTTP_SETUP.md +13 -13
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/__init__.py +1 -1
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/auth.py +3 -1
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/pyproject.toml +1 -1
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/.github/workflows/publish.yml +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/.github/workflows/test.yml +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/.gitignore +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/CUSTOM_META_APP.md +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/Dockerfile +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/LICENSE +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/LOCAL_INSTALLATION.md +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/META_API_NOTES.md +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/RELEASE.md +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/examples/README.md +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/examples/example_http_client.py +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/future_improvements.md +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/images/meta-ads-example.png +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_auth.sh +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/__main__.py +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/__init__.py +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/accounts.py +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/ads.py +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/ads_library.py +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/adsets.py +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/api.py +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/authentication.py +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/budget_schedules.py +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/callback_server.py +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/campaigns.py +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/duplication.py +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/http_auth_integration.py +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/insights.py +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/pipeboard_auth.py +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/reports.py +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/resources.py +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/server.py +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/utils.py +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/requirements.txt +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/setup.py +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/smithery.yaml +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/tests/README.md +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/tests/README_REGRESSION_TESTS.md +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/tests/__init__.py +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/tests/conftest.py +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/tests/test_duplication.py +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/tests/test_duplication_regression.py +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/tests/test_http_transport.py +0 -0
- {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/tests/test_openai.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: meta-ads-mcp
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.5
|
|
4
4
|
Summary: Model Context Protocol (MCP) plugin for interacting with Meta Ads API
|
|
5
5
|
Project-URL: Homepage, https://github.com/pipeboard-co/meta-ads-mcp
|
|
6
6
|
Project-URL: Bug Tracker, https://github.com/pipeboard-co/meta-ads-mcp/issues
|
|
@@ -49,7 +49,7 @@ A [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server for in
|
|
|
49
49
|
|
|
50
50
|
## Getting started with Remote MCP (Recommended)
|
|
51
51
|
|
|
52
|
-
The fastest and most reliable way to get started is to **[🚀 Get started with our Meta Ads Remote MCP](https://pipeboard.co)**. No technical setup required - just connect and start analyzing your ad campaigns with AI!
|
|
52
|
+
The fastest and most reliable way to get started is to **[🚀 Get started with our Meta Ads Remote MCP](https://pipeboard.co)**. Our cloud service uses streamable HTTP transport for reliable, scalable access to Meta Ads data. No technical setup required - just connect and start analyzing your ad campaigns with AI!
|
|
53
53
|
|
|
54
54
|
### For Claude Pro/Max Users
|
|
55
55
|
|
|
@@ -88,6 +88,8 @@ Use the Remote MCP URL: `https://mcp.pipeboard.co/meta-ads-mcp`
|
|
|
88
88
|
|
|
89
89
|
If you're a developer or need to customize the installation, you can run Meta Ads MCP locally. **Most marketers should use the Remote MCP above instead!** For complete technical setup instructions, see our **[Local Installation Guide](LOCAL_INSTALLATION.md)**.
|
|
90
90
|
|
|
91
|
+
Meta Ads MCP also supports **streamable HTTP transport**, allowing you to run it as a standalone HTTP API for web applications and custom integrations. See **[Streamable HTTP Setup Guide](STREAMABLE_HTTP_SETUP.md)** for complete instructions.
|
|
92
|
+
|
|
91
93
|
### Quick Local Setup
|
|
92
94
|
|
|
93
95
|
```bash
|
|
@@ -24,7 +24,7 @@ A [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server for in
|
|
|
24
24
|
|
|
25
25
|
## Getting started with Remote MCP (Recommended)
|
|
26
26
|
|
|
27
|
-
The fastest and most reliable way to get started is to **[🚀 Get started with our Meta Ads Remote MCP](https://pipeboard.co)**. No technical setup required - just connect and start analyzing your ad campaigns with AI!
|
|
27
|
+
The fastest and most reliable way to get started is to **[🚀 Get started with our Meta Ads Remote MCP](https://pipeboard.co)**. Our cloud service uses streamable HTTP transport for reliable, scalable access to Meta Ads data. No technical setup required - just connect and start analyzing your ad campaigns with AI!
|
|
28
28
|
|
|
29
29
|
### For Claude Pro/Max Users
|
|
30
30
|
|
|
@@ -63,6 +63,8 @@ Use the Remote MCP URL: `https://mcp.pipeboard.co/meta-ads-mcp`
|
|
|
63
63
|
|
|
64
64
|
If you're a developer or need to customize the installation, you can run Meta Ads MCP locally. **Most marketers should use the Remote MCP above instead!** For complete technical setup instructions, see our **[Local Installation Guide](LOCAL_INSTALLATION.md)**.
|
|
65
65
|
|
|
66
|
+
Meta Ads MCP also supports **streamable HTTP transport**, allowing you to run it as a standalone HTTP API for web applications and custom integrations. See **[Streamable HTTP Setup Guide](STREAMABLE_HTTP_SETUP.md)** for complete instructions.
|
|
67
|
+
|
|
66
68
|
### Quick Local Setup
|
|
67
69
|
|
|
68
70
|
```bash
|
|
@@ -26,10 +26,10 @@ export PIPEBOARD_API_TOKEN=your_pipeboard_token
|
|
|
26
26
|
|
|
27
27
|
### 3. Make HTTP Requests
|
|
28
28
|
|
|
29
|
-
The server accepts JSON-RPC 2.0 requests at the `/mcp
|
|
29
|
+
The server accepts JSON-RPC 2.0 requests at the `/mcp` endpoint. Use the `Authorization` header to provide your token.
|
|
30
30
|
|
|
31
31
|
```bash
|
|
32
|
-
curl -X POST http://localhost:8080/mcp
|
|
32
|
+
curl -X POST http://localhost:8080/mcp \
|
|
33
33
|
-H "Content-Type: application/json" \
|
|
34
34
|
-H "Accept: application/json, text/event-stream" \
|
|
35
35
|
-H "Authorization: Bearer your_pipeboard_token" \
|
|
@@ -77,7 +77,7 @@ python -m meta_ads_mcp --transport streamable-http --port 9000
|
|
|
77
77
|
|
|
78
78
|
```bash
|
|
79
79
|
curl -H "Authorization: Bearer your_pipeboard_token" \
|
|
80
|
-
-X POST http://localhost:8080/mcp
|
|
80
|
+
-X POST http://localhost:8080/mcp \
|
|
81
81
|
-H "Content-Type: application/json" \
|
|
82
82
|
-H "Accept: application/json, text/event-stream" \
|
|
83
83
|
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'
|
|
@@ -89,7 +89,7 @@ If you have a Meta Developer App, you can use a direct access token via the `X-M
|
|
|
89
89
|
|
|
90
90
|
```bash
|
|
91
91
|
curl -H "X-META-ACCESS-TOKEN: your_meta_access_token" \
|
|
92
|
-
-X POST http://localhost:8080/mcp
|
|
92
|
+
-X POST http://localhost:8080/mcp \
|
|
93
93
|
-H "Content-Type: application/json" \
|
|
94
94
|
-H "Accept: application/json, text/event-stream" \
|
|
95
95
|
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'
|
|
@@ -100,7 +100,7 @@ curl -H "X-META-ACCESS-TOKEN: your_meta_access_token" \
|
|
|
100
100
|
### Server URL Structure
|
|
101
101
|
|
|
102
102
|
**Base URL**: `http://localhost:8080`
|
|
103
|
-
**MCP Endpoint**: `/mcp
|
|
103
|
+
**MCP Endpoint**: `/mcp`
|
|
104
104
|
|
|
105
105
|
### MCP Protocol Methods
|
|
106
106
|
|
|
@@ -129,7 +129,7 @@ All responses follow JSON-RPC 2.0 format:
|
|
|
129
129
|
### 1. Initialize Session
|
|
130
130
|
|
|
131
131
|
```bash
|
|
132
|
-
curl -X POST http://localhost:8080/mcp
|
|
132
|
+
curl -X POST http://localhost:8080/mcp \
|
|
133
133
|
-H "Content-Type: application/json" \
|
|
134
134
|
-H "Accept: application/json, text/event-stream" \
|
|
135
135
|
-H "Authorization: Bearer your_token" \
|
|
@@ -148,7 +148,7 @@ curl -X POST http://localhost:8080/mcp/ \
|
|
|
148
148
|
### 2. List Available Tools
|
|
149
149
|
|
|
150
150
|
```bash
|
|
151
|
-
curl -X POST http://localhost:8080/mcp
|
|
151
|
+
curl -X POST http://localhost:8080/mcp \
|
|
152
152
|
-H "Content-Type: application/json" \
|
|
153
153
|
-H "Accept: application/json, text/event-stream" \
|
|
154
154
|
-H "Authorization: Bearer your_token" \
|
|
@@ -162,7 +162,7 @@ curl -X POST http://localhost:8080/mcp/ \
|
|
|
162
162
|
### 3. Get Ad Accounts
|
|
163
163
|
|
|
164
164
|
```bash
|
|
165
|
-
curl -X POST http://localhost:8080/mcp
|
|
165
|
+
curl -X POST http://localhost:8080/mcp \
|
|
166
166
|
-H "Content-Type: application/json" \
|
|
167
167
|
-H "Accept: application/json, text/event-stream" \
|
|
168
168
|
-H "Authorization: Bearer your_token" \
|
|
@@ -180,7 +180,7 @@ curl -X POST http://localhost:8080/mcp/ \
|
|
|
180
180
|
### 4. Get Campaign Performance
|
|
181
181
|
|
|
182
182
|
```bash
|
|
183
|
-
curl -X POST http://localhost:8080/mcp
|
|
183
|
+
curl -X POST http://localhost:8080/mcp \
|
|
184
184
|
-H "Content-Type: application/json" \
|
|
185
185
|
-H "Accept: application/json, text/event-stream" \
|
|
186
186
|
-H "Authorization: Bearer your_token" \
|
|
@@ -210,7 +210,7 @@ import json
|
|
|
210
210
|
class MetaAdsMCPClient:
|
|
211
211
|
def __init__(self, base_url="http://localhost:8080", token=None):
|
|
212
212
|
self.base_url = base_url
|
|
213
|
-
self.endpoint = f"{base_url}/mcp
|
|
213
|
+
self.endpoint = f"{base_url}/mcp"
|
|
214
214
|
self.headers = {
|
|
215
215
|
"Content-Type": "application/json",
|
|
216
216
|
"Accept": "application/json, text/event-stream"
|
|
@@ -245,7 +245,7 @@ const axios = require('axios');
|
|
|
245
245
|
class MetaAdsMCPClient {
|
|
246
246
|
constructor(baseUrl = 'http://localhost:8080', token = null) {
|
|
247
247
|
this.baseUrl = baseUrl;
|
|
248
|
-
this.endpoint = `${baseUrl}/mcp
|
|
248
|
+
this.endpoint = `${baseUrl}/mcp`;
|
|
249
249
|
this.headers = {
|
|
250
250
|
'Content-Type': 'application/json',
|
|
251
251
|
'Accept': 'application/json, text/event-stream'
|
|
@@ -325,7 +325,7 @@ export META_ACCESS_TOKEN=your_access_token
|
|
|
325
325
|
|
|
326
326
|
1. **Connection Refused**: Ensure the server is running and accessible on the specified port.
|
|
327
327
|
2. **Authentication Failed**: Verify your Bearer token is valid and included in the `Authorization` header.
|
|
328
|
-
3. **404 Not Found**: Make sure you're using the correct endpoint (`/mcp
|
|
328
|
+
3. **404 Not Found**: Make sure you're using the correct endpoint (`/mcp`).
|
|
329
329
|
4. **JSON-RPC Errors**: Check that your request follows the JSON-RPC 2.0 format.
|
|
330
330
|
|
|
331
331
|
### Debug Mode
|
|
@@ -337,7 +337,7 @@ Enable verbose logging by setting the log level in your environment if the appli
|
|
|
337
337
|
Test if the server is running by sending a `tools/list` request:
|
|
338
338
|
|
|
339
339
|
```bash
|
|
340
|
-
curl -X POST http://localhost:8080/mcp
|
|
340
|
+
curl -X POST http://localhost:8080/mcp \
|
|
341
341
|
-H "Content-Type: application/json" \
|
|
342
342
|
-H "Accept: application/json, text/event-stream" \
|
|
343
343
|
-H "Authorization: Bearer your_token" \
|
|
@@ -23,7 +23,9 @@ from .callback_server import (
|
|
|
23
23
|
from .pipeboard_auth import pipeboard_auth_manager
|
|
24
24
|
|
|
25
25
|
# Auth constants
|
|
26
|
-
|
|
26
|
+
# Scope includes pages_show_list and pages_read_engagement to fix issue #16
|
|
27
|
+
# where get_account_pages failed for regular users due to missing page permissions
|
|
28
|
+
AUTH_SCOPE = "ads_management,ads_read,business_management,public_profile,pages_show_list,pages_read_engagement"
|
|
27
29
|
AUTH_REDIRECT_URI = "http://localhost:8888/callback"
|
|
28
30
|
AUTH_RESPONSE_TYPE = "token"
|
|
29
31
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|