Client setup
Connect Claude Code, Claude, ChatGPT, Cursor, VS Code, Windsurf, Codex or Gemini CLI to the BetterFans Link MCP server.
Every client connects to the same URL. The Developers, then MCP page of the dashboard shows the same steps with the URL filled in.
https://mcp.betterfans.link/mcpEach client below can sign in with OAuth, and most can send an API key instead. Signing in is simpler on your own machine. Use a key for agents that run unattended, or to limit the agent to some accounts with an allow-list. The key examples read it from a BFL_KEY environment variable, so it never sits in the config file. See signing in.
Start in test mode. Pick Test on the consent page, or use a bfl_test_ key.
Claude Code
claude mcp add --transport http betterfans-link https://mcp.betterfans.link/mcpWith OAuth, start Claude Code, run /mcp, pick betterfans-link and sign in. Add --scope user to the command to use the server in every project, not only the current one.
Claude.ai and Claude Desktop
- Open Settings, then Connectors.
- Choose Add custom connector. Name it BetterFans Link and paste the server URL.
- Choose Connect and approve access on the page that opens.
- In a chat, turn the connector on from the tools menu.
Connectors added on Claude.ai also show up in Claude Desktop and the mobile apps. On Team and Enterprise plans, an organization owner may have to add the connector before members can connect. Claude connectors sign in with OAuth only.
ChatGPT
- Open Settings, then Apps, then Advanced settings, and turn on developer mode.
- Create an app. Name it BetterFans Link, paste the server URL and pick OAuth for authentication.
- Approve access on the page that opens.
- In a chat, turn the app on from the tools menu.
Write tools are marked as not read only, so ChatGPT may ask you to confirm before it calls one. That confirmation only lets it create the pending action. A person still approves the write in BetterFans Link.
Cursor
Add the server to ~/.cursor/mcp.json, or to .cursor/mcp.json in one project.
{
"mcpServers": {
"betterfans-link": {
"url": "https://mcp.betterfans.link/mcp"
}
}
}With OAuth, sign in when Cursor asks.
VS Code
Add the server to .vscode/mcp.json in a project.
{
"servers": {
"betterfans-link": {
"type": "http",
"url": "https://mcp.betterfans.link/mcp"
}
}
}To add it for every project instead, run this in a terminal:
code --add-mcp '{"name":"betterfans-link","type":"http","url":"https://mcp.betterfans.link/mcp"}'Start the server from the file or the command palette. With OAuth, sign in when VS Code asks. With a key, VS Code asks for it once and stores it securely.
Windsurf
Add the server to ~/.codeium/windsurf/mcp_config.json.
{
"mcpServers": {
"betterfans-link": {
"serverUrl": "https://mcp.betterfans.link/mcp"
}
}
}Refresh the MCP servers in Cascade. With OAuth, sign in when Windsurf asks.
Codex
Add the server to ~/.codex/config.toml.
[mcp_servers.betterfans-link]
url = "https://mcp.betterfans.link/mcp"With OAuth, sign in from a terminal:
codex mcp login betterfans-linkGemini CLI
Add the server to ~/.gemini/settings.json, or to .gemini/settings.json in one project.
{
"mcpServers": {
"betterfans-link": {
"httpUrl": "https://mcp.betterfans.link/mcp"
}
}
}With OAuth, start Gemini CLI and run /mcp auth betterfans-link.
Other clients
Any client that supports Streamable HTTP works. Give it the server URL, and either let it sign in with OAuth or have it send Authorization: Bearer with your key.
A client that only starts local servers can reach BetterFans Link through the mcp-remote bridge, which handles OAuth for it:
{
"mcpServers": {
"betterfans-link": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.betterfans.link/mcp"]
}
}
}Check the connection
Ask the agent "Which BetterFans Link accounts can you see?" It should call list_accounts and name your accounts, or the sandbox creators in test mode.
To look at the raw tools and responses, run the MCP Inspector with npx @modelcontextprotocol/inspector, choose Streamable HTTP and enter the server URL.
If the client cannot connect:
| What you see | What to do |
|---|---|
| The sign-in page never opens | Remove the server and add it again, then start the sign-in from the client's MCP menu. |
401 with a key | Check that the key starts with bfl_live_ or bfl_test_, has not been revoked, and that the variable is set where the client runs. Dashboard keys do not work here. |
| No accounts listed | The key's allow-list may leave them out, or the key is in the other mode. Test keys only see the sandbox creators. |
Write tools fail with missing_scope | Give the key the write scope, or connect again and approve write access. |