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.
Files changed (50) hide show
  1. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/PKG-INFO +4 -2
  2. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/README.md +3 -1
  3. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/STREAMABLE_HTTP_SETUP.md +13 -13
  4. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/__init__.py +1 -1
  5. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/auth.py +3 -1
  6. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/pyproject.toml +1 -1
  7. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/.github/workflows/publish.yml +0 -0
  8. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/.github/workflows/test.yml +0 -0
  9. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/.gitignore +0 -0
  10. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/CUSTOM_META_APP.md +0 -0
  11. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/Dockerfile +0 -0
  12. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/LICENSE +0 -0
  13. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/LOCAL_INSTALLATION.md +0 -0
  14. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/META_API_NOTES.md +0 -0
  15. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/RELEASE.md +0 -0
  16. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/examples/README.md +0 -0
  17. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/examples/example_http_client.py +0 -0
  18. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/future_improvements.md +0 -0
  19. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/images/meta-ads-example.png +0 -0
  20. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_auth.sh +0 -0
  21. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/__main__.py +0 -0
  22. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/__init__.py +0 -0
  23. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/accounts.py +0 -0
  24. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/ads.py +0 -0
  25. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/ads_library.py +0 -0
  26. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/adsets.py +0 -0
  27. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/api.py +0 -0
  28. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/authentication.py +0 -0
  29. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/budget_schedules.py +0 -0
  30. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/callback_server.py +0 -0
  31. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/campaigns.py +0 -0
  32. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/duplication.py +0 -0
  33. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/http_auth_integration.py +0 -0
  34. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/insights.py +0 -0
  35. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/pipeboard_auth.py +0 -0
  36. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/reports.py +0 -0
  37. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/resources.py +0 -0
  38. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/server.py +0 -0
  39. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/meta_ads_mcp/core/utils.py +0 -0
  40. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/requirements.txt +0 -0
  41. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/setup.py +0 -0
  42. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/smithery.yaml +0 -0
  43. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/tests/README.md +0 -0
  44. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/tests/README_REGRESSION_TESTS.md +0 -0
  45. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/tests/__init__.py +0 -0
  46. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/tests/conftest.py +0 -0
  47. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/tests/test_duplication.py +0 -0
  48. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/tests/test_duplication_regression.py +0 -0
  49. {meta_ads_mcp-0.4.4 → meta_ads_mcp-0.4.5}/tests/test_http_transport.py +0 -0
  50. {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.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/` endpoint. Use the `Authorization` header to provide your token.
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" \
@@ -7,7 +7,7 @@ with the Claude LLM.
7
7
 
8
8
  from meta_ads_mcp.core.server import main
9
9
 
10
- __version__ = "0.4.4"
10
+ __version__ = "0.4.5"
11
11
 
12
12
  __all__ = [
13
13
  'get_ad_accounts',
@@ -23,7 +23,9 @@ from .callback_server import (
23
23
  from .pipeboard_auth import pipeboard_auth_manager
24
24
 
25
25
  # Auth constants
26
- AUTH_SCOPE = "ads_management,ads_read,business_management,public_profile"
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
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "meta-ads-mcp"
7
- version = "0.4.4"
7
+ version = "0.4.5"
8
8
  description = "Model Context Protocol (MCP) plugin for interacting with Meta Ads API"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes