此仓库提供了一个基于CLI的模型上下文协议(MCP)服务器,该服务器公开了PubNub SDK文档和PubNub API资源,供LLM驱动工具使用。这提高了LLM AI代理理解和与PubNub SDK及API交互的能力。

HTTP_PORT环境变量支持SSE模式。resources目录中的本地markdown文件中获取PubNub概念指南和如何操作文档(例如,pubnub_concepts、pubnub_features、pubnub_security、how_to_send_receive_json、how_to_encrypt_messages_files等)。publish_pubnub_message向PubNub频道发布消息,并返回时间令牌。pubnub_subscribe_and_receive_messages订阅频道并接收实时消息,支持单个或多个消息收集,可选超时。get_pubnub_messages从一个或多个频道获取历史消息,返回JSON格式的消息内容和元数据。get_pubnub_presence获取频道和频道组的实时存在信息(占用计数、订阅者UUID)。write_pubnub_app生成创建PubNub应用程序的逐步说明,包括初始化多种语言的PubNub SDK的代码片段。manage_pubnub_account管理PubNub账户应用和API密钥,支持应用和API密钥的创建、列出和删除操作。PUBNUB_PUBLISH_KEY和PUBNUB_SUBSCRIBE_KEY以验证SDK操作。jsdom和turndown将远程HTML文章转换为Markdown,确保文档格式一致。@modelcontextprotocol/sdk)扩展工具定义,使用McpServer和StdioServerTransport。my_channel频道并记录消息到控制台的PubNub JavaScript应用程序。"my_channel频道发布一条消息,内容为Hello, PubNub!。"my_channel频道并等待一条消息。"notifications频道并收集5条消息,超时时间为30秒。"alerts频道上的消息10秒。"subscribe()方法。"publish()方法。"test频道的消息历史。"test频道和default频道组的存在信息(占用计数和UUID)。"这需要Node.js(>= 18)和npm(https://nodejs.org/)。
npx会自动获取并运行最新的MCP服务器。
首选方式是通过npx运行PubNub MCP服务器或将其添加到光标IDE:
npx -y @pubnub/mcp
光标必须处于AGENT MODE才能使用MCP服务器。
光标IDE通过一个JSON配置文件发现MCP服务器。 全局或按项目配置PubNub MCP服务器。
编辑或创建~/.cursor/mcp.json:
{
"mcpServers": {
"pubnub": {
"command": "npx",
"args": ["-y", "@pubnub/mcp"],
"env": {
"PUBNUB_PUBLISH_KEY": "YOUR_PUBLISH_KEY",
"PUBNUB_SUBSCRIBE_KEY": "YOUR_SUBSCRIBE_KEY"
}
}
}
}
在您的项目目录中,创建.cursor/mcp.json:
{
"mcpServers": {
"pubnub": {
"command": "npx",
"args": ["-y", "@pubnub/mcp"],
"env": {
"PUBNUB_PUBLISH_KEY": "YOUR_PUBLISH_KEY",
"PUBNUB_SUBSCRIBE_KEY": "YOUR_SUBSCRIBE_KEY"
}
}
}
}
PubNub MCP服务器支持以下环境变量:
PUBNUB_PUBLISH_KEY:您的PubNub发布密钥(发布消息所需)PUBNUB_SUBSCRIBE_KEY:您的PubNub订阅密钥(订阅和消息历史所需)如果您更喜欢通过Docker运行MCP服务器,请将PubNub密钥设置为环境变量:
export PUBNUB_PUBLISH_KEY=YOUR_PUBLISH_KEY
export PUBNUB_SUBSCRIBE_KEY=YOUR_SUBSCRIBE_KEY
然后配置您的~/.cursor/mcp.json(或项目中的.cursor/mcp.json):
{
"mcpServers": {
"pubnub": {
"command": "docker",
"args": [
"run",
"-i",
"-e",
"PUBNUB_PUBLISH_KEY",
"-e",
"PUBNUB_SUBSCRIBE_KEY",
"pubnub/pubnub-mcp-server"
]
}
}
}
command指定启动MCP服务器的可执行文件。args指定传递给命令的参数。env为服务器进程设置环境变量。要启用服务器发送事件(SSE)HTTP传输,请导出HTTP_PORT环境变量并启动MCP服务器。确保您的PubNub API密钥已设置在环境中:
export PUBNUB_PUBLISH_KEY=YOUR_PUBLISH_KEY
export PUBNUB_SUBSCRIBE_KEY=YOUR_SUBSCRIBE_KEY
export HTTP_PORT=3000
# 在端口3000上使用NPX启动SSE模式的MCP服务器
npx -y @pubnub/mcp
# 在端口3000上使用Docker启动SSE模式的MCP服务器
docker run -i \
-e PUBNUB_PUBLISH_KEY=$PUBNUB_PUBLISH_KEY \
-e PUBNUB_SUBSCRIBE_KEY=$PUBNUB_SUBSCRIBE_KEY \
-e HTTP_PORT=$HTTP_PORT \
pubnub/pubnub-mcp-server
PubNub MCP服务器支持一种专门的聊天SDK模式,专注于PubNub聊天SDK文档和功能。启用--chat-sdk标志后,服务器提供对聊天SDK资源的简化访问,同时排除通用的PubNub SDK工具。
# 启用聊天SDK模式的NPX
npx -y @pubnub/mcp --chat-sdk
# 直接使用Node.js启用聊天SDK模式
node index.js --chat-sdk
全局配置(~/.cursor/mcp.json):
{
"mcpServers": {
"pubnub-chat": {
"command": "npx",
"args": ["-y", "@pubnub/mcp", "--chat-sdk"],
"env": {
"PUBNUB_PUBLISH_KEY": "YOUR_PUBLISH_KEY",
"PUBNUB_SUBSCRIBE_KEY": "YOUR_SUBSCRIBE_KEY"
}
}
}
}
项目配置(.cursor/mcp.json):
{
"mcpServers": {
"pubnub-chat": {
"command": "npx",
"args": ["-y", "@pubnub/mcp", "--chat-sdk"],
"env": {
"PUBNUB_PUBLISH_KEY": "YOUR_PUBLISH_KEY",
"PUBNUB_SUBSCRIBE_KEY": "YOUR_SUBSCRIBE_KEY"
}
}
}
}
# 安装聊天SDK模式的MCP服务器
codex mcp add pubnub -e PUBNUB_PUBLISH_KEY=your_publish_key -e PUBNUB_SUBSCRIBE_KEY=your_subscribe_key -- npx -y @pubnub/mcp
# 安装聊天SDK模式的MCP服务器
claude mcp add --scope user pubnub-chat -e PUBNUB_PUBLISH_KEY=your_publish_key -e PUBNUB_SUBSCRIBE_KEY=
your_subscribe_key -- npx -y @pubnub/mcp --chat-sdk
# 设置环境变量
export PUBNUB_PUBLISH_KEY=your_publish_key
export PUBNUB_SUBSCRIBE_KEY=your_subscribe_key
# 在聊天SDK模式下使用Docker运行
docker run -i \
-e PUBNUB_PUBLISH_KEY=$PUBNUB_PUBLISH_KEY \
-e PUBNUB_SUBSCRIBE_KEY=$PUBNUB_SUBSCRIBE_KEY \
pubnub/pubnub-mcp-server --chat-sdk
包含的工具:
read_pubnub_chat_sdk_docs - 访问特定语言和主题的聊天SDK文档publish_pubnub_message - 向PubNub频道发布消息get_pubnub_messages - 从频道获取历史消息get_pubnub_presence - 获取实时存在信息pubnub_subscribe_and_receive_messages - 订阅并接收实时消息排除的工具:
read_pubnub_sdk_docs - 通用的PubNub SDK文档write_pubnub_app - PubNub应用程序模板和设置说明read_pubnub_resources - 通用的PubNub概念指南manage_pubnub_account - PubNub账户管理pubnub://docs/javascript — 获取PubNub JavaScript SDK文档pubnub://docs/python — 获取PubNub Python SDK文档pubnub://docs/java — 获取PubNub Java SDK文档pubnub://functions — 列出PubNub函数(来自resources/pubnub_functions.md的静态内容)pubnub_subscribe_and_receive_messages工具提供了实时消息监听能力,允许您订阅PubNub频道并接收发布的消息。此工具自动处理订阅生命周期、消息收集和清理。
# 订阅并等待一条消息(默认行为)
"订阅'my_channel'频道并等待一条消息"
# 收集多条消息并设置超时
"订阅'notifications'频道并收集5条消息,超时时间为30秒"
# 只设置超时监听
"监听'alerts'频道上的消息10秒"
channel(必需):要订阅的PubNub频道名称messageCount(可选,默认值:1):在取消订阅前要等待的消息数量timeout(可选):以毫秒为单位的超时,避免无限等待工具返回一个包含以下内容的JSON对象:
channel:已订阅的频道名称messageCount:实际收到的消息数量messages:包含频道、消息内容、发布者、时间令牌和订阅信息的消息对象数组## 如果您有node >= 18,请安装MCP服务器
claude mcp add --scope user pubnub -e PUBNUB_PUBLISH_KEY=your_publish_key -e PUBNUB_SUBSCRIBE_KEY=your_subscribe_key -- npx -y @pubnub/mcp
## 如果您有node < 18且需要指向完整的node路径,请安装MCP服务器
claude mcp add --scope user pubnub -e PUBNUB_PUBLISH_KEY=your_publish_key -e PUBNUB_SUBSCRIBE_KEY=your_subscribe_key -- /Users/stephen/.nvm/versions/node/v22.14.0/bin/node /Users/stephen/Projects/mcp-pubnub/index.js
## 使用Docker安装MCP服务器
# 确保您的PubNub密钥作为环境变量设置:
export PUBNUB_PUBLISH_KEY=your_publish_key
export PUBNUB_SUBSCRIBE_KEY=your_subscribe_key
# 根据您的机器CPU架构,您可能需要指定目标平台。
# 例如:
# docker run --platform linux/arm64 -i pubnub/pubnub-mcp-server
# docker run --platform linux/amd64 -i pubnub/pubnub-mcp-server
claude mcp add --scope user pubnub -- docker run -i \
-e PUBNUB_PUBLISH_KEY=$PUBNUB_PUBLISH_KEY \