mcpField
P
presscart

presscart

远程服务
presscart.com商业与营销05 天前更新

关于 presscart

Presscart 的官方 MCP 服务,面向在 Presscart 媒体刊登市场中查找出版物并管理营销活动、订单和文章的用户。它直接通过 Presscart API 操作,并支持托管 HTTP 连接和 OAuth 或令牌认证。

主要功能

  1. 01浏览出版物与刊登目录
  2. 02创建和管理营销活动
  3. 03创建订单并管理订单项
  4. 04上传、提交和替换文章
  5. 05跟踪活动文章状态

适用场景

  1. 01为媒体投放筛选出版物
  2. 02管理活动中的订单与文章
  3. 03检查文章提交和发布进度

MCP 相关

该 MCP 服务向客户端开放 Presscart 的目录、活动、订单和文章管理工具。托管端点使用 Streamable HTTP,支持 MCP OAuth 或 Presscart API 令牌认证。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.presscart.com/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

Presscart MCP

Presscart 的官方 Model Context Protocol 服务。Presscart 是一个提供 1,700 多家出版物的付费编辑内容刊登服务的市场。它让 AI 助手和 Agent 能够浏览媒体目录、管理营销活动和订单,并通过 Presscart API 跟踪文章状态。

托管端点:https://mcp.presscart.com/mcp — 连接 Claude、Cursor、VS Code、ChatGPT 和其他 MCP 客户端的说明,请参阅客户端设置。需要 Presscart 账户。

支持:

  • 托管 Streamable HTTP 模式

托管 HTTP 模式支持两种身份验证方式:

  • MCP OAuth 模式:Supabase/Auth 签发 OAuth 令牌,客户端使用 Authorization: Bearer <oauth_access_token> 连接到 /mcp。
  • 旧版直接令牌模式:调用方通过 X-Presscart-API-Token 提供 Presscart API 令牌,服务使用该令牌作为上游 Presscart 凭据。

环境

必需:

export PRESSCART_API_URL="http://api.presscart.com/"

可选应用链接设置:

export PRESSCART_APP_URL="https://app.presscart.com"

可选托管模式设置:

export MCP_HOST="0.0.0.0"
export MCP_PORT="8787"
export MCP_SERVER_URL="https://mcp.presscart.com/mcp"
export MCP_SESSION_IDLE_TTL_MS="43200000"

反向代理或多个域名的可选主机/来源覆盖设置:

export MCP_ALLOWED_HOSTS="mcp.presscart.com"
export MCP_ALLOWED_ORIGINS="https://mcp.presscart.com,https://claude.ai,https://claude.com"

未设置 MCP_ALLOWED_ORIGINS 时,托管模式允许配置的 MCP 服务来源以及 Claude 的远程连接器来源。

可选 OAuth 设置:

export MCP_OAUTH_ENABLED="true"
export MCP_OAUTH_ISSUER_URL="https://<project-ref>.supabase.co/auth/v1"
export MCP_OAUTH_AUDIENCE="https://mcp.presscart.com/mcp"
export MCP_OAUTH_TRANSLATOR_ENABLED="false"
export MCP_OAUTH_LEGACY_AUDIENCE="https://mcp.presscart.com"
export MCP_OAUTH_UPSTREAM_TIMEOUT_MS="10000"

可选目录集成设置:

export MCP_DIRECTORY_PROFILES="openai,claude-directory"

可选 OpenAI 插件域名验证:

export OPENAI_APPS_CHALLENGE_TOKEN="<challenge_token_from_openai_portal>"

