meta-ads-mcp 1.0.12__tar.gz → 1.0.13__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.

Potentially problematic release.


This version of meta-ads-mcp might be problematic. Click here for more details.

Files changed (83) hide show
  1. meta_ads_mcp-1.0.13/.github/workflows/publish-mcp.yml +32 -0
  2. meta_ads_mcp-1.0.13/.github/workflows/publish.yml +114 -0
  3. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/PKG-INFO +1 -1
  4. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/__init__.py +1 -1
  5. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/pyproject.toml +1 -1
  6. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/server.json +2 -2
  7. meta_ads_mcp-1.0.12/.github/workflows/publish-mcp.yml +0 -70
  8. meta_ads_mcp-1.0.12/.github/workflows/publish.yml +0 -39
  9. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/.github/workflows/test.yml +0 -0
  10. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/.gitignore +0 -0
  11. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/CUSTOM_META_APP.md +0 -0
  12. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/Dockerfile +0 -0
  13. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/LICENSE +0 -0
  14. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/LOCAL_INSTALLATION.md +0 -0
  15. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/META_API_NOTES.md +0 -0
  16. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/README.md +0 -0
  17. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/RELEASE.md +0 -0
  18. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/STREAMABLE_HTTP_SETUP.md +0 -0
  19. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/examples/README.md +0 -0
  20. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/examples/example_http_client.py +0 -0
  21. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/future_improvements.md +0 -0
  22. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/images/meta-ads-example.png +0 -0
  23. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_auth.sh +0 -0
  24. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/__main__.py +0 -0
  25. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/__init__.py +0 -0
  26. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/accounts.py +0 -0
  27. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/ads.py +0 -0
  28. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/ads_library.py +0 -0
  29. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/adsets.py +0 -0
  30. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/api.py +0 -0
  31. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/auth.py +0 -0
  32. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/authentication.py +0 -0
  33. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/budget_schedules.py +0 -0
  34. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/callback_server.py +0 -0
  35. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/campaigns.py +0 -0
  36. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/duplication.py +0 -0
  37. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/http_auth_integration.py +0 -0
  38. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/insights.py +0 -0
  39. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/openai_deep_research.py +0 -0
  40. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/pipeboard_auth.py +0 -0
  41. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/reports.py +0 -0
  42. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/resources.py +0 -0
  43. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/server.py +0 -0
  44. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/targeting.py +0 -0
  45. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/utils.py +0 -0
  46. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/requirements.txt +0 -0
  47. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/setup.py +0 -0
  48. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/smithery.yaml +0 -0
  49. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/README.md +0 -0
  50. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/README_REGRESSION_TESTS.md +0 -0
  51. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/__init__.py +0 -0
  52. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/conftest.py +0 -0
  53. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/e2e_account_info_search_issue.py +0 -0
  54. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_account_info_access_fix.py +0 -0
  55. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_account_search.py +0 -0
  56. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_budget_update.py +0 -0
  57. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_budget_update_e2e.py +0 -0
  58. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_dsa_beneficiary.py +0 -0
  59. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_dsa_integration.py +0 -0
  60. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_duplication.py +0 -0
  61. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_duplication_regression.py +0 -0
  62. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_dynamic_creatives.py +0 -0
  63. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_estimate_audience_size.py +0 -0
  64. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_estimate_audience_size_e2e.py +0 -0
  65. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_get_account_pages.py +0 -0
  66. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_get_ad_creatives_fix.py +0 -0
  67. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_get_ad_image_quality_improvements.py +0 -0
  68. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_get_ad_image_regression.py +0 -0
  69. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_http_transport.py +0 -0
  70. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_insights_actions_and_values_e2e.py +0 -0
  71. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_insights_pagination.py +0 -0
  72. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_integration_openai_mcp.py +0 -0
  73. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_is_dynamic_creative_adset.py +0 -0
  74. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_mobile_app_adset_creation.py +0 -0
  75. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_mobile_app_adset_issue.py +0 -0
  76. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_openai.py +0 -0
  77. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_openai_mcp_deep_research.py +0 -0
  78. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_page_discovery.py +0 -0
  79. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_page_discovery_integration.py +0 -0
  80. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_targeting.py +0 -0
  81. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_targeting_search_e2e.py +0 -0
  82. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_update_ad_creative_id.py +0 -0
  83. {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_upload_ad_image.py +0 -0
@@ -0,0 +1,32 @@
1
+ name: Publish to MCP Registry (manual)
2
+
3
+ on:
4
+ # This workflow is kept for manual runs only. The normal release flow
5
+ # is handled by the consolidated release workflow.
6
+ workflow_dispatch:
7
+
8
+ jobs:
9
+ publish:
10
+ runs-on: ubuntu-latest
11
+ permissions:
12
+ id-token: write
13
+ contents: read
14
+
15
+ steps:
16
+ - name: Checkout code
17
+ uses: actions/checkout@v4
18
+
19
+ - name: Install MCP Publisher
20
+ run: |
21
+ curl -L "https://github.com/modelcontextprotocol/registry/releases/download/v1.1.0/mcp-publisher_1.1.0_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher
22
+
23
+ - name: Login to MCP Registry (DNS auth)
24
+ run: |
25
+ echo "${{ secrets.MCP_PRIVATE_KEY }}" > temp_key.pem
26
+ PRIVATE_KEY_HEX=$(openssl pkey -in temp_key.pem -noout -text | grep -A3 "priv:" | tail -n +2 | tr -d ' :\n')
27
+ ./mcp-publisher login dns --domain pipeboard.co --private-key "$PRIVATE_KEY_HEX"
28
+ rm -f temp_key.pem
29
+
30
+ - name: Publish to MCP Registry
31
+ run: ./mcp-publisher publish
32
+
@@ -0,0 +1,114 @@
1
+ name: "Release: Test, PyPI, MCP"
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ # Allow manual triggering for testing
7
+ workflow_dispatch:
8
+
9
+ jobs:
10
+ test_and_build:
11
+ name: Test and Build (pre-release gate)
12
+ runs-on: ubuntu-latest
13
+ permissions:
14
+ contents: read
15
+
16
+ steps:
17
+ - name: Check out code
18
+ uses: actions/checkout@v4
19
+
20
+ - name: Set up Python
21
+ uses: actions/setup-python@v5
22
+ with:
23
+ python-version: "3.12"
24
+
25
+ - name: Install uv
26
+ uses: astral-sh/setup-uv@v5
27
+
28
+ - name: Install dependencies
29
+ run: |
30
+ uv sync --all-extras --dev
31
+
32
+ - name: Run tests
33
+ run: |
34
+ uv run pytest -q
35
+
36
+ - name: Build wheel and sdist
37
+ run: |
38
+ uv build
39
+
40
+ - name: Validate server.json against schema
41
+ run: |
42
+ uv run python - <<'PY'
43
+ import json, sys, urllib.request
44
+ from jsonschema import validate
45
+ from jsonschema.exceptions import ValidationError
46
+ server = json.load(open('server.json'))
47
+ schema_url = server.get('$schema')
48
+ with urllib.request.urlopen(schema_url) as r:
49
+ schema = json.load(r)
50
+ try:
51
+ validate(instance=server, schema=schema)
52
+ except ValidationError as e:
53
+ print('Schema validation failed:', e, file=sys.stderr)
54
+ sys.exit(1)
55
+ print('server.json is valid')
56
+ PY
57
+
58
+ publish_pypi:
59
+ name: Publish to PyPI
60
+ needs: test_and_build
61
+ runs-on: ubuntu-latest
62
+ environment: release
63
+ permissions:
64
+ id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
65
+ contents: read
66
+
67
+ steps:
68
+ - name: Check out code
69
+ uses: actions/checkout@v4
70
+
71
+ - name: Set up Python
72
+ uses: actions/setup-python@v5
73
+ with:
74
+ python-version: "3.10"
75
+
76
+ - name: Install build dependencies
77
+ run: |
78
+ python -m pip install --upgrade pip
79
+ pip install build
80
+
81
+ - name: Build package
82
+ run: python -m build
83
+
84
+ - name: Publish to PyPI
85
+ uses: pypa/gh-action-pypi-publish@release/v1
86
+ with:
87
+ verbose: true
88
+
89
+ publish_mcp:
90
+ name: Publish to MCP Registry
91
+ needs: publish_pypi
92
+ runs-on: ubuntu-latest
93
+ permissions:
94
+ id-token: write
95
+ contents: read
96
+
97
+ steps:
98
+ - name: Check out code
99
+ uses: actions/checkout@v4
100
+
101
+ - name: Install MCP Publisher
102
+ run: |
103
+ curl -L "https://github.com/modelcontextprotocol/registry/releases/download/v1.1.0/mcp-publisher_1.1.0_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher
104
+
105
+ - name: Login to MCP Registry (DNS auth)
106
+ run: |
107
+ # Extract private key using official MCP publisher method
108
+ echo "${{ secrets.MCP_PRIVATE_KEY }}" > temp_key.pem
109
+ PRIVATE_KEY_HEX=$(openssl pkey -in temp_key.pem -noout -text | grep -A3 "priv:" | tail -n +2 | tr -d ' :\n')
110
+ ./mcp-publisher login dns --domain pipeboard.co --private-key "$PRIVATE_KEY_HEX"
111
+ rm -f temp_key.pem
112
+
113
+ - name: Publish to MCP Registry
114
+ run: ./mcp-publisher publish
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meta-ads-mcp
3
- Version: 1.0.12
3
+ Version: 1.0.13
4
4
  Summary: Model Context Protocol (MCP) server 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
@@ -6,7 +6,7 @@ This package provides a Meta Ads MCP integration
6
6
 
7
7
  from meta_ads_mcp.core.server import main
8
8
 
9
- __version__ = "1.0.12"
9
+ __version__ = "1.0.13"
10
10
 
11
11
  __all__ = [
12
12
  'get_ad_accounts',
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "meta-ads-mcp"
7
- version = "1.0.12"
7
+ version = "1.0.13"
8
8
  description = "Model Context Protocol (MCP) server for interacting with Meta Ads API"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-09-16/server.schema.json",
3
3
  "name": "co.pipeboard/meta-ads-mcp",
4
4
  "description": "Facebook / Meta Ads automation with AI: analyze performance, test creatives, optimize spend.",
5
- "version": "1.0.12",
5
+ "version": "1.0.13",
6
6
  "remotes": [
7
7
  {
8
8
  "type": "streamable-http",
@@ -13,7 +13,7 @@
13
13
  {
14
14
  "registryType": "pypi",
15
15
  "identifier": "meta-ads-mcp",
16
- "version": "1.0.12",
16
+ "version": "1.0.13",
17
17
  "transport": {
18
18
  "type": "stdio"
19
19
  }
@@ -1,70 +0,0 @@
1
- name: Publish to MCP Registry
2
-
3
- on:
4
- release:
5
- types: [published]
6
-
7
- jobs:
8
- publish:
9
- runs-on: ubuntu-latest
10
- permissions:
11
- id-token: write
12
- contents: read
13
-
14
- steps:
15
- - name: Checkout code
16
- uses: actions/checkout@v5
17
-
18
- - name: Set up Python
19
- uses: actions/setup-python@v5
20
- with:
21
- python-version: "3.12"
22
-
23
- - name: Install uv
24
- uses: astral-sh/setup-uv@v5
25
-
26
- - name: Install dependencies
27
- run: |
28
- uv sync --all-extras --dev
29
-
30
- - name: Run tests
31
- run: |
32
- uv run pytest -q
33
-
34
- - name: Build wheel
35
- run: |
36
- uv build
37
-
38
- - name: Validate server.json against schema
39
- run: |
40
- uv run python - <<'PY'
41
- import json, sys, urllib.request
42
- from jsonschema import validate
43
- from jsonschema.exceptions import ValidationError
44
- server = json.load(open('server.json'))
45
- schema_url = server.get('$schema')
46
- with urllib.request.urlopen(schema_url) as r:
47
- schema = json.load(r)
48
- try:
49
- validate(instance=server, schema=schema)
50
- except ValidationError as e:
51
- print('Schema validation failed:', e, file=sys.stderr)
52
- sys.exit(1)
53
- print('server.json is valid')
54
- PY
55
-
56
- - name: Install MCP Publisher
57
- run: |
58
- curl -L "https://github.com/modelcontextprotocol/registry/releases/download/v1.1.0/mcp-publisher_1.1.0_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher
59
-
60
- - name: Login to MCP Registry (DNS auth)
61
- run: |
62
- # Extract private key using official MCP publisher method
63
- echo "${{ secrets.MCP_PRIVATE_KEY }}" > temp_key.pem
64
- PRIVATE_KEY_HEX=$(openssl pkey -in temp_key.pem -noout -text | grep -A3 "priv:" | tail -n +2 | tr -d ' :\n')
65
- ./mcp-publisher login dns --domain pipeboard.co --private-key "$PRIVATE_KEY_HEX"
66
- rm -f temp_key.pem
67
-
68
- - name: Publish to MCP Registry
69
- run: ./mcp-publisher publish
70
-
@@ -1,39 +0,0 @@
1
- name: Publish to PyPI
2
-
3
- on:
4
- release:
5
- types: [published]
6
- # Allow manual triggering for testing
7
- workflow_dispatch:
8
-
9
- jobs:
10
- publish:
11
- runs-on: ubuntu-latest
12
- environment: release
13
- permissions:
14
- id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
15
- contents: read
16
-
17
- steps:
18
- - name: Check out code
19
- uses: actions/checkout@v4
20
-
21
- - name: Set up Python
22
- uses: actions/setup-python@v5
23
- with:
24
- python-version: "3.10"
25
-
26
- - name: Install build dependencies
27
- run: |
28
- python -m pip install --upgrade pip
29
- pip install build
30
-
31
- - name: Build package
32
- run: python -m build
33
-
34
- - name: Publish to PyPI
35
- uses: pypa/gh-action-pypi-publish@release/v1
36
- with:
37
- # Using trusted publishing (no API token needed)
38
- # Make sure to configure trusted publishing in PyPI project settings
39
- verbose: true
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes