关于 presscart
Presscart 的官方 MCP 服务,面向在 Presscart 媒体刊登市场中查找出版物并管理营销活动、订单和文章的用户。它直接通过 Presscart API 操作,并支持托管 HTTP 连接和 OAuth 或令牌认证。
主要功能
- 01浏览出版物与刊登目录
- 02创建和管理营销活动
- 03创建订单并管理订单项
- 04上传、提交和替换文章
- 05跟踪活动文章状态
适用场景
- 01为媒体投放筛选出版物
- 02管理活动中的订单与文章
- 03检查文章提交和发布进度
MCP 相关
该 MCP 服务向客户端开放 Presscart 的目录、活动、订单和文章管理工具。托管端点使用 Streamable HTTP,支持 MCP OAuth 或 Presscart API 令牌认证。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.presscart.com/mcpclaude mcp add --transport http com-presscart-presscart https://mcp.presscart.com/mcp{"mcpServers":{"com-presscart-presscart":{"type":"http","url":"https://mcp.presscart.com/mcp"}}}在 Cursor 中打开{"servers":{"com-presscart-presscart":{"type":"http","url":"https://mcp.presscart.com/mcp"}}}在 VS Code 中打开{"mcpServers":{"com-presscart-presscart":{"type":"http","url":"https://mcp.presscart.com/mcp"}}}{"mcpServers":{"com-presscart-presscart":{"serverUrl":"https://mcp.presscart.com/mcp"}}}命令在终端中运行;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_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_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不受影响。
提交到目录前:
- 在预发布环境中验证 Supabase OAuth 是否接受转发的目录
resource值。 - 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 部署与回滚
按以下顺序部署受众迁移和转换器:
- 部署此 MCP 服务,并设置
MCP_OAUTH_TRANSLATOR_ENABLED=false、规范的MCP_OAUTH_AUDIENCE=https://mcp.presscart.com/mcp,以及用于双受众验证的临时MCP_OAUTH_LEGACY_AUDIENCE=https://mcp.presscart.com。 - 部署 Presscart 应用访问令牌钩子,使初始 MCP 令牌和刷新后的 MCP 令牌使用规范
/mcp受众。 - 至少等待一个完整的访问令牌生命周期,然后确认旧受众的使用已停止。
- 在非生产环境中启用
MCP_OAUTH_TRANSLATOR_ENABLED=true,并运行发现、授权码和刷新冒烟测试。通过现有应用/管理流程撤销一项 Presscart OAuth 授权,并确认下一次刷新失败。不要期望已经签发的访问令牌立即失效:应让它达到正常过期时间,然后确认客户端无法替换该令牌并且需要重新授权,再在生产环境中启用转换器。 - 创建并发布替代的 ChatGPT 工作区应用。在重新连接窗口期间保留旧应用可用。
- 在访问令牌过期前后验证 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 添加。
- 打开
Settings > Connectors。 - 添加自定义远程 MCP 连接器。
- 输入 MCP 服务 URL:
https://mcp.presscart.com/mcp
- 按提示启动 OAuth 流程。
- 在 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 服务,而非本地配置文件。
- 在 ChatGPT 中启用开发者模式。
- 前往
Settings > Apps,为远程 MCP 服务创建一个新应用。 - 输入:
https://mcp.presscart.com/mcp
- 选择 OAuth 作为身份验证机制。
- 完成 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。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。