Medya satın almacılarının kampanyaları, zonları, ekip üyelerini ve trafik istatistiklerini doğrudan bir sohbet arayüzü üzerinden yönetmelerine olanak tanır.
Ayrıca bilinen adı affset/mcp, mcp, @affset/mcp
- Yıldızlar
- 0
- Araçlar
- 31
- İndirmeler, 30 gün
- 258
- En son sürüm
- 0.4.0
- Son commit
- 13 Eyl 2026
- Lisans
- MIT
affset MCP nedir?
affset bir MCP sunucusudur. Medya satın almacılarının kampanyaları, zonları, ekip üyelerini ve trafik istatistiklerini doğrudan bir sohbet arayüzü üzerinden yönetmelerine olanak tanır. 31 araç sunar; örneğin whoami, get_stats, list_campaigns.
Özet, projenin README dosyasından oluşturuldu
affset MCP sunucusu hakkında
Medya satın almacılar, bu MCP server sayesinde tüm reklam iş akışlarını bir sohbet arayüzü üzerinden yönetebilirler. Bu araç, kullanıcıların doğal dil kullanarak trafik istatistiklerini çekmelerine, kampanyaları yönetmelerine ve ekip erişimini kontrol etmelerine olanak tanıyarak geleneksel panel navigasyonunun yerini alır. Sunucu affset tenant API'sine bağlanarak ülke, reklamveren veya yayıncı gibi çeşitli boyutlar üzerinden ROI, dönüşüm ve medya maliyetlerini izleme imkanı sağlar.
Kullanıcılar, OAuth üzerinden barındırılan uzak bir bağlantı veya Bearer token ve namespace içeren bir npm paketi kullanarak yerel kurulum arasında seçim yapabilirler. Barındırılan uç nokta Claude, Cursor ve Claude Code ile uyumludur. Yerel kurulumlar için sunucu stdio üzerinden çalışır ve salt okunur erişim için yapılandırılabilir. Araç seti; trafik kaynaklarını yönetmek, ExoClick veya TrafficStars gibi platformlar için ağ tekliflerini ayarlamak ve yanlışlıkla yapılan değişiklikleri önlemek için yerleşik dry-run korumalarına sahip yeni zonlar veya ekip üyeleri oluşturmak için özel komutlar içerir.
Neler yapabilirsiniz
- 1Kampanya performansını analiz edinBelirli boyutlara göre gruplandırılmış tıklama, dönüşüm ve ROI dahil trafik istatistiklerinden oluşan bir tablo talep edin.
- 2Ağ tekliflerini değiştirinRichAds veya ExoClick gibi bir trafik kaynağındaki belirli bir kampanya için USD teklifini güncelleyin.
- 3Ekip erişimini yönetinHesaba yeni bir ekip üyesi davet edin ve ona belirli bir rol atayın.
- 4Kampanya kurulumunu otomatize edinBelirli bir teklif URL'si, coğrafi hedefleme ve ödeme oranı ile yeni bir kampanya oluşturun.
Projenin README dosyasından alınmıştır. Her kullanım durumu, oradaki bir alıntı ile kontrol edilir.
affset MCP nasıl yüklenir
Biçimler 10 Kas 2026 tarihinde doğrulandıCursor'a ekleGoose'a ekleaffset MCP'yi Claude Code içine yükleyin
$ claude mcp add --env 'AFFSET_API_KEY=<YOUR_AFFSET_API_KEY>' --env 'AFFSET_BASE_URL=<AFFSET_BASE_URL>' --env 'AFFSET_NAMESPACE=<AFFSET_NAMESPACE>' mcp -- npx -y @affset/mcpaffset MCP'yi Cursor içine yükleyin
~/.cursor/mcp.json
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@affset/mcp"
],
"env": {
"AFFSET_API_KEY": "<YOUR_AFFSET_API_KEY>",
"AFFSET_BASE_URL": "<AFFSET_BASE_URL>",
"AFFSET_NAMESPACE": "<AFFSET_NAMESPACE>"
}
}
}
}affset MCP'yi VS Code içine yükleyin
.vscode/mcp.json
{
"servers": {
"mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@affset/mcp"
],
"env": {
"AFFSET_API_KEY": "<YOUR_AFFSET_API_KEY>",
"AFFSET_BASE_URL": "<AFFSET_BASE_URL>",
"AFFSET_NAMESPACE": "<AFFSET_NAMESPACE>"
}
}
}
}affset MCP'yi VS Code CLI içine yükleyin
$ code --add-mcp '{"name":"mcp","type":"stdio","command":"npx","args":["-y","@affset/mcp"],"env":{"AFFSET_API_KEY":"<YOUR_AFFSET_API_KEY>","AFFSET_BASE_URL":"<AFFSET_BASE_URL>","AFFSET_NAMESPACE":"<AFFSET_NAMESPACE>"}}'affset MCP'yi Claude Desktop içine yükleyin
claude_desktop_config.json
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@affset/mcp"
],
"env": {
"AFFSET_API_KEY": "<YOUR_AFFSET_API_KEY>",
"AFFSET_BASE_URL": "<AFFSET_BASE_URL>",
"AFFSET_NAMESPACE": "<AFFSET_NAMESPACE>"
}
}
}
}affset MCP'yi Codex içine yükleyin
$ codex mcp add mcp --env 'AFFSET_API_KEY=<YOUR_AFFSET_API_KEY>' --env 'AFFSET_BASE_URL=<AFFSET_BASE_URL>' --env 'AFFSET_NAMESPACE=<AFFSET_NAMESPACE>' -- npx -y @affset/mcpaffset MCP'yi Codex config.toml içine yükleyin
~/.codex/config.toml
[mcp_servers.mcp] command = "npx" args = ["-y", "@affset/mcp"] [mcp_servers.mcp.env] AFFSET_API_KEY = "<YOUR_AFFSET_API_KEY>" AFFSET_BASE_URL = "<AFFSET_BASE_URL>" AFFSET_NAMESPACE = "<AFFSET_NAMESPACE>"
affset MCP'yi Gemini CLI içine yükleyin
$ gemini mcp add -s user -e 'AFFSET_API_KEY=<YOUR_AFFSET_API_KEY>' -e 'AFFSET_BASE_URL=<AFFSET_BASE_URL>' -e 'AFFSET_NAMESPACE=<AFFSET_NAMESPACE>' mcp npx -- -y @affset/mcpaffset MCP'yi Gemini settings.json içine yükleyin
~/.gemini/settings.json
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@affset/mcp"
],
"env": {
"AFFSET_API_KEY": "<YOUR_AFFSET_API_KEY>",
"AFFSET_BASE_URL": "<AFFSET_BASE_URL>",
"AFFSET_NAMESPACE": "<AFFSET_NAMESPACE>"
}
}
}
}affset MCP araçları 31
README dosyasından algılandıwhoamiget_statslist_campaignsget_campaignlist_zoneslist_teamcreate_team_membercreate_campaignset_campaign_statusupdate_campaigncreate_zoneupdate_zone
| whoami | — | |
| get_stats | — | |
| list_campaigns | — | |
| get_campaign | — | |
| list_zones | — | |
| list_team | — | |
| create_team_member | — | |
| create_campaign | — | |
| set_campaign_status | — | |
| update_campaign | — | |
| create_zone | — | |
| update_zone | — |
31 aracın tümünü gösterDaha az araç göster
list_traffic_sourcescreate_traffic_sourceupdate_traffic_sourcelist_source_bidsset_source_bidget_zone_urlget_tracking_linkcut_zoneslist_payout_rulesset_payout_ruledelete_payout_ruleset_payout_goallist_targeting_typeslist_targeting_rulesset_targeting_ruleremove_targeting_rulelist_sub_labelsset_sub_labelslist_conversions
| list_traffic_sources | — | |
| create_traffic_source | — | |
| update_traffic_source | — | |
| list_source_bids | — | |
| set_source_bid | — | |
| get_zone_url | — | |
| get_tracking_link | — | |
| cut_zones | — | |
| list_payout_rules | — | |
| set_payout_rule | — | |
| delete_payout_rule | — | |
| set_payout_goal | — | |
| list_targeting_types | — | |
| list_targeting_rules | — | |
| set_targeting_rule | — | |
| remove_targeting_rule | — | |
| list_sub_labels | — | |
| set_sub_labels | — | |
| list_conversions | — |
Yapılandırma
AFFSET_API_KEYGerekliGizliTenant API key (Bearer token). Its namespace must match AFFSET_NAMESPACE.
AFFSET_BASE_URLGerekliOrigin of your affset ad server API (no path, query, or embedded credentials).
AFFSET_NAMESPACEGerekliTenant namespace this key belongs to (lowercase letters, numbers, hyphens; 3–63 chars).
AFFSET_READ_ONLYOptional. Set to true to register only read-only tools (no create/update/delete/cut).
AFFSET_REQUEST_TIMEOUT_MSOptional per-request HTTP timeout in milliseconds (1000–300000).
| Ad | Açıklama | Sunucu |
|---|---|---|
| AFFSET_API_KEY | Tenant API key (Bearer token). Its namespace must match AFFSET_NAMESPACE. | GerekliGizli |
| AFFSET_BASE_URL | Origin of your affset ad server API (no path, query, or embedded credentials). | Gerekli |
| AFFSET_NAMESPACE | Tenant namespace this key belongs to (lowercase letters, numbers, hyphens; 3–63 chars). | Gerekli |
| AFFSET_READ_ONLY | Optional. Set to true to register only read-only tools (no create/update/delete/cut). | |
| AFFSET_REQUEST_TIMEOUT_MS | Optional per-request HTTP timeout in milliseconds (1000–300000). |
Otomatik kontroller
Çalıştırıldı 12 Kas 2026Tam rapor →Otomatik kontrollerimizden geçti. Bu bir güvenlik denetimi değildir: kodu okuyun ve sunucuya ihtiyaç duyduğu en dar erişimi verin. Kontroller nasıl çalışır
- Kaynak deposu bağlantılı ve erişilebilirGeçti
- Açık kaynak lisansı (OSI)Geçti
- Son bir yıl içinde commit veya sürüm mevcutGeçti
- Paket adı popüler bir pakete yakın değilGeçti
- Uzak uç nokta HTTPS kullanıyorGeçti
- Yıkıcı araçlar etiketlenmişKontrol edilmedi
- Modele yönelik gizli talimat yokGeçti
- Pakette veya bağımlılıklarında kritik uyarı yokGeçti
affset MCP server
An MCP server that lets a media buyer run affset from a chat client — pull stats, manage campaigns/zones/team, payouts, targeting, sub labels, and cut underperforming zones in plain language, no dashboard.
The tools wrap the existing affset tenant API. Connect through the hosted
endpoint (OAuth, no API key) or run this package locally (Bearer token +
X-Namespace). One connection serves one tenant.
Fastest way to connect — the hosted endpoint. Add
https://mcp.affset.com/mcp as a remote MCP server in Claude (web or desktop),
Cursor, Claude Code, or any client that supports streamable HTTP with OAuth:
paste the URL, sign in with your affset email, keep Read-only (the consent
default) or grant full access. Every connection shows up on the dashboard
Integrations page and can be revoked individually. Setup guide:
affset.com/integrations.
The npm package below is the self-host path: same tool roster, runs on your
machine with an API key you manage yourself. Stdio defaults to full access
unless you set AFFSET_READ_ONLY=true.
Tools
| Tool | What it does |
|---|---|
whoami |
Show the tenant this server is bound to: namespace, API base, derived dashboard URL, and (when readable) company / timezone / custom API domain. Read-only. |
get_stats |
Traffic stats grouped by a dimension (date, campaign, zone, country, sub1–5, advertiser, publisher, …), optionally narrowed with advertiser_email/publisher_email filters (one user, any group_by). Returns clicks, conversions, CR, payout, media cost and ROI as a table. paid_only defaults to true (same as the dashboard) so CR excludes informative conversions. Sub columns use the tenant's sub labels when configured. Per-user groupings and filters are owner/manager plus the matching side's manager role. |
list_campaigns |
List campaigns (status / name filter, pagination). |
get_campaign |
One campaign's full record — every field (untruncated offer URL, exact schedule, budgets/pacing, silent flag, payout goal type) plus its targeting rules and payout rules, in one call. |
list_zones |
List traffic-source zones (status / name filter, pagination, linked source). |
list_team |
List team members (email, role, manager). Never returns API tokens. |
create_team_member |
Invite a team member (owner, manager, publisher, advertiser, publisher_manager, advertiser_manager). A scoped manager key can only create its own managed role, self-assigned. Returns the new API key once — list_team never shows it again. Dry-run by default; confirm: true to apply. |
create_campaign |
Create a campaign from an advertiser email, offer URL, geo, payout and name. Defaults: CPA / rate 0, paused, global payout rule, and a ready tracking link (linked source template when configured; otherwise source_click_id={clickid} + sub placeholders). Dry-run by default; confirm: true to apply. |
set_campaign_status |
Run or pause a campaign (action: "run" | "pause"). Dry-run by default; confirm: true to apply. Running can hit the plan's active-campaign limit. |
update_campaign |
Partial update (name, offer URL, status, rate, budgets, dates, …). Dry-run by default; confirm: true to apply. Prefer set_campaign_status for run/pause. |
create_zone |
Create a traffic-source zone (name + optional postback/site/traffic-back URLs, optional traffic_source_id link). Always created active. Dry-run by default; confirm: true to apply. |
update_zone |
Partial update (name, status, URLs, traffic_source_id). Dry-run by default; confirm: true to apply. Pass null to clear a URL or unlink the source. |
list_traffic_sources |
List traffic sources — the networks bought from, each with the tracking/postback templates its linked zones use. API token shown only as set/none. |
create_traffic_source |
Create a traffic source, optionally from a network preset (exoclick, trafficstars, propellerads, adsterra, richads) that copies verified templates into an editable row. Dry-run by default; confirm: true to apply. |
update_traffic_source |
Partial update (name, templates, api_token, status). Linked zones pick the new tracking template up immediately. Dry-run by default; confirm: true to apply. |
list_source_bids |
The network campaigns of one traffic source with their current bids, read live from the network account (ExoClick, TrafficStars, RichAds — needs the source's API token): status, pricing model, bid in USD, last change that entered Affset's mutation stage. Read-only. |
set_source_bid |
Set one network campaign's bid in USD using its existing pricing model (for RichAds: CPM for pops, CPC for push/display). The dry run returns expected_current_bid; pass that value back with confirm: true to bind the write to the bid reviewed, so a concurrent change is refused rather than overwritten. Records the attempt in the source's bid history and reports applied only when the network echoes the new value. Raising a bid above 5× needs allow_large_increase: true. Dry-run by default. |
get_zone_url |
The /serve URL to paste into a network's campaign settings — rotates across the zone's active campaigns. A zone linked to a traffic source renders that source's tracking template; otherwise prefilled sub convention + optional cost macro. Warns when no active campaigns are visible. |
get_tracking_link |
The /track/click link for an existing campaign + zone — straight to one active campaign, with no rotation or targeting checks. Renders a linked source's template like get_zone_url. Re-derives what create_campaign echoed on create. |
cut_zones |
Blacklist underperforming zones on a campaign by threshold (CR / spend / ROI). Dry-run by default; confirm: true to apply. |
list_payout_rules |
List a campaign's global + per-zone payout rules and its payout_goal_type. |
set_payout_rule |
Upsert a global or zone-specific payout. Dry-run by default; confirm: true to apply. |
delete_payout_rule |
Delete a global or zone-specific payout rule. Dry-run by default; confirm: true to apply. |
set_payout_goal |
Set or clear payout_goal_type (goal-based conversions). Dry-run by default; confirm: true to apply. |
list_targeting_types |
Catalog of targeting rule types, flagging the seeded ones /serve never evaluates. |
list_targeting_rules |
List a campaign's targeting rules, flagging any that have no effect. |
set_targeting_rule |
Upsert one targeting rule (safe merge), normalised to what /serve matches. Dry-run by default; confirm: true to apply. |
remove_targeting_rule |
Remove one targeting rule by id or type+method. Dry-run by default; confirm: true to apply. |
list_sub_labels |
List tenant display names for sub1–sub5. |
set_sub_labels |
Set or clear sub labels (partial; null clears). Dry-run by default; confirm: true to apply. |
list_conversions |
List conversion audit records (payout, spend, pixel type, payload, postback). paid_only filters server-side; other optional filters are client-side on the current page. |
Which URL do I give the network?
get_zone_url (/serve/{zone}) |
get_tracking_link (/track/click/{campaign}/{zone}) |
|
|---|---|---|
| Picks the campaign | affset, from the zone's rotation | you, one fixed campaign |
| Needs an active campaign | yes — otherwise traffic back / unsold | yes — otherwise 404 |
| Needs an active zone | yes | yes |
| Geo & targeting rules | enforced | not enforced |
cost= lands on |
the impression row | the click row |
Use one or the other for a given traffic stream — never both with cost=, or the
media cost is counted twice.
Both use the tenant's custom API domain when one is set, since the URL gets pasted
into the network verbatim. Macros ({clickid}, [CLICK_ID], ${SUBID}) are inserted
without percent-encoding — the source expands them before the request reaches affset.
cut_zones only ever adds zones to a campaign's blacklist, and does a
read-merge-write so existing targeting rules are never touched.
create_campaign needs a traffic-source zone for the tracking link: pass
zone_id, or let it auto-pick when the namespace has exactly one active zone.
Campaigns are created paused; activate them before sending traffic through either
URL. Both URL types also require an active zone. Geo whitelist is enforced in /serve
only — the direct tracking link is not geo-gated, but it still requires an active,
currently serviceable campaign.
Documentation resources
Beyond the tools, the server exposes the affset API reference as MCP
resources, so an
assistant can answer "how does conversion tracking work?" or "what does /serve
accept?" from the docs themselves — not just from the tool schemas.
| Resource URI | Type | Content |
|---|---|---|
affset://docs/api-reference |
text/markdown |
The full API reference — endpoints, auth, roles, examples. |
affset://docs/api-reference.json |
application/json |
The same reference as structured data, for programmatic use. |
They're the exact content published at affset.com/docs,
generated from one source, and fetched at read time from AFFSET_DOCS_URL
({origin}/api-reference.md and {origin}/api-reference.json) — so they always
reflect the currently published docs, not a copy pinned to this package. The
fetch sends no credentials (the docs are public and live on a different
origin than the tenant API). HTML SPA fallbacks, redirects, invalid JSON, and
oversized bodies are rejected. Both resources are always available, including
under AFFSET_READ_ONLY.
affset MCP soruları
affset MCP'yi Claude Code'a nasıl eklerim?
Terminalinizde claude mcp add --env 'AFFSET_API_KEY=<YOUR_AFFSET_API_KEY>' --env 'AFFSET_BASE_URL=<AFFSET_BASE_URL>' --env 'AFFSET_NAMESPACE=<AFFSET_NAMESPACE>' mcp -- npx -y @affset/mcp komutunu çalıştırın. Her projede kullanılabilir olması için --scope user ekleyin.
affset MCP'yi Cursor'a nasıl eklerim?
~/.cursor/mcp.json dosyasını açın ve yukarıdaki yükleme bölümünde gösterilen Cursor yapılandırmasını kullanarak sunucuyu mcpServers altına ekleyin.
affset MCP hangi araçları sunar?
31 araç sunar; bunlar arasında whoami, get_stats, list_campaigns, get_campaign, list_zones yer alır.
Bu sunucuyu yerel olarak çalıştırabilir miyim?
Evet, npm paketini bir Bearer token ve X-Namespace kullanarak yerel olarak çalıştırabilirsiniz.
Ne tür istatistikler çekebilirim?
Tıklama, dönüşüm, CR, ödeme, medya maliyeti ve ROI dahil olmak üzere trafik istatistiklerini tarih, kampanya veya ülke gibi boyutlara göre gruplandırılmış şekilde çekebilirsiniz.