Argo MCP server
online · 100% uptimeio.github.Argo-RPG-Platform/argo-mcp·v1.0.3·1 starsMCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2
1 stars64 downloads/wk
Reviews
Write oneNobody has reviewed Argo yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Argo tools (62, 32 write)
write = sends, deletes, buys or postsaccept_friend_requestFreeAccept an incoming friend request from the given user.
add_campaign_to_guildFreeAdd a campaign to a guild. Any active member of the guild can do this; the calling user must be the campaign's GM (enforced server-side).
add_co_gmwrite actionFreeSend a user an assistant GM (co-GM) offer for a campaign. This does NOT add them immediately: the target must accept the offer before they become an assistant GM. Owner-only — the calling user must be the campaign's primary GM. Maximum 5 co-GMs per campaign.
add_guild_calendar_eventFreeAdd a new event to the guild's shared calendar. Owner/Admin only. startDateTime / endDateTime are ISO-8601 (e.g. 2026-06-12T19:00:00).
cancel_friend_requestwrite actionFreeCancel a friend request you previously sent.
create_archive_mnemonswrite actionFreeCreate Archive mnemons (archived lore that is no longer current). Players may not call this — GM/co-GM only.
create_campaignwrite actionFreeCreate a new Argo campaign. The current user becomes GM and the calling token gains read+write access to the new campaign immediately (no re-consent needed). Requires the campaign.create OAuth scope, granted at consent time.
create_custom_mnemonswrite actionFreeCreate custom-typed mnemons (any free-form entry that doesn't fit the other types). Players may not call this — GM/co-GM only.
create_journal_mnemonswrite actionFreeCreate Journal mnemons (log of in-world events). Players may not call this — GM/co-GM only.
create_location_mnemonswrite actionFreeCreate Location mnemons (places — cities, dungeons, taverns). Use create_mnemon_relationship with PARENT_OF to nest larger places under one another after creation. Players may not call this — GM/co-GM only.
create_lore_mnemonswrite actionFreeCreate Lore mnemons (world background, factions' beliefs, history). Players may not call this — GM/co-GM only.
create_mnemon_relationshipwrite actionFreeCreate a relationship between two mnemon entries. The label decides everything: its kind (containment or association) and how it reads (one_way or mutual) belong to the word itself — never send a per-edge override. All 14 labels: MEMBER (NPC ∈ Faction, mutual), ALLY (mutual), ENEMY (one-way), RIVAL (one-way), PARENT_OF (Location hierarchy — sourceEntryId is the outer/larger place, e.g. Region → City → District → Tavern), CONTAINS (Location → NPC present there), LOCATED_IN (NPC → Location; inverse of CONTAINS), HAS_SUBQUEST (Quest → subquest Quest), QUEST_RELATED_NPC (Quest → NPC), QUEST_RELATED_LOCATION (Quest → Location), SESSION_ATTENDEE_CHARACTER (SessionSummary → CHARACTER-kind Player), SESSION_ATTENDEE_NPC (SessionSummary → NPC), SESSION_FEATURED_QUEST (SessionSummary → Quest), SESSION_FEATURED_LOCATION (SessionSummary → Location). sourceEntryId is the 'from' side; targetEntryId is the 'to' side — which end is which matters. Call describe_mnemon_types for the full valid (sourceType, label, targetType) matrix. For faction membership prefer memberNpcEntryIds / affiliationEntryIds on the NPC itself; for quest links prefer subQuestEntryIds / relatedNpcEntryIds / relatedLocationEntryIds on the quest. Session-summary links have no array equivalent — the SESSION_* labels are the only way to set them.
create_npc_mnemonswrite actionFreeCreate NPC mnemons (FACTION or INDIVIDUAL). npcType is REQUIRED on each item. Use memberNpcEntryIds (on FACTIONs) and affiliationEntryIds (on INDIVIDUALs) to wire membership; the server projects into MEMBER relationships. Players may not call this — GM/co-GM only.
create_player_mnemonswrite actionFreeCreate Player mnemons (party root, character notes, party notes). For playerKind=CHARACTER, supply parentEntryId (the PARTY mnemon), partyId (CampaignParty.id), and characterId (SessionCharacter id) or the entry will be auto-detached. Players with campaign.write may call this for a party they belong to; GMs may call for any party.
create_quest_mnemonswrite actionFreeCreate Quest mnemons. questStatus is one of active|completed|failed. Players may not call this — GM/co-GM only.
create_sessionwrite actionFreeSchedule a campaign session. Provide an ISO-8601 startAt; endAt is optional. Useful for laying out planned arcs or recurring play nights.
create_session_summary_mnemonswrite actionFreeCreate SessionSummary mnemons (structured summaries of game sessions). Players may not call this — GM/co-GM only.
delete_mnemonwrite actionFreePermanently delete a mnemon entry and every relationship that touches it. GM-only on the backend. This cannot be undone — confirm with the user before calling. entryId accepts a hex id or an exact title.
delete_mnemon_relationshipwrite actionFreeDelete a relationship by id.
describe_mnemon_typesFreeReturns a catalog of all mnemon types, their type-specific fields, and the full valid relationship matrix (sourceType → label → targetType). Call this before create_mnemon or create_mnemon_relationship when you are unsure which type or label to use. NPC subtype is strictly FACTION | INDIVIDUAL.
forum_create_topicwrite actionFreeCreate a new forum topic (bug report, feature request, or general discussion). Always call forum_search first to check for duplicates. Call forum_list_categories to get the correct categoryId.
forum_get_latest_topicsFreeGet the latest active topics across all forum categories.
forum_get_notificationsFreeGet the current user's forum notifications (replies, mentions, likes).
forum_get_user_postsFreeList topics created by the current user on the forum.
forum_list_categoriesFreeList all Discourse forum categories at community.argo.games. Call this first when the user wants to post a bug report or feature request — you need the categoryId to create a topic.
forum_list_topicsFreeList topics in a specific forum category. Provide categorySlug and/or categoryId — given only one, the other is resolved from the category list automatically. Use forum_list_categories to discover categories.
forum_read_topicFreeRead the full content of a forum topic including all posts and replies. Post bodies are returned as plain text (HTML markup is stripped).
forum_replyFreeReply to an existing forum topic.
forum_searchFreeSearch forum topics and posts. Supports Discourse search syntax: #category-slug to filter by category, @username to filter by author. Always search before creating a bug report or feature request to avoid duplicates.
get_campaignFreeRetrieve details of an Argo campaign (name, description, rule system, co-GMs).
get_guildFreeRetrieve full details of a guild (members, campaigns, calendar metadata).
get_mnemonFreeGet the full details of a specific mnemon entry (title, blocks, type properties).
get_sessionFreeGet details of a single campaign session.
invite_guild_memberFreeInvite a user to join the guild. Owner/Admin only.
list_campaignsFreeList all Argo campaigns the current grant token has access to, including the access level ("read" or "read+write") for each. Call this first when the user has not provided a campaign ID. Each entry includes both `campaignName` and `id` (shown inline as `[id: …]` and also in structuredContent.idMap). Use the `id` verbatim for any subsequent tool call that takes a `campaignId`. In prose to the user, refer to campaigns by `campaignName`; do not print the raw `id` unless asked.
list_co_gmsFreeList the assistant GMs (co-GMs) of a campaign.
list_friendsFreeList the current user's accepted friends.
list_guild_membersFreeList the members of a guild (id, role, status, invitedAt, joinedAt).
list_guildsFreeList the guilds the current user belongs to, with role (Owner/Admin/Member), member count, and campaign count. Requires the guild.read scope. Each entry includes both `name` and `guildId` (shown inline as `[id: …]` and in structuredContent.idMap). Use the `guildId` verbatim for any tool that takes one; refer to guilds by `name` in prose to the user.
list_mnemon_relationshipsFreeList the relationships of a mnemon entry, split into outgoing edges, incoming edges, and a flat list of linked entries (entryId/title/type/relationshipTypes). Use this to find members of a faction, allies/enemies of an NPC, etc.
list_mnemonsFreeList mnemon (lore/memory) entries for an Argo campaign. Optional filters: `title` (case-insensitive substring on entry title only) and `type` (e.g. NPC, Location, Quest). To find entries by what they CONTAIN, use search_mnemons instead. Returns up to `limit` entries (default 100); when `hasMore` is true, call again with `offset` = the returned `nextOffset` to fetch the next page. Each entry includes both `title` and `entryId` (shown inline as `[id: …]` and in structuredContent.idMap). Use the `entryId` verbatim for any tool that takes one; refer to entries by `title` in prose to the user.
list_received_friend_requestsFreeList incoming friend requests awaiting your response.
list_sent_friend_requestsFreeList outgoing friend requests that are still pending.
list_sessionsFreeList campaign sessions for a given month (defaults to the current month).
reject_friend_requestFreeReject an incoming friend request from the given user.
remove_co_gmwrite actionFreeRemove a co-GM from a campaign. Owner-only or self-removal.
remove_guild_memberwrite actionFreeRemove a member from the guild. Owner/Admin only.
search_mnemonsFreeFull-text search across mnemon titles, tags, and body content (case-insensitive substring). Prefer this over list_mnemons when looking for entries by what they contain — e.g. "what do we know about the Red Oracle?". Each hit reports which fields matched (title/tags/content) and up to 3 body snippets; a snippet's blockId is the same block id get_mnemon returns, so you can target the matched block directly in update_mnemons_content. Only content visible to the current user is searched. Returns at most `limit` hits (default 20, max 50) plus `hasMore`.
send_friend_requestwrite actionFreeSend a friend request to another Argo user.
set_guild_member_roleFreeChange a guild member's role to Owner, Admin, or Member. Owner/Admin only. Note that promoting another user to Owner transfers the guild — confirm with the user first.
update_archive_mnemonswrite actionFreeUpdate typed/meta fields of Archive mnemons.
update_campaignwrite actionFreeUpdate a campaign's display name and/or description. Both fields optional — only supplied fields are changed; pass an empty string to clear the description. GMs and co-GMs can call this; rule-system swaps remain WebApp-only.
update_custom_mnemonswrite actionFreeUpdate typed/meta fields of Custom-typed mnemons.
update_journal_mnemonswrite actionFreeUpdate typed/meta fields of Journal mnemons.
update_location_mnemonswrite actionFreeUpdate typed/meta fields of Location mnemons.
update_lore_mnemonswrite actionFreeUpdate typed/meta fields of Lore mnemons.
update_mnemons_contentwrite actionFreeEdit the body content of one or more mnemon entries. Each item carries an entryId and an ordered list of ops (append, insertAfter, replace, remove) applied atomically per entry. Op content is authored as Markdown (headings, lists, quotes, code fences, bold/italic, links) — do NOT send HTML. Mentions: @[label](mnemon:<entryId>). Images:  — upload the asset first; inline base64 / data: URLs are not accepted. Node addressing: get body-node ids from get_mnemon, then target them in replace/remove/insertAfter. A single op's Markdown may produce several nodes; new nodes get fresh server-generated ids (replace keeps the original id on the first new node). On a bad op (missing blockId, unknown op, etc.) the whole entry's batch is rejected with the failedOpIndex; no partial mutation per entry. See describe_mnemon_types.blockOps for the full vocabulary.
update_npc_mnemonswrite actionFreeUpdate typed/meta fields of NPC mnemons (visibility, tags, npcType, faction membership, etc.). Does NOT modify content blocks — use update_mnemons_content for that. Set visibility=PUBLIC on multiple NPCs in a single call by listing them in items[].
update_player_mnemonswrite actionFreeUpdate typed/meta fields of Player mnemons.
update_quest_mnemonswrite actionFreeUpdate typed/meta fields of Quest mnemons (status transitions, expiry, related entries).
update_sessionwrite actionFreeReschedule a campaign session or edit its title/description. All fields optional. Owner-only on the backend.
update_session_summary_mnemonswrite actionFreeUpdate typed/meta fields of SessionSummary mnemons.
Public scan report
scanner v0.1.9 · 2026-09-27 · same rubric, same numbers if you re-run it
- Code scan45 source files scanned25/25
- Live reliabilityremote reachable in 389ms20/20
- Tool poisoning62 tool descriptions checked15/15
- Auth qualityopen endpoint exposes 32 write-action tools with no auth3/15
- Maintenancelast push 22 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year9/10
Findings (1)
- highWrite-action tools reachable without authentication
auth.open-write
How Argo compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 87/100
- higher than 73% of 48,255 servers
- Tools
- 62
- the typical server has 7
- Tools that change things
- 52%
- typical: 0%. Fewer write tools means less an agent can break
- Uptime
- 100%
- of our recent checks; the typical remote server answers 100%
- Response time
- 204 ms
- faster than 63% of 30,031 servers
- GitHub stars
- 1
- more than 65% of 28,688 servers
- Downloads a week
- 64
- more than 51% of 12,191 servers with a package
What its tools let an agent do: 26 read · 15 create · 14 change · 5 delete · 2 send or post
Install Argo in Claude Code, Cursor or VS Code
claude mcp add --transport http argo-mcp https://mcp.argo.games/mcp
What the publisher says
From the Argo repository's README, as published. We do not edit it. Read it on GitHub
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.
Linux / Flatpak / Snap note: If clicking the button doesn't open VS Code, the vscode: URL handler isn't registered. This is common on:
- Flatpak / Snap VS Code — the sandbox isolates the install from the host, so the host browser can't find the protocol handler.
- Tarball / manual installs — no postinst hook runs update-desktop-database. Either run xdg-mime default code.desktop x-scheme-handler/vscode once, or use the manual fallback below.
Manual fallback: copy the JSON from the VS Code (one-click, recommended) section below into your VS Code mcp.json config.
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/mcpChatGPT 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 loginThe 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: ${XDGCONFIGHOME:-~/.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 tokensLocal 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.
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Argo: common questions
- Is Argo MCP server safe?
- Yes, by our scan: it is graded A (87/100). Read the Argo safety report
- How do I install Argo?
- It runs remotely at mcp.argo.games. Add it to Claude Code, Cursor, VS Code or Claude Desktop with the snippets above, or call it through the mcp.market gateway without installing anything.
- Does Argo need an API key?
- Yes. The registry entry asks for
OAUTH_TOKEN,REFRESH_TOKEN. - Is Argo maintained?
- The last commit was 59 days ago (2026-09-06). The latest release is v1.0.3.
- Is Argo up?
- 100% of our last 28 checks got an answer. We check remote servers about four times a day.
- How does Argo compare with other MCP servers?
- safety score 87/100 (higher than 73% of 48,255 servers); tools 62 (the typical server has 7); tools that change things 52% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.