meta-ads-mcp 1.0.2__tar.gz → 1.0.4__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 (81) hide show
  1. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/.github/workflows/publish-mcp.yml +2 -2
  2. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/PKG-INFO +1 -1
  3. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/RELEASE.md +14 -9
  4. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/meta_ads_mcp/__init__.py +1 -1
  5. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/pyproject.toml +1 -1
  6. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/server.json +2 -2
  7. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/smithery.yaml +4 -1
  8. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_openai.py +4 -2
  9. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/.github/workflows/publish.yml +0 -0
  10. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/.github/workflows/test.yml +0 -0
  11. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/.gitignore +0 -0
  12. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/CUSTOM_META_APP.md +0 -0
  13. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/Dockerfile +0 -0
  14. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/LICENSE +0 -0
  15. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/LOCAL_INSTALLATION.md +0 -0
  16. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/META_API_NOTES.md +0 -0
  17. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/README.md +0 -0
  18. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/STREAMABLE_HTTP_SETUP.md +0 -0
  19. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/examples/README.md +0 -0
  20. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/examples/example_http_client.py +0 -0
  21. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/future_improvements.md +0 -0
  22. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/images/meta-ads-example.png +0 -0
  23. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/meta_ads_auth.sh +0 -0
  24. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/meta_ads_mcp/__main__.py +0 -0
  25. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/meta_ads_mcp/core/__init__.py +0 -0
  26. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/meta_ads_mcp/core/accounts.py +0 -0
  27. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/meta_ads_mcp/core/ads.py +0 -0
  28. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/meta_ads_mcp/core/ads_library.py +0 -0
  29. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/meta_ads_mcp/core/adsets.py +0 -0
  30. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/meta_ads_mcp/core/api.py +0 -0
  31. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/meta_ads_mcp/core/auth.py +0 -0
  32. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/meta_ads_mcp/core/authentication.py +0 -0
  33. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/meta_ads_mcp/core/budget_schedules.py +0 -0
  34. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/meta_ads_mcp/core/callback_server.py +0 -0
  35. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/meta_ads_mcp/core/campaigns.py +0 -0
  36. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/meta_ads_mcp/core/duplication.py +0 -0
  37. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/meta_ads_mcp/core/http_auth_integration.py +0 -0
  38. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/meta_ads_mcp/core/insights.py +0 -0
  39. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/meta_ads_mcp/core/openai_deep_research.py +0 -0
  40. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/meta_ads_mcp/core/pipeboard_auth.py +0 -0
  41. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/meta_ads_mcp/core/reports.py +0 -0
  42. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/meta_ads_mcp/core/resources.py +0 -0
  43. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/meta_ads_mcp/core/server.py +0 -0
  44. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/meta_ads_mcp/core/targeting.py +0 -0
  45. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/meta_ads_mcp/core/utils.py +0 -0
  46. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/requirements.txt +0 -0
  47. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/setup.py +0 -0
  48. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/README.md +0 -0
  49. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/README_REGRESSION_TESTS.md +0 -0
  50. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/__init__.py +0 -0
  51. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/conftest.py +0 -0
  52. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/e2e_account_info_search_issue.py +0 -0
  53. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_account_info_access_fix.py +0 -0
  54. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_account_search.py +0 -0
  55. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_budget_update.py +0 -0
  56. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_budget_update_e2e.py +0 -0
  57. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_dsa_beneficiary.py +0 -0
  58. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_dsa_integration.py +0 -0
  59. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_duplication.py +0 -0
  60. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_duplication_regression.py +0 -0
  61. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_dynamic_creatives.py +0 -0
  62. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_estimate_audience_size.py +0 -0
  63. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_estimate_audience_size_e2e.py +0 -0
  64. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_get_account_pages.py +0 -0
  65. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_get_ad_creatives_fix.py +0 -0
  66. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_get_ad_image_quality_improvements.py +0 -0
  67. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_get_ad_image_regression.py +0 -0
  68. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_http_transport.py +0 -0
  69. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_insights_actions_and_values_e2e.py +0 -0
  70. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_insights_pagination.py +0 -0
  71. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_integration_openai_mcp.py +0 -0
  72. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_is_dynamic_creative_adset.py +0 -0
  73. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_mobile_app_adset_creation.py +0 -0
  74. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_mobile_app_adset_issue.py +0 -0
  75. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_openai_mcp_deep_research.py +0 -0
  76. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_page_discovery.py +0 -0
  77. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_page_discovery_integration.py +0 -0
  78. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_targeting.py +0 -0
  79. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_targeting_search_e2e.py +0 -0
  80. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_update_ad_creative_id.py +0 -0
  81. {meta_ads_mcp-1.0.2 → meta_ads_mcp-1.0.4}/tests/test_upload_ad_image.py +0 -0
@@ -1,8 +1,8 @@
1
1
  name: Publish to MCP Registry
2
2
 
3
3
  on:
4
- push:
5
- tags: ["v*"]
4
+ release:
5
+ types: [published]
6
6
 
7
7
  jobs:
8
8
  publish:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meta-ads-mcp
3
- Version: 1.0.2
3
+ Version: 1.0.4
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
@@ -11,7 +11,7 @@ This repository uses GitHub Actions to automatically publish releases to PyPI. H
11
11
 
