Connect your assistant
Step by step setup for Claude, ChatGPT, Cursor, VS Code, Windsurf, Zed and your own code.
Which setup should I use?
| Assistant | Free tools only | All tools |
|---|---|---|
| Claude.ai and Claude Desktop | Connector with https://seoaudit.imvasa.dev/mcp | Connector with https://seoaudit.imvasa.dev/mcp/account, then sign in |
| ChatGPT | Connector with https://seoaudit.imvasa.dev/mcp, no authentication | Connector with https://seoaudit.imvasa.dev/mcp/account and OAuth |
| Claude Code, Cursor, VS Code, Windsurf, Zed | Server address with no header | Server address plus your API key header |
| Your own code | Any MCP client, no header | Any MCP client plus your API key header |
To use every tool, create an API key first in Dashboard, API Access, unless you are using Claude.ai, Claude Desktop or ChatGPT, where you sign in instead.
Claude
Claude.ai and Claude Desktop, by signing in
- Open Settings, Connectors and choose Add custom connector.
- Paste
https://seoaudit.imvasa.dev/mcp/accountand press Connect. - Claude opens IMVASA. Sign in and click Allow.
- In a chat, make sure the IMVASA connector is switched on, then ask it to audit a page.
For the free tools without signing in, paste https://seoaudit.imvasa.dev/mcp instead.
Claude Code
Run this in your terminal, with your key:
claude mcp add --transport http imvasa https://seoaudit.imvasa.dev/mcp \
--header "Authorization: Bearer imv_your_api_key"Leave out the --header line to use only the free tools.
Claude Desktop with an API key instead
If you prefer a key to signing in, edit Claude Desktop's config file (Settings, Developer, Edit Config). This uses the mcp-remote bridge, which needs Node.js installed:
{
"mcpServers": {
"imvasa": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://seoaudit.imvasa.dev/mcp", "--header", "Authorization:${IMVASA_AUTH}"],
"env": { "IMVASA_AUTH": "Bearer imv_your_api_key" }
}
}
}The file lives at ~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows and ~/.config/Claude/claude_desktop_config.json on Linux. Restart Claude Desktop after saving.
ChatGPT
- Open Settings, Apps and Connectors, turn on developer mode, and choose Create.
- Paste
https://seoaudit.imvasa.dev/mcp/accountas the server address and choose OAuth for authentication. - Save. ChatGPT opens IMVASA: sign in and click Allow.
- In a new chat, enable the connector and ask it to audit a page.
For the free tools without signing in, use https://seoaudit.imvasa.dev/mcp with no authentication.
Note: ChatGPT's connector menus change from time to time and custom connectors may depend on your plan. If the names above do not match, look for "connectors" or "developer mode" in ChatGPT's settings.
Cursor
Add this to ~/.cursor/mcp.json for all projects, or .cursor/mcp.json in one project:
{
"mcpServers": {
"imvasa": {
"url": "https://seoaudit.imvasa.dev/mcp",
"headers": { "Authorization": "Bearer imv_your_api_key" }
}
}
}Leave out headers for the free tools only.
VS Code
VS Code has built-in MCP support. Add this to .vscode/mcp.json in your project:
{
"servers": {
"imvasa": {
"type": "http",
"url": "https://seoaudit.imvasa.dev/mcp",
"headers": { "Authorization": "Bearer imv_your_api_key" }
}
}
}Extensions with their own MCP settings, such as Cline, take the same address and header.
Windsurf
Add this to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"imvasa": {
"serverUrl": "https://seoaudit.imvasa.dev/mcp",
"headers": { "Authorization": "Bearer imv_your_api_key" }
}
}
}Zed
In Zed's settings.json, add:
{
"context_servers": {
"imvasa": {
"url": "https://seoaudit.imvasa.dev/mcp",
"headers": { "Authorization": "Bearer imv_your_api_key" }
}
}
}Your own code
Any MCP client that supports the Streamable HTTP transport can connect. With the official TypeScript SDK:
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
// The header is only needed for tools that use your account.
const transport = new StreamableHTTPClientTransport(new URL("https://seoaudit.imvasa.dev/mcp"), {
requestInit: { headers: { Authorization: "Bearer imv_your_api_key" } },
});
const client = new Client({ name: "my-agent", version: "1.0.0" });
await client.connect(transport);
const result = await client.callTool({
name: "find_issues",
arguments: { url: "https://example.com" },
});With the official Python SDK:
import asyncio
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
HEADERS = {"Authorization": "Bearer imv_your_api_key"}
async def main():
async with streamablehttp_client("https://seoaudit.imvasa.dev/mcp", headers=HEADERS) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
result = await session.call_tool("find_issues", arguments={"url": "https://example.com"})
print(result.content[0].text)
asyncio.run(main())Any other client
Point the client at https://seoaudit.imvasa.dev/mcp. It must send these headers, which real MCP clients do automatically:
Accept: application/json, text/event-stream
Content-Type: application/json
Authorization: Bearer imv_your_api_key (only for tools that use your account)The protocol reference has raw request examples.
Check that it works
Ask your assistant: "Use IMVASA to list the countries you support." It should call list_locations and answer with a list. Then try "What is my IMVASA credit balance?" to confirm your account is connected. If something fails, see Troubleshooting.