The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Presscart listing page.
The official Model Context Protocol server for Presscart, a marketplace for disclosed paid editorial placements across 1,700+ publications. It lets AI assistants and agents browse the outlet catalog, manage campaigns and orders, and track article status through the Presscart API.
Hosted endpoint: https://mcp.presscart.com/mcp — see Client Setup for connecting from Claude, Cursor, VS Code, ChatGPT, and other MCP clients. A Presscart account is required.
Supports:
Hosted HTTP mode supports two auth models:
/mcp with Authorization: Bearer <oauth_access_token>.X-Presscart-API-Token, and the server uses that token as the upstream Presscart credential.Required:
Optional app link settings:
Optional hosted mode settings:
Optional host/origin overrides for reverse proxies or multiple domains:
When MCP_ALLOWED_ORIGINS is not set, hosted mode allows the configured MCP server origin plus Claude's remote connector origins.
Optional OAuth settings:
Notes:
PRESSCART_API_URL must point at the app API base that exposes /teams/* routes, not a public-api-only base.PRESSCART_APP_URL controls direct application links returned by tools such as list_publisher_articles. Set it per environment so staging MCP links open staging.profile_id. If the profile is unknown, call list_teams, then list_profiles.MCP_OAUTH_TRANSLATOR_ENABLED defaults to false. When enabled, the MCP origin publishes a standards-based OAuth facade while Supabase remains responsible for clients, codes, tokens, rotation, signing, and consent.MCP_OAUTH_ISSUER_URL must use HTTPS. Loopback HTTP issuers are accepted only for local development.MCP_OAUTH_LEGACY_AUDIENCE is an optional verifier-only migration value and must equal the configured MCP server origin (for example, https://mcp.presscart.com). It cannot duplicate the canonical /mcp resource or name another service, and it never changes the protected resource advertised to clients.X-Presscart-API-Token: <presscart_api_token> on initialize and later requests that need to confirm the active session credential.Development:
Build and run:
Build and run hosted HTTP:
Releases are automated by semantic-release from Conventional Commits.
fix: creates a patch release.feat: creates a minor release.! or BREAKING CHANGE: creates a major release.docs:, test:, chore:, and other non-release commits do not publish a new version by default.The Release workflow runs on pushes to main and staging. It runs check, test, and build, then semantic-release creates the release tag and publishes the GitHub release.
main publishes stable releases and commits generated release files: CHANGELOG.md, package.json, package-lock.json, and src/version.ts.staging publishes release candidates with the rc prerelease channel, but does not commit generated release files. This keeps staging-to-main promotion merges from conflicting on prerelease metadata.You can dry-run the release locally:
If the repository has no existing release tag yet, create the baseline tag before the first semantic-release run so the next release continues from the current version:
get_userlist_teamsget_teamlist_profilesupload_fileslist_outletsget_outletcreate_outletupdate_outletlist_outlet_channelscreate_outlet_channelupdate_outlet_channeldelete_outlet_channellist_product_typeslist_product_listingslist_countrieslist_stateslist_citiesget_product_listinglist_productsget_productcreate_productupdate_productcreate_orderget_orderlist_order_itemslist_profile_orderscreate_campaignlist_campaignsget_campaignupdate_campaignlist_campaign_articleslist_publisher_articlesadd_order_items_to_campaignget_campaign_article_statusupload_campaign_questionnaireupload_articlereplace_article_filesubmit_articlerequest_article_writingEnable OAuth:
The canonical resource and JWT audience must match MCP_SERVER_URL, allowing only a trailing-slash difference. Both public OAuth URLs and the upstream issuer must use HTTPS except for loopback-only local development. MCP_OAUTH_LEGACY_AUDIENCE is needed only during the migration window, must match the MCP server origin exactly, and should otherwise be unset.
With the translator disabled, the server exposes direct-Supabase protected-resource metadata at:
/.well-known/oauth-protected-resource/.well-known/oauth-protected-resource/mcpWith the translator enabled, those routes advertise https://mcp.presscart.com as the authorization server, and the server also exposes:
/.well-known/oauth-authorization-server/oauth/authorize/oauth/register/oauth/tokenThe facade accepts the standard authorization-code and refresh-token flows and proxies only to the configured Supabase issuer. It does not derive upstream targets from request hosts, forwarded headers, query parameters, or client-supplied URLs.
The facade does not expose or advertise an RFC token-revocation endpoint. Revocation stays in the existing Presscart app/admin flow: revoking the Presscart OAuth grant makes the next refresh fail. An access token that was already issued is not actively revoked by this MCP verifier and can remain cryptographically valid until its normal expiry. After it expires, the client cannot obtain a replacement, access ends, and the user must reauthorize.
Hosted MCP clients should connect to https://mcp.presscart.com/mcp and use normal MCP OAuth discovery. After the browser flow completes, they send Authorization: Bearer <oauth_access_token> to /mcp. Clients own refresh-token storage, automatically initiate refresh, and persist each rotated refresh token returned by Supabase through the facade.
ChatGPT, Claude, Cursor, and Codex consume the same MCP and OAuth standards. The server has no vendor-specific authentication branches. Labels and prompts such as Connect or Authenticate are controlled by each client platform, not by this server.
Deploy the audience migration and translator in this order:
MCP_OAUTH_TRANSLATOR_ENABLED=false, canonical MCP_OAUTH_AUDIENCE=https://mcp.presscart.com/mcp, and temporary MCP_OAUTH_LEGACY_AUDIENCE=https://mcp.presscart.com dual-audience verification./mcp audience.MCP_OAUTH_TRANSLATOR_ENABLED=true in non-production and run discovery, authorization-code, and refresh smoke tests. Revoke a Presscart OAuth grant through the existing app/admin flow and verify that the next refresh fails. Do not expect an already-issued access token to fail immediately: let it reach its normal expiry, then verify that the client cannot replace it and requires reauthorization before enabling the translator in production.MCP_OAUTH_LEGACY_AUDIENCE only after telemetry confirms they are unused.To roll back the facade, set MCP_OAUTH_TRANSLATOR_ENABLED=false; direct Supabase metadata returns without changing legacy direct-token MCP or ordinary Presscart sessions. Keep canonical audience issuance and temporary legacy verification in place until the rollback window is complete. Clients registered against the facade may need to reconnect through the direct Supabase flow.
If MCP_OAUTH_ENABLED is unset or false, hosted clients can still connect to /mcp directly and provide the user's Presscart API token via X-Presscart-API-Token.
For Railway:
Start command:
Example initialize request in legacy direct-token mode:
Remote MCP servers for Claude and Claude Desktop are added in the product UI, not via claude_desktop_config.json.
Settings > Connectors.Add the remote server from the CLI:
Then run Claude Code and use /mcp if it prompts you to complete OAuth authentication.
Add the remote server from the CLI:
Codex supports remote Streamable HTTP MCP servers with OAuth. The configured MCP URL and the WWW-Authenticate resource_metadata URL should both use the MCP public hostname. With MCP_OAUTH_TRANSLATOR_ENABLED=true, protected-resource metadata advertises the MCP-origin facade as its authorization server; with the translator disabled, it advertises the direct Supabase/Auth issuer.
Quick verification:
Add the server in .cursor/mcp.json for a project, or ~/.cursor/mcp.json for your user profile:
Cursor supports OAuth for remote HTTP MCP servers. Once added, use Cursor’s MCP UI to connect/authenticate.
Add the server in .vscode/mcp.json for a workspace, or in your user mcp.json:
Then open Copilot Chat in Agent mode and complete the OAuth flow when VS Code prompts you.
GitHub’s coding agent currently does not support remote MCP servers that use OAuth. If you need GitHub-hosted Copilot integration today, use the legacy direct-token mode instead of MCP_OAUTH_ENABLED=true, or use VS Code/Copilot Chat locally.
ChatGPT uses remote MCP servers through Developer Mode and Apps settings rather than a local config file.
Settings > Apps and create a new app for your remote MCP server.Notes: