Argo RPG Platform MCP
Connects AI assistants to your Argo campaigns via the Model Context Protocol. Once configured, your AI assistant can read and write campaign lore, look up character details, and interact with Argo data directly from the chat interface.
README
Argo MCP Server
Connects AI assistants to your Argo campaigns via the Model Context Protocol. Once configured, your AI assistant can read and write campaign lore, look up character details, and interact with Argo data directly from the chat interface.
Supported clients: Claude Code, Claude Desktop, OpenAI Codex, VS Code (1.103+), and any MCP-compatible host.
One-click install
Clicking either button hands a vscode:mcp/install URL to your editor with this config:
{ "type": "http", "url": "https://mcp.argo.games/mcp" }
VS Code stores the entry in your user-level mcp.json, then negotiates OAuth on first connect via Dynamic Client Registration against the Argo authorization server. No tokens are embedded in the URL — VS Code stores the resulting access and refresh tokens in your OS keychain.
The same install button is rendered on the Argo install page at https://app.argo.games/docs/mcp/install.
Prerequisites
- Node.js 20 or later
- An Argo account with at least one campaign
- A Game Master must authorize the AI assistant via the OAuth2 consent flow (see Getting a token)
Quick start
There are three supported ways to use the Argo MCP server. Pick the one that matches your client.
ChatGPT (remote)
Use the hosted endpoint — do not install the npx package. Add this MCP server URL to ChatGPT:
https://mcp.argo.games/mcp
ChatGPT will walk you through OAuth on first connect via dynamic client registration.
Local MCP clients (Claude Code, Claude Desktop, Codex, etc.) — recommended
Sign in once on the machine that runs the MCP client:
npx -y argo-mcp auth login
The command prints the consent URL, opens nothing, and asks you to paste the access token (and optionally the refresh token) from the consent page. Tokens are saved locally:
- Windows:
%APPDATA%\argo-mcp\tokens.json - macOS:
~/Library/Application Support/argo-mcp/tokens.json - Linux:
${XDG_CONFIG_HOME:-~/.config}/argo-mcp/tokens.json
Then configure the MCP server with no env vars:
{
"mcpServers": {
"argo": { "command": "npx", "args": ["-y", "argo-mcp"] }
}
}
Other auth commands:
npx -y argo-mcp auth status # show whether you are signed in
npx -y argo-mcp auth logout # forget locally stored tokens
Local stdio mode does not use OAuth Dynamic Client Registration. DCR is only used by the hosted HTTP server at
https://mcp.argo.games.
Advanced — environment variables
For CI, Docker, or anyone who prefers explicit env config, you can skip auth login and pass tokens directly. OAUTH_TOKEN always wins over the local token store.
{
"mcpServers": {
"argo": {
"command": "npx",
"args": ["-y", "argo-mcp"],
"env": {
"OAUTH_TOKEN": "<your-access-token>",
"REFRESH_TOKEN": "<your-refresh-token>"
}
}
}
}
Build from source (contributors)
git clone https://github.com/Argo-RPG-Platform/MCP.git argo-mcp
cd argo-mcp
npm install
npm run build
Getting a token
The MCP server authenticates with Argo using an OAuth2 access token tied to a specific set of campaigns. Tokens are obtained through the Argo consent flow:
- Open https://app.argo.games/oauth2/mcp-connect in your browser.
- Select the campaigns you want the AI assistant to access and the permission level (read or read+write).
- Click Authorize. You will be redirected to a page showing two tokens:
- Access token — set this as
OAUTH_TOKEN - Refresh token — set this as
REFRESH_TOKEN(recommended; enables automatic renewal when the access token expires after ~1 hour)
- Access token — set this as
Treat both tokens like passwords. Revoke them at any time from the campaign's integrations page.
Configuration
VS Code (one-click, recommended)
Use the install buttons at the top of this README, or paste the following into a .vscode/mcp.json (per-workspace) or your user-level MCP config:
{
"servers": {
"argo": {
"type": "http",
"url": "https://mcp.argo.games/mcp"
}
}
}
VS Code handles OAuth automatically via Dynamic Client Registration on first connect. There is no need to set OAUTH_TOKEN or REFRESH_TOKEN — VS Code stores tokens in the OS keychain.
Claude Code
Add the server with the CLI:
claude mcp add argo \
--command node \
--args /absolute/path/to/argo-mcp/dist/index.js \
--env OAUTH_TOKEN=<your-access-token> \
--env REFRESH_TOKEN=<your-refresh-token>
Or add it manually to your project's .claude/settings.json:
{
"mcpServers": {
"argo": {
"command": "node",
"args": ["/absolute/path/to/argo-mcp/dist/index.js"],
"env": {
"OAUTH_TOKEN": "<your-access-token>",
"REFRESH_TOKEN": "<your-refresh-token>"
}
}
}
}
Claude Desktop
Edit your Claude Desktop config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"argo": {
"command": "node",
"args": ["/absolute/path/to/argo-mcp/dist/index.js"],
"env": {
"OAUTH_TOKEN": "<your-access-token>",
"REFRESH_TOKEN": "<your-refresh-token>"
}
}
}
}
Restart Claude Desktop after saving.
OpenAI Codex
Add the server to your Codex MCP configuration:
{
"mcpServers": {
"argo": {
"command": "node",
"args": ["/absolute/path/to/argo-mcp/dist/index.js"],
"env": {
"OAUTH_TOKEN": "<your-access-token>",
"REFRESH_TOKEN": "<your-refresh-token>"
}
}
}
}
ChatGPT App Submission
For the hosted ChatGPT app surface, this repo exposes OAuth discovery, dynamic client registration, and domain verification endpoints on the MCP domain. The submission checklist and required env vars are in CHATGPT_APP_SUBMISSION.md.
Using a .env file (local dev)
Create a .env file in the argo-mcp directory:
OAUTH_TOKEN=<your-access-token>
REFRESH_TOKEN=<your-refresh-token>
Then run directly:
npm run dev # hot-reload via tsx
# or
npm start # compiled dist/
Available tools
This server exposes tools across campaigns, mnemons, sessions, guilds, friends, invites, and the Argo community forum.
Campaigns
list_campaigns(campaign.read) lists accessible campaigns and their access levelget_campaign(campaign.read) retrieves campaign detailscreate_campaign(campaign.create) creates a new campaignupdate_campaign(campaign.write) updates campaign name or descriptionlist_co_gms(campaign.read) lists assistant GMsadd_co_gm(campaign.write) adds an assistant GMremove_co_gm(campaign.write) removes an assistant GM
Mnemons
describe_mnemon_typeslists supported mnemon types, relationship labels, and content-block ruleslist_mnemons(campaign.read) lists mnemon entries for a campaignget_mnemon(campaign.read) retrieves a mnemon entry in fulllist_mnemon_relationships(campaign.read) lists linked entries and relationship edgescreate_*_mnemons(campaign.write) creates typed mnemon entries for NPC, Location, Quest, Lore, Archive, Journal, SessionSummary, Player, and Custom entriesupdate_*_mnemons(campaign.write) updates typed/meta fields for those mnemon entry typesupdate_mnemons_content(campaign.write) edits mnemon content blockscreate_mnemon_relationship(campaign.write) creates a relationship between entriesdelete_mnemon_relationship(campaign.write) deletes a relationship by ID
Sessions
create_session(campaign.write) schedules a campaign sessionlist_sessions(campaign.read) lists sessions for a campaign and monthget_session(campaign.read) retrieves a single sessionupdate_session(campaign.write) updates a session's schedule or text
Guilds
list_guilds(guild.read) lists guilds the current user belongs toget_guild(guild.read) retrieves guild detailslist_guild_members(guild.read) lists guild membersadd_campaign_to_guild(guild.write) links a campaign to a guildinvite_guild_member(guild.admin) invites a guild memberremove_guild_member(guild.admin) removes a guild memberset_guild_member_role(guild.admin) changes a guild member's roleadd_guild_calendar_event(guild.admin) adds a guild calendar event
Friends and invites
list_friends(friends.read) lists accepted friendslist_sent_friend_requests(friends.read) lists outgoing pending requestslist_received_friend_requests(friends.read) lists incoming pending requestssend_friend_request(friends.write) sends a friend requestaccept_friend_request(friends.write) accepts a requestreject_friend_request(friends.write) rejects a requestcancel_friend_request(friends.write) cancels a sent requestinvite_user_by_email(invite.write) sends Argo invitation emails
Forum
forum_list_categories(forum.read) lists forum categoriesforum_list_topics(forum.read) lists topics in a categoryforum_get_latest_topics(forum.read) lists recent forum activityforum_read_topic(forum.read) reads a topic threadforum_search(forum.read) searches forum contentforum_get_user_posts(forum.read) lists the current user's topicsforum_get_notifications(forum.read) lists the current user's notificationsforum_create_topic(forum.write) creates a new topic oncommunity.argo.gamesforum_reply(forum.write) replies to an existing topic oncommunity.argo.games
Many campaign-scoped tools accept campaignId. You can find a campaign's ID from the Argo campaign URL or by asking the GM.
Token renewal
The access token expires after approximately one hour. If REFRESH_TOKEN is configured, the server automatically fetches a new access token on the first request that returns a 401 and retries transparently — no action required.
If no refresh token is set and the access token expires, the tool will return:
Token expired — re-consent at https://app.argo.games/oauth2/mcp-connect
Re-run the consent flow at that URL to get fresh tokens.
Revoking access
To disconnect the AI assistant from a campaign, revoke the grant from the campaign's integrations page in the Argo WebApp. The access token and refresh token will both become invalid immediately.
Environment variables
| Variable | Required | Description |
|---|---|---|
OAUTH_TOKEN |
If not signed in via auth login |
OAuth2 access token from the consent flow |
REFRESH_TOKEN |
Recommended | OAuth2 refresh token; enables automatic renewal |
ARGO_API_BASE |
No | Override the API base URL (default: https://api.argo.games) |
ARGO_MCP_TOKEN_PATH |
No | Override the local token file path used by auth login |
License
MIT — see LICENSE.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。