说明:

  • PRESSCART_API_URL 必须指向提供 /teams/* 路由的应用 API 基础 URL,而不能指向仅提供公共 API 的基础 URL。
  • PRESSCART_APP_URL 用于控制 list_publisher_articles 等工具返回的应用直达链接。请按环境设置,以便暂存环境中的 MCP 链接打开暂存环境。
  • 创建订单/营销活动或读取个人资料订单的工具需要明确的 profile_id。如果未知个人资料,请先调用 list_teams,然后调用 list_profiles。
  • 在 MCP OAuth 模式下,应用的 Supabase OAuth Server 负责授权和同意流程。此 MCP 运行时会根据 Supabase JWKS 和委派权限验证签发的访问令牌。
  • MCP_OAUTH_TRANSLATOR_ENABLED 默认为 false。启用后,MCP 来源会发布符合标准的 OAuth 门面,同时仍由 Supabase 负责客户端、授权码、令牌、轮换、签名和同意流程。
  • MCP_OAUTH_ISSUER_URL 必须使用 HTTPS。仅在本地开发时才允许使用环回 HTTP 签发者。
  • MCP_OAUTH_LEGACY_AUDIENCE 是可选的、仅用于验证器的迁移值,且必须与配置的 MCP 服务来源相同(例如 https://mcp.presscart.com)。它不能与规范的 /mcp 资源重复,也不能指向其他服务,并且不会更改向客户端公布的受保护资源。
  • MCP 客户端会保存自己的刷新令牌、自动发起刷新,并替换轮换后的刷新令牌和访问令牌。此服务以无状态方式处理刷新请求,不会保存刷新令牌。
  • 该转换器只会影响 MCP OAuth,不会更改普通的 Presscart 浏览器或应用会话;禁用 MCP OAuth 后,旧版直接令牌模式仍可使用。
  • 在旧版直接令牌模式下,请在 initialize 和后续需要确认当前会话凭据的请求中发送 X-Presscart-API-Token: <presscart_api_token>。
  • OPENAI_APPS_CHALLENGE_TOKEN 是 OpenAI 插件门户中显示的域名验证令牌。设置后,GET /.well-known/openai-apps-challenge 会在 MCP 主机名的来源上以 text/plain 返回该令牌,无需身份验证(该门户会忽略 /mcp/openai 路径)。首尾空白会被去除;未设置或为空时,该路由会返回 404。如果设置了 MCP_ALLOWED_HOSTS,其中必须包含公开的 MCP 主机名。

安装

cd presscart-mcp
npm install

运行

开发:

npm run dev:http

构建并运行:

npm run build
npm start

构建并运行托管 HTTP:

npm run build
npm run start:http

发布

发布由 semantic-release 根据 Conventional Commits 自动完成。

  • fix: 会创建补丁版本。
  • feat: 会创建次要版本。
  • ! 或 BREAKING CHANGE: 会创建主要版本。
  • docs:、test:、chore: 和其他非发布类提交默认不会发布新版本。

Release 工作流会在推送到 main 和 staging 时运行。它会执行检查、测试和构建,然后由 semantic-release 创建发布标签并发布 GitHub 版本。

  • main 会发布稳定版本,并提交生成的发布文件:CHANGELOG.md、package.json、package-lock.json 和 src/version.ts。
  • staging 会通过 rc 预发布渠道发布候选版本,但不会提交生成的发布文件。这样可以避免将 staging 合并到 main 时因预发布元数据而产生冲突。

你可以在本地试运行发布:

npm run release:dry-run
npm run release:staging:dry-run

如果仓库还没有现有的发布标签,请在首次运行 semantic-release 前创建基准标签,以便下次发布从当前版本继续:

git tag v0.2.0
git push origin v0.2.0

工具

  • get_user
  • list_teams
  • get_team
  • list_profiles
  • upload_files
  • list_outlets
  • get_outlet
  • create_outlet
  • update_outlet
  • list_outlet_channels
  • create_outlet_channel
  • update_outlet_channel
  • delete_outlet_channel
  • list_product_types
  • list_product_listings
  • list_countries
  • list_states
  • list_cities
  • get_product_listing
  • list_products
  • get_product
  • create_product
  • update_product
  • create_order
  • get_order
  • list_order_items
  • list_profile_orders
  • create_campaign
  • list_campaigns
  • get_campaign
  • update_campaign
  • list_campaign_articles
  • list_publisher_articles
  • add_order_items_to_campaign
  • get_campaign_article_status
  • upload_campaign_questionnaire
  • upload_article
  • replace_article_file
  • submit_article
  • request_article_writing

目录路由

/mcp 保留完整的工具集。OpenAI 和 Claude 目录集成连接到不同的 URL,所提供的工具由服务端配置固定:

配置MCP 路径受保护资源元数据
openai/mcp/openai/.well-known/oauth-protected-resource/mcp/openai
claude-directory/mcp/claude-directory/.well-known/oauth-protected-resource/mcp/claude-directory
  • 仅当某个路由的 id 列在 MCP_DIRECTORY_PROFILES 中时才会挂载(以逗号分隔,默认为空)。未知或重复的 id 会导致启动失败。未列出的配置路径会返回 404。
  • 两种配置都提供相同的 10 个只读工具:get_user、list_teams、get_team、list_profiles、list_profile_orders、get_order、list_campaigns、get_campaign、list_campaign_articles、get_campaign_article_status。其他所有工具都不会在这些路由上注册,因此调用时会在发出任何 Presscart API 请求前失败。
  • 目录工具仅返回明确列出的字段(不包含价格、支付或结账字段、电子邮件、作者姓名、内部文档链接或附加项),声明严格的输出架构,并将 limit 上限设为 25。
  • 会话属于其初始化所在的路由。将会话的 Mcp-Session-Id 发送到任何其他 MCP 路由,都会返回 404 Session not found。
  • 提供工具不等于授权:Presscart API 仍会对每个请求进行授权。
  • 设置 MCP_OAUTH_ENABLED=true 时,每个目录路由都有自己的受保护资源元数据和 WWW-Authenticate 挑战;OAuth 门面会在 /oauth/authorize 和 /oauth/token 上接受其资源;其验证器只接受该路由的资源作为令牌受众。受众为规范 /mcp 资源(或旧版源地址)的令牌会在该路由被拒绝,目录令牌也会被 /mcp 拒绝。
  • 设置 MCP_OAUTH_ENABLED=false 时,目录路由与 /mcp 一样使用 X-Presscart-API-Token。此设置仅用于本地和预发布环境测试。
  • 回滚:从 MCP_DIRECTORY_PROFILES 中移除该配置并重新部署。/mcp 不受影响。

提交到目录前:

  1. 在预发布环境中验证 Supabase OAuth 是否接受转发的目录 resource 值。
  2. Presscart API 会将目录登录所获令牌的受众设为该路由(presscart-app #910)。提交前请在预发布环境中确认这一点。

托管部署形式

MCP OAuth 模式

启用 OAuth:

PRESSCART_API_URL=http://api.presscart.com/
MCP_HOST=0.0.0.0
MCP_PORT=8787
MCP_SERVER_URL=https://mcp.presscart.com/mcp
MCP_SESSION_IDLE_TTL_MS=43200000
MCP_OAUTH_ENABLED=true
MCP_OAUTH_ISSUER_URL=https://<project-ref>.supabase.co/auth/v1
MCP_OAUTH_AUDIENCE=https://mcp.presscart.com/mcp
MCP_OAUTH_TRANSLATOR_ENABLED=false
MCP_OAUTH_LEGACY_AUDIENCE=https://mcp.presscart.com
MCP_OAUTH_UPSTREAM_TIMEOUT_MS=10000

规范资源和 JWT 受众必须与 MCP_SERVER_URL 匹配,唯一允许的差异是末尾斜杠。除仅限环回地址的本地开发外,公共 OAuth URL 和上游颁发者都必须使用 HTTPS。只有在迁移窗口期间才需要设置 MCP_OAUTH_LEGACY_AUDIENCE;它必须与 MCP 服务源完全匹配,其他情况下应取消设置。

禁用转换器时,服务会公开直接 Supabase 受保护资源元数据(仅声明 profile 作用域,因为 Presscart 的访问令牌钩子会拒绝任何请求 openid 的代码交换),地址为:

  • /.well-known/oauth-protected-resource
  • /.well-known/oauth-protected-resource/mcp

启用转换器后,这些路由会将 https://mcp.presscart.com 声明为授权服务器,服务还会公开:

  • /.well-known/oauth-authorization-server
  • /oauth/authorize
  • /oauth/register
  • /oauth/token

该门面支持标准授权码和刷新令牌流程,并且只代理到配置的 Supabase 颁发者。它不会根据请求主机、转发标头、查询参数或客户端提供的 URL 推导上游目标。

该门面不会公开或声明 RFC 令牌撤销端点。撤销操作仍由现有 Presscart 应用/管理流程处理:撤销 Presscart OAuth 授权后,下一次刷新会失败。此 MCP 验证器不会主动撤销已经签发的访问令牌;在正常过期时间到来前,该令牌在密码学上仍可能有效。令牌过期后,客户端无法获取替换令牌,访问权限随之终止,用户必须重新授权。

托管 MCP 客户端应连接到 https://mcp.presscart.com/mcp,并使用常规 MCP OAuth 发现机制。浏览器流程完成后,它们会向 /mcp 发送 Authorization: Bearer <oauth_access_token>。客户端负责存储刷新令牌、自动发起刷新,并持久保存 Supabase 通过该门面返回的每个轮换后的刷新令牌。

ChatGPT、Claude、Cursor 和 Codex 使用相同的 MCP 和 OAuth 标准。服务没有针对特定供应商的身份验证分支。Connect 或 Authenticate 等标签和提示词由各客户端平台控制,而不是由此服务控制。

OAuth 部署与回滚

按以下顺序部署受众迁移和转换器:

  1. 部署此 MCP 服务,并设置 MCP_OAUTH_TRANSLATOR_ENABLED=false、规范的 MCP_OAUTH_AUDIENCE=https://mcp.presscart.com/mcp,以及用于双受众验证的临时 MCP_OAUTH_LEGACY_AUDIENCE=https://mcp.presscart.com。
  2. 部署 Presscart 应用访问令牌钩子,使初始 MCP 令牌和刷新后的 MCP 令牌使用规范 /mcp 受众。
  3. 至少等待一个完整的访问令牌生命周期,然后确认旧受众的使用已停止。
  4. 在非生产环境中启用 MCP_OAUTH_TRANSLATOR_ENABLED=true,并运行发现、授权码和刷新冒烟测试。通过现有应用/管理流程撤销一项 Presscart OAuth 授权,并确认下一次刷新失败。不要期望已经签发的访问令牌立即失效:应让它达到正常过期时间,然后确认客户端无法替换该令牌并且需要重新授权,再在生产环境中启用转换器。
  5. 创建并发布替代的 ChatGPT 工作区应用。在重新连接窗口期间保留旧应用可用。
  6. 在访问令牌过期前后验证 ChatGPT、Claude、Cursor 和 Codex;只有在遥测确认旧应用和 MCP_OAUTH_LEGACY_AUDIENCE 均未被使用后,才移除旧应用和 MCP_OAUTH_LEGACY_AUDIENCE。

要回滚该门面,请设置 MCP_OAUTH_TRANSLATOR_ENABLED=false;直接 Supabase 元数据会恢复,且不会更改旧版直接令牌 MCP 或普通 Presscart 会话。在回滚窗口结束前,继续使用规范受众签发令牌,并保留临时旧受众验证。已在该门面注册的客户端可能需要通过直接 Supabase 流程重新连接。

旧版直接令牌模式

如果未设置 MCP_OAUTH_ENABLED 或其值为 false,托管客户端仍可直接连接到 /mcp,并通过 X-Presscart-API-Token 提供用户的 Presscart API 令牌。

对于 Railway:

PRESSCART_API_URL=http://api.presscart.com/
MCP_HOST=0.0.0.0
MCP_PORT=8787
MCP_SERVER_URL=https://mcp.presscart.com/mcp

启动命令:

npm run start:http

旧版直接令牌模式下的初始化请求示例:

curl -X POST https://mcp.presscart.com/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'X-Presscart-API-Token: pc_...' \
  --data '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"example","version":"1.0.0"}}}'

客户端设置

Claude 和 Claude Desktop

Claude 和 Claude Desktop 的远程 MCP 服务通过产品界面添加,而不是通过 claude_desktop_config.json 添加。

  1. 打开 Settings > Connectors。
  2. 添加自定义远程 MCP 连接器。
  3. 输入 MCP 服务 URL:
https://mcp.presscart.com/mcp
  1. 按提示启动 OAuth 流程。
  2. 在 Presscart 授权界面批准或拒绝委托访问请求。
Claude Code

通过命令行添加远程服务:

claude mcp add --transport http presscart https://mcp.presscart.com/mcp

然后运行 Claude Code;如果系统提示你完成 OAuth 身份验证,请使用 /mcp。

Codex

通过命令行添加远程服务:

codex mcp add presscart --url https://mcp.presscart.com/mcp
codex mcp login presscart

Codex 支持使用 OAuth 的远程 Streamable HTTP MCP 服务。配置的 MCP URL 和 WWW-Authenticate 的 resource_metadata URL 都应使用 MCP 公共主机名。启用 MCP_OAUTH_TRANSLATOR_ENABLED=true 时,受保护资源元数据会将 MCP 源站门面公布为授权服务器;禁用转换器时,则会公布直接的 Supabase/Auth 颁发者。

快速验证:

curl -i https://mcp.presscart.com/mcp
curl -s https://mcp.presscart.com/.well-known/oauth-protected-resource/mcp | jq
Cursor

在项目的 .cursor/mcp.json 或用户配置文件中的 ~/.cursor/mcp.json 添加服务:

{
  "mcpServers": {
    "presscart": {
      "url": "https://mcp.presscart.com/mcp"
    }
  }
}

Cursor 支持远程 HTTP MCP 服务的 OAuth。添加后,请使用 Cursor 的 MCP 界面连接并完成身份验证。

VS Code / GitHub Copilot Chat

在工作区的 .vscode/mcp.json 或用户的 mcp.json 中添加服务:

{
  "servers": {
    "presscart": {
      "type": "http",
      "url": "https://mcp.presscart.com/mcp"
    }
  }
}

然后在 Agent 模式下打开 Copilot Chat,并按 VS Code 提示完成 OAuth 流程。

GitHub.com 上的 GitHub Copilot 编码 Agent

GitHub 的编码 Agent 目前不支持使用 OAuth 的远程 MCP 服务。如果现在需要 GitHub 托管的 Copilot 集成,请使用旧版直接令牌模式,而不要启用 MCP_OAUTH_ENABLED=true;或者在本地使用 VS Code/Copilot Chat。

ChatGPT

ChatGPT 通过开发者模式和应用设置使用远程 MCP 服务,而非本地配置文件。

  1. 在 ChatGPT 中启用开发者模式。
  2. 前往 Settings > Apps,为远程 MCP 服务创建一个新应用。
  3. 输入:
https://mcp.presscart.com/mcp
  1. 选择 OAuth 作为身份验证机制。
  2. 完成 OAuth 流程,并在 Presscart 中批准委托访问请求。

注意:

  • ChatGPT 目前仅支持远程服务,不支持本地 MCP 服务。
  • Business 和 Enterprise/Edu 提供最全面的 MCP 应用支持;不同方案的可用性有所差异。

OpenAI 插件

plugins/openai/ 包含供 OpenAI 插件目录使用的 Presscart Placement Advisor 0.1.1 纯技能包。目前尚未连接 MCP。 运行 cd plugins/openai && npm test && npm run package 进行测试和打包(输出位于 Git 忽略的 dist/ 中)。如需重新构建,请运行 rm -rf dist && npm run package;打包器会有意拒绝覆盖现有归档。 发布阻碍因素和门户提交说明见 plugins/openai/SUBMISSION.md。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。