12
12
  ### Optimal Release Process
13
13
 
14
- 1. **Update version in both files** (use consistent versioning):
14
+ 1. **Update version in three files** (use consistent versioning):
15
15
 
16
16
  ```bash
17
17
  # Update pyproject.toml
@@ -19,15 +19,19 @@ This repository uses GitHub Actions to automatically publish releases to PyPI. H
19
19
 
20
20
  # Update __init__.py
21
21
  sed -i '' 's/__version__ = "0.7.7"/__version__ = "0.7.8"/' meta_ads_mcp/__init__.py
22
+
23
+ # Update server.json (both top-level and package versions)
24
+ sed -i '' 's/"version": "0.7.7"/"version": "0.7.8"/g' server.json
22
25
  ```
23
26
 
24
- Or manually edit:
25
- - `pyproject.toml`: `version = "0.7.8"`
26
- - `meta_ads_mcp/__init__.py`: `__version__ = "0.7.8"`
27
+ Or manually edit:
28
+ - `pyproject.toml`: `version = "0.7.8"`
29
+ - `meta_ads_mcp/__init__.py`: `__version__ = "0.7.8"`
30
+ - `server.json`: set `"version": "0.7.8"` and package `"version": "0.7.8"`
27
31
 
28
32
  2. **Commit and push version changes**:
29
33
  ```bash
30
- git add pyproject.toml meta_ads_mcp/__init__.py
34
+ git add pyproject.toml meta_ads_mcp/__init__.py server.json
31
35
  git commit -m "Bump version to 0.7.8"
32
36
  git push origin main
33
37
  ```
@@ -66,7 +70,7 @@ git status
66
70
  uv run python -m pytest tests/ -v
67
71
 
68
72
  # 3. Check current version
69
- grep -E "version =|__version__" pyproject.toml meta_ads_mcp/__init__.py
73
+ grep -E 'version =|__version__|"version":' pyproject.toml meta_ads_mcp/__init__.py server.json
70
74
  ```
71
75
 
72
76
  ### Release Commands (One-liner)
@@ -76,7 +80,8 @@ grep -E "version =|__version__" pyproject.toml meta_ads_mcp/__init__.py
76
80
  VERSION="0.7.8" && \
77
81
  sed -i '' "s/version = \"0.7.7\"/version = \"$VERSION\"/" pyproject.toml && \
78
82
  sed -i '' "s/__version__ = \"0.7.7\"/__version__ = \"$VERSION\"/" meta_ads_mcp/__init__.py && \
79
- git add pyproject.toml meta_ads_mcp/__init__.py && \
83
+ sed -i '' "s/\"version\": \"0.7.7\"/\"version\": \"$VERSION\"/g" server.json && \
84
+ git add pyproject.toml meta_ads_mcp/__init__.py server.json && \
80
85
  git commit -m "Bump version to $VERSION" && \
81
86
  git push origin main && \
82
87
  bash -c "gh release create $VERSION --title '$VERSION' --generate-notes"
@@ -108,8 +113,8 @@ bash -c "gh release create $VERSION --title '$VERSION' --generate-notes"
108
113
 
109
114
  2. **Version mismatch**:
110
115
  ```bash
111
- # Verify both files have same version
112
- grep -E "version =|__version__" pyproject.toml meta_ads_mcp/__init__.py
116
+ # Verify all three files have the same version
117
+ grep -E 'version =|__version__|"version":' pyproject.toml meta_ads_mcp/__init__.py server.json
113
118
  ```
114
119
 
115
120
  3. **PyPI not updated**:
@@ -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.2"
9
+ __version__ = "1.0.4"
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.2"
7
+ version = "1.0.4"
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,12 +2,12 @@
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.1",
5
+ "version": "1.0.4",
6
6
  "packages": [
7
7
  {
8
8
  "registryType": "pypi",
9
9
  "identifier": "meta-ads-mcp",
10
- "version": "1.0.1",
10
+ "version": "1.0.4",
11
11
  "transport": {
12
12
  "type": "stdio"
13
13
  }
@@ -30,4 +30,7 @@ startCommand:
30
30
  args: args,
31
31
  env: env
32
32
  };
33
- }
33
+ }
34
+ remotes:
35
+ - type: streamable-http
36
+ url: "https://mcp.pipeboard.co/meta-ads-mcp"
@@ -1,7 +1,9 @@
1
- from openai import OpenAI
2
1
  import os
3
2
  import pytest
4
3
 
4
+ # Skip this test entirely if the optional 'openai' dependency is not installed
5
+ openai = pytest.importorskip("openai", reason="openai package not installed")
6
+
5
7
 
6
8
  @pytest.mark.skipif(
7
9
  not os.getenv("PIPEBOARD_API_TOKEN"),
@@ -9,7 +11,7 @@ import pytest
9
11
  )
10
12
  def test_openai_mcp_integration():
11
13
  """Test OpenAI integration with Meta Ads MCP via Pipeboard."""
12
- client = OpenAI()
14
+ client = openai.OpenAI()
13
15
 
14
16
  resp = client.responses.create(
15
17
  model="gpt-4.1",
File without changes
File without changes
File without changes
File without changes
File without changes