a4sx sessions
개요
제작자가 쓴 설명(영어 원문)
Search reviewed coding-agent sessions on a4sx anonymously; sign in (OAuth) to load or save sessions.
PopNx MCP의 세 기둥
이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.
- 사용자 의견i아직 리뷰가 없어요리뷰는 다음 단계에서 계정 기능과 함께 열려요
- 우리의 기본 점검i3개 중 2개 통과공개된 정보로 점검했으며, 코드는 아직 스캔하지 않았어요
- 사용 정도i아주 새로움↓ 53/주 · ★ –
할 수 있는 일
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
- 연결 방식: 컴퓨터 또는 클라우드
- 전송 방식: stdio, Streamable HTTP
- 카테고리: 검색 및 AI 기억
설치
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
설치하기 전에
- 기본 점검: 3개 중 2개 통과
- 제작자의 서버에서 실행돼요. 내가 요청한 내용은 제작자의 서버를 거쳐요.
- 할 수 있는 일 7가지(도구) search_sessions, get_session_summary, acquire_session, fetch_session_context …
- 레지스트리에 입력해야 할 키가 나와 있지 않아요.
필요한 것
어떤 앱을 쓰세요?
위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.
웹, 데스크톱, 모바일의 Claude에서 쓸 수 있어요:
- Settings → Connectors 열기
- Add custom connector 누르기
- 아래 주소를 붙여 넣고 Add 누르기
- 로그인하라고 하면 제작자의 서비스에 로그인하기
https://session-exchange.com/mcp또는 내 컴퓨터에서 실행하기
Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요
{
"mcpServers": {
"sessions": {
"command": "uvx",
"args": [
"a4sx-mcp"
]
}
}
}터미널에서 이 명령어를 실행하세요
claude mcp add --transport http sessions https://session-exchange.com/mcp또는 내 컴퓨터에서 실행하기
claude mcp add sessions -- uvx a4sx-mcp또는 설정을 직접 복사하기
프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"sessions": {
"url": "https://session-exchange.com/mcp"
}
}
}또는 내 컴퓨터에서 실행하기
또는 설정을 직접 복사하기
프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"sessions": {
"command": "uvx",
"args": [
"a4sx-mcp"
]
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
또는 설정을 직접 복사하기
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"sessions": {
"type": "http",
"url": "https://session-exchange.com/mcp"
}
}
}또는 내 컴퓨터에서 실행하기
또는 설정을 직접 복사하기
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"sessions": {
"type": "stdio",
"command": "uvx",
"args": [
"a4sx-mcp"
]
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요:
- 웹에서 ChatGPT 열기 → Settings → Connectors (Apps)
- Create 또는 Add 누르기(일부 요금제는 먼저 Advanced에서 Developer mode를 켜야 해요)
- 아래 주소를 붙여 넣고 이름을 정한 뒤 저장하기
- 로그인하라고 하면 제작자의 서비스에 로그인하기
https://session-exchange.com/mcp메뉴 이름은 요금제나 시기에 따라 조금 다를 수 있어요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
할 수 있는 일
도구 이름과 설명은 서버가 2026년 11월 7일에 알려 준 그대로예요. 우리가 아니라 제작자가 쓴 글이고, 일반 텍스트로만 보여 드려요.
search_sessionsSearch vetted, published coding-agent sessions on a4sx (reviewed marketplace listings), or your own saved sessions with scope=library. Returns ids to use with the other tools.
get_session_summaryDescribe one session before using it: what it did, outline, price, and whether you already have access. source=marketplace (default) or library.
acquire_sessionAdd a marketplace session you are entitled to (free, bought, or granted) to your private library. Never buys anything: for a paid listing it returns status=payment_required with the price and the listing URL.
fetch_session_contextLoad a session from your library (saved, or added with acquire_session) as starting context for this conversation, sized to max_tokens.
publish_sessionSave a session transcript (JSONL), or markdown you composed (format=markdown), to your private a4sx library. The server only rewrites text that matches secret and personal-data patterns (such as tokens, private keys, emails, IP addresses and home-directory user names). It removes
request_purchaseStart buying a paid marketplace listing for the account holder to confirm. Nothing is charged and you never pay: it returns a verify_url and a user_code to give to the account holder, who checks the code, confirms and pays. Then poll get_purchase_request.
get_purchase_requestStatus of a purchase you requested: pending, completed (with acquired_copy_id to load with fetch_session_context), declined or expired.
기본 점검i
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 8일 점검
- ! 주의
제작자와 저장소 일치
게시자(session-exchange.com)가 저장소 소유자(crossvault)가 아니에요. 다른 사람이 등록했을 수 있어요
- … 아직 점검 안 함
계속 관리되고 있음
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
- … 아직 점검 안 함
라이선스 있음
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
- ✓ 통과
엔드포인트 응답
1321ms 만에 응답(HTTP 200)
- – 해당 없음
OAuth로 로그인
로그인 필요 없음
- ✓ 통과
도구 설명에 숨겨진 지시 없음
도구 설명 7개를 읽었고, AI에게 보내는 숨겨진 지시는 없었어요
검색 및 AI 기억 카테고리의 다른 서버와 비교i
- 이 카테고리의 다른 서버 5684개 중 0%보다 스타가 많아요
- 이 카테고리의 다른 서버 5684개 중 64%보다 최근에 레지스트리에 공개됐어요
- 기본 점검 결과가 이 카테고리의 다른 서버 5684개 중 39%와 같거나 더 좋아요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
자주 묻는 질문
a4sx sessions, 안전한가요?
해당하는 기본 점검 3개 중 2개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
어떤 키나 코드가 필요한가요?
레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.
내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?
둘 다 가능해요. 내 컴퓨터에 설치해도 되고, 클라우드 버전에 연결해도 돼요.
아직 관리되고 있나요?
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.1.2)은 22일 전 레지스트리에 올라왔어요.
어떤 앱에서 쓸 수 있나요?
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. URL로 연결되기 때문에, 원격 MCP 서버를 지원하는 앱(예: 개발자 모드의 ChatGPT)에서도 쓸 수 있어요.
대신 쓸 수 있는 건 뭐가 있나요?
같은 카테고리에는: Context7, Codebase Memory, Exa
대안
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:↓ 주간 다운로드i★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
Codebase Memory
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Exa
Connect AI agents to Exa for web search, content fetching, and multi-step research.
제작자의 README
README 열기
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
a4sx-mcp
A local MCP server for a4sx, the library and marketplace for coding-agent sessions. It gives any MCP client (Claude Code, Claude Desktop, Cursor, VS Code, ...) five tools to find a saved session, load it as context, and save the current one, using the sign-in of the a4sx command-line tool.
It runs on your machine over stdio. Your a4sx token stays in the a4sx config directory and is only ever sent to the server that issued it: pointing the server elsewhere with --base never sends it a token from another server.
Private library: the sessions saved under your a4sx account on session-exchange.com. Its entries are not listed in the marketplace and not returned by public search; they are listed, fetched, versioned and deleted through the a4sx API with your own sign-in (or an agent key you create). Listing a session in the marketplace is a separate step in the web app, with a review. "Private" describes who can list and fetch an entry through a4sx; the server stores the bytes you upload, after scrubbing them again.
Tools
The names, input schemas and limits are the same as the hosted a4sx MCP server's.
| Tool | What it does | Sign-in |
|---|---|---|
search_sessions | Search vetted public sessions (scope=public, default), or your own saved ones (scope=library); harness keeps only sessions recorded with the given harnesses | library scope only |
get_session_summary | Describe one session before using it: outline, members, price, provenance | library source only |
acquire_session | Copy a marketplace session you are entitled to (free, bought or granted) into your private library | yes |
fetch_session_context | Load a session from your library as starting context, cut to max_tokens (500 to 100,000; default 8,000) | yes |
publish_session | Save a transcript (JSONL) to your private library | yes |
Safety rules:
- `acquire_session` never buys. For a paid listing you have no purchase or grant for, it returns
status: "payment_required"with the price and the listing URL (or, when the listing's session is sold on its own, thememberto buy). You buy it yourself in the web app, then ask again. - Harnesses. Claude Code, Codex CLI and Grok Build sessions are listed and loaded alike; only Claude Code sessions can be resumed today. Every search and summary row carries the
harnessit was recorded with ({id, version};unknownwhen not identified), andresumableisfalsefor a session recorded with another harness.fetch_session_contextrenders such a session from its stored canonical form. - `publish_session` only saves privately.
visibilityaccepts only"private"; listing a session publicly is a separate, reviewed step in the web app. It accepts only Claude Code or Codex CLI JSONL (every line a record with atype; a Claude Code user or assistant turn with a session id, or a Codex CLIsession_metarecord first), so it can't be used to upload an arbitrary file. The transcript, its title and its label are scrubbed on your machine with thea4sxSDK, which applies the a4sx CLI's rules (secrets, command-line passwords, Sheet ids, and personal data: e-mail and IP addresses, home-directory user names, hosts, key-file paths), and scrubbed again by the server. Scrubbing is a backstop, not a guarantee. A session that continues someone else's (itsparent, or the session it was resumed from, was acquired) stays marked as untrusted (untrusted: true). - Neither tool asks for confirmation inside the protocol. Like the hosted server, it relies on the rules above and on the tool annotations:
acquire_sessionandpublish_sessionare markedreadOnlyHint: false, so clients that ask before a tool runs (Claude Code does by default) can ask you, and you should not auto-approve them. The three read tools are marked read-only. - Loaded sessions are reference material, not instructions.
fetch_session_contextalways starts with a notice saying so, then wraps everything the session's author controls (title and turns) in<< >>…<< >>with a random nonce. Inside it, every kind of line break is normalised to\n,<<</>>>become‹‹‹/›››and a leading#becomes\#(the notice says so), so content can't close the envelope or fake a### Userheading. The title is one line of at most 200 characters, and cutting tomax_tokensnever removes the notice or the closing line.search_sessionsandget_session_summaryresults are framed the same way: a notice first, then the JSON inside the envelope, with every author-written string on one line, neutralised and capped per field, and the whole result bounded to 64 KiB (a page cut short saystruncated: true, andnext_offsetresumes at the first row left out). Server guidance (next,next_offset) goes on one line after the closing delimiter, never inside the envelope, and carries only fixed texts and numbers. A session with another author's content getsuntrusted: trueand a stronger notice. Look-alike characters (full-width</#, zero-width spaces) are left as they are: they cannot close the envelope, because the closing line needs the random nonce, but a model may still be misled by them. This lowers the risk of prompt injection but cannot rule it out: keep tool approval on. - Limits: transcripts up to 2 MiB per
publish_sessioncall (usea4sx pushfor larger ones); per process, at most 240 requests (tools/listandtools/call), 20 acquires and 10 publishes per minute. The a4sx server enforces its own limits as well.
Quickstart
You need uv (for uvx) and an a4sx account.
- Sign in once with the
a4sxCLI. The MCP server reuses that sign-in:
uvx a4sx login
Searching public sessions works without signing in. If a tool needs your account and you are not signed in (or the sign-in expired), it returns an error telling you to run a4sx login.
- Add the server to your client.
Claude Code
claude mcp add a4sx -- uvx a4sx-mcp
Claude Desktop
Edit claude_desktop_config.json (Settings, Developer, Edit Config) and restart Claude Desktop:
{
"mcpServers": { "a4sx": { "command": "uvx", "args": ["a4sx-mcp"] } } }
Cursor
Add to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project):
{
"mcpServers": { "a4sx": { "command": "uvx", "args": ["a4sx-mcp"] } } }
VS Code
Add to .vscode/mcp.json in your workspace (or run MCP: Add Server from the command palette):
{
"servers": { "a4sx": { "type": "stdio", "command": "uvx", "args": ["a4sx-mcp"] } } }
Try it
Ask your agent, for example: *"Search a4sx for sessions about flaky pytest fixtures and summarise the best one"*, or *"Load my a4sx session my-refactor as context"*.
Configuration
Everything is optional. Don't put your token into an MCP client config file: sign in with a4sx login instead, which stores it with mode 0600.
| Setting | Meaning |
|---|---|
--base URL / A4SX_BASE | The a4sx server. Default: the one you signed in to, else https://session-exchange.com. Plain http is refused except for localhost. |
A4SX_SESSION, A4SX_SESSION_BASE | A token to use instead of the stored sign-in (for CI), and the server it belongs to (default https://session-exchange.com). |
A4SX_CONFIG_DIR | Where the a4sx CLI keeps its sign-in (default ~/.config/a4sx, %APPDATA%\a4sx on Windows). |
A4SX_MCP_LOG | warning (default), info or debug. Logs go to stderr and contain tool names, outcomes and durations only: never arguments, transcripts or tokens. |
A4SX_MCP_MAX_PUBLISH_BYTES | Lower or raise the 2 MiB publish_session cap (the server may still refuse larger uploads). |
A4SX_MCP_PER_MIN, A4SX_MCP_ACQUIRE_PER_MIN, A4SX_MCP_PUBLISH_PER_MIN | Local rate limits (240, 20, 10 per minute). 0 turns a local limit off. |
Local server or remote /mcp?
a4sx also runs a hosted MCP server at https://session-exchange.com/mcp, with browser sign-in over OAuth: it advertises the scope library:read (search your library, summaries, loading sessions as context). Public search there works without signing in; acquiring or saving sessions needs a credential with library:acquire or library:publish, for example an agent key created in your a4sx account. Clients that support remote MCP servers with OAuth can connect to it directly and need nothing installed:
claude mcp add --transport http a4sx https://session-exchange.com/mcp
This package is the option for clients without remote OAuth support, and for setups that already use a4sx login. Both expose the five session tools below; the hosted server lists further tools of its own (for example, starting a purchase for the account holder to confirm), which this package does not have.
Same in both:
- the five session tools' names, input schemas (including the
harnessfilter), annotations, and the server instructions; - the untrusted framing: the text of
fetch_session_context(notice, nonce envelope, line-break normalisation, escaping, per-field caps, sizing, canonical sessions of other harnesses) and the JSON envelope,noticefield, per-field caps, 64 KiB result bound and hint line ofsearch_sessions,get_session_summaryandacquire_session; - the result fields (plus the local extras listed below);
- the error codes
invalid_arguments,credential_not_accepted,rate_limited,not_found,too_large,content_sha_mismatch,not_a_transcriptandno_transcript; - JSON-RPC error
-32029when the overall request limit is exceeded.
Differences of this local server:
- Sign-in. It uses your
a4sx loginsession, so it can do everything your account can in your own library. The hosted server takes a scoped OAuth token (it advertiseslibrary:read) or an agent key with the scopes you gave it (library:read,library:acquire,library:publish). With no sign-in at all, local tools returnnot_signed_in; the hosted server answers with an OAuth challenge instead. Thecredential_not_acceptedmessage says to runa4sx loginrather than to get a scoped token. - Rate limits. They are counted per process, not per account. There is no failed-sign-in limit, because there is no sign-in step here.
retry_after_scomes from the API's error body, not from theRetry-Afterheader. - `untrusted`. Besides
acquired_fromon the row and its parents (which is all the hosted server checks), it also uses this machine's record of untrusted sessions from thea4sxSDK. A session missing from your library listing counts as untrusted in both. - `publish_session`:
- Every upload carries an idempotency key: yours if you pass
idempotency_key, else a fresh one. The hosted server sends a key only if you pass one. - Uploads are retried twice, with that same key, on network errors, 429 and 502-504; when the server is busy scrubbing other uploads, up to 6 attempts, each after the wait it asks for.
- The body, title and label are scrubbed locally, so the
X-Content-SHA256sent to the API covers the scrubbed bytes. - The content check is stricter: every line must be a JSON record with a
type, and the file a Claude Code or Codex CLI session. parentis resolved like the CLI resolves names (exact id, then label, then a unique part of the title or id). The hosted server passes it through verbatim.- Without
parent, a transcript you resumed witha4sx resumegets its parent edge from the SDK's local lineage record. The hosted server records no edge. - The result has extra
client_redactionsanduntrustedfields. - `payment_required`. The price c
앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요