Docs
Connect your agent
ashare is an MCP server at https://ashare.net/mcp, a CLI and a REST API. Pick the client you use. Each one either signs in through the browser or takes an API key from your API page.
- Sign in: the client opens ashare in your browser, you enter the 6-digit code from the email and press Allow. No key to copy.
- Key: create one on your API page and send
Authorization: Bearer <key>. For the plugin, scripts, CI and clients that cannot sign in.
The same instructions in plain text, ready to paste into a prompt.
Checked against each client’s documentation on 23 October 2026.
Claude Code plugin
The MCP server plus a skill for the whole loop: publish, send you the link, collect comments, fix, reply, resolve. The skill asks you who should see a document before it publishes. It reads the key from ASHARE_API_KEY.
export ASHARE_API_KEY=<key>
claude plugin marketplace add Magir/ashare-plugin
claude plugin install ashare@ashareThen ask Claude: “publish this report to ashare and send me the link”. Source: github.com/Magir/ashare-plugin.
Put the export in your shell profile and restart Claude Code: without the key the server answers 401 and the ashare tools do not show up. If you added ashare by hand with claude mcp add, Claude Code uses that server and the plugin’s copy stays idle, since both point at the same URL. The skill works with either.
Claude Code MCP
Just the server, without the skill, in every project:
claude mcp add -s user --transport http ashare https://ashare.net/mcpRun /mcp in Claude Code, pick ashare and sign in in the browser. With a key instead:
claude mcp add -s user --transport http ashare https://ashare.net/mcp --header "Authorization: Bearer <key>"Works in interactive sessions, claude -p and the Agent SDK. For claude -p in one repository, put this .mcp.json in it and set ASHARE_API_KEY:
{
"mcpServers": {
"ashare": {
"type": "http",
"url": "https://ashare.net/mcp",
"headers": { "Authorization": "Bearer ${ASHARE_API_KEY}" }
}
}
}claude.ai and Claude Desktop
Customize → Connectors → + Add → Add custom connector
Name: ashare
URL: https://ashare.net/mcp
Authentication: Sign in when needed
OAuth client: Register automaticallyAdd, then Connect: sign in with your email and Allow. Claude Desktop takes connectors from your Claude account, so there is nothing to set up there. Disconnect it any time on your API page.
Pick “Register automatically”, not “Use Claude’s published identity”: ashare registers clients on the fly and does not know that identity. With a key: Authentication “No sign in”, Request headers Authorization: Bearer <key>. Team and Enterprise: an owner adds the connector in Organization settings → Connectors → Add → Custom → Web, members press Connect. The Free plan of Claude has one custom connector.
Codex CLI
codex mcp add ashare --url https://ashare.net/mcp
codex mcp login asharelogin opens the browser to sign in. With a key, in ~/.codex/config.toml or in .codex/config.toml of a trusted project:
[mcp_servers.ashare]
url = "https://ashare.net/mcp"
bearer_token_env_var = "ASHARE_API_KEY"Export ASHARE_API_KEY=<key> before you start Codex.
Cursor
{
"mcpServers": {
"ashare": { "url": "https://ashare.net/mcp" }
}
}Or .cursor/mcp.json in a project. Cursor registers itself and signs in with OAuth: ashare opens in the browser. With a key, add a header. Cursor reads ASHARE_API_KEY from the environment it was started in; remote servers take no envFile.
{
"mcpServers": {
"ashare": {
"url": "https://ashare.net/mcp",
"headers": { "Authorization": "Bearer ${env:ASHARE_API_KEY}" }
}
}
}OpenCode
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"ashare": { "type": "remote", "url": "https://ashare.net/mcp", "enabled": true }
}
}In the project root, or ~/.config/opencode/opencode.json. OpenCode offers to sign in on first use; opencode mcp auth ashare does it right away. With a key, turn OAuth off and add a header:
"ashare": {
"type": "remote",
"url": "https://ashare.net/mcp",
"oauth": false,
"headers": { "Authorization": "Bearer {env:ASHARE_API_KEY}" }
}Gemini CLI
gemini mcp add -s user -t http ashare https://ashare.net/mcpThen /mcp auth ashare in Gemini CLI signs in through the browser. The browser comes back to localhost, so over SSH use a key:
gemini mcp add -s user -t http -H "Authorization: Bearer <key>" ashare https://ashare.net/mcpBoth write ~/.gemini/settings.json. By hand, under mcpServers:
"ashare": { "httpUrl": "https://ashare.net/mcp", "headers": { "Authorization": "Bearer <key>" } }ChatGPT
chatgpt.com/plugins → + → Add custom MCP server
Name: ashare
Connection: https://ashare.net/mcp
Authentication: OAuthThen “I understand and want to continue”, Create as a plugin, sign in to ashare and Allow. ChatGPT sends no API keys: sign-in only. Your plan and workspace policy decide whether custom MCP servers are available.
VS Code with Copilot
MCP: Add Server → HTTP → https://ashare.net/mcp → ID ashare → Global → Copilot GlobalVS Code registers itself with ashare and opens the browser to sign in. With a key: .vscode/mcp.json, or the file from MCP: Open User Configuration. VS Code asks for the key on first start and stores it securely:
{
"inputs": [
{ "type": "promptString", "id": "ashare-key", "description": "ashare API key", "password": true }
],
"servers": {
"ashare": {
"type": "http",
"url": "https://ashare.net/mcp",
"headers": { "Authorization": "Bearer ${input:ashare-key}" }
}
}
}Windsurf
Windsurf is Devin Desktop since June 2026. Cascade panel → … → MCPs → Open MCP config file, that is ~/.config/devin/mcp_config.json, on Windows %APPDATA%\devin\mcp_config.json:
{
"mcpServers": {
"ashare": { "serverUrl": "https://ashare.net/mcp" }
}
}Cascade signs in to remote servers with OAuth. With a key, add "headers": { "Authorization": "Bearer ${env:ASHARE_API_KEY}" } next to serverUrl. The Devin Local agent reads the Devin CLI config instead.
stdio-only clients
A client that runs only local servers reaches ashare through mcp-remote, a local proxy that signs in for it:
{
"mcpServers": {
"ashare": { "command": "npx", "args": ["-y", "mcp-remote", "https://ashare.net/mcp"] }
}
}Sign-in opens the browser, tokens stay in ~/.mcp-auth. With a key, pass the header through an environment variable: some clients break arguments with spaces.
"ashare": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://ashare.net/mcp", "--header", "Authorization:${AUTH_HEADER}"],
"env": { "AUTH_HEADER": "Bearer <key>" }
}Keys and connected apps
Create and revoke keys on your API page. A key is shown once, right after you create it; ashare keeps only its hash. A revoked key gets 401 at once. A key sees and changes only your documents.
Apps you allowed with Sign in, like claude.ai or Claude Code, are listed there too. Disconnect signs one out at once.