Skip to content
Scrive MCP

Connect any MCP client

The Scrive MCP is a standard remote MCP server using the Streamable HTTP transport and OAuth 2.0. Any client that supports remote servers with OAuth can use it: Cursor, VS Code, Windsurf, Zed, Cline, Continue, LibreChat, custom agents built on the MCP SDKs, and more.

PropertyValue
TransportStreamable HTTP
URLhttps://mcp.scrive.com/mcp
AuthenticationOAuth 2.0, authorization code with PKCE. Sign in with your Scrive account
Scopefull
Resource metadatahttps://mcp.scrive.com/.well-known/oauth-protected-resource
Authorization serverhttps://oauth2.scrive.com
SessionsStateless, one request per call; no session id to keep

Most clients accept one of these JSON shapes:

Claude Code, VS Code, Cline and others
{
"mcpServers": {
"scrive": {
"type": "http",
"url": "https://mcp.scrive.com/mcp"
}
}
}
Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"scrive": {
"url": "https://mcp.scrive.com/mcp"
}
}
}

VS Code uses servers instead of mcpServers in .vscode/mcp.json, and Windsurf uses serverUrl instead of url. On first use the client opens your browser for the Scrive sign-in.

The server follows the MCP authorization specification. A client discovers everything it needs from two documents:

  1. https://mcp.scrive.com/.well-known/oauth-protected-resource, which names the authorization server and the supported scope.
  2. https://oauth2.scrive.com/.well-known/oauth-authorization-server, which lists the endpoints:
EndpointValue
Authorizationhttps://oauth2.scrive.com/oauth2/auth
Tokenhttps://oauth2.scrive.com/oauth2/token
Revocationhttps://oauth2.scrive.com/oauth2/revoke
PKCES256

Unauthenticated requests to /mcp get 401 with a WWW-Authenticate header pointing at the resource metadata, which is how clients start the flow.

With the official MCP SDK you can connect from your own agent. Supply an OAuthClientProvider that stores tokens and opens the authorization URL for the user:

import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
const transport = new StreamableHTTPClientTransport(new URL('https://mcp.scrive.com/mcp'), {
authProvider: myOAuthProvider, // implements OAuthClientProvider from the SDK
});
const client = new Client({ name: 'my-agent', version: '1.0.0' });
await client.connect(transport);
const { tools } = await client.listTools();
const result = await client.callTool({
name: 'list_documents',
arguments: { status: ['pending'], max_results: 10 },
});
Terminal window
npx @modelcontextprotocol/inspector

Choose Streamable HTTP as the transport, enter https://mcp.scrive.com/mcp, open Authentication and run the OAuth flow, then Connect. The Inspector lists the tools and lets you call them.

Check that the endpoint is up and advertising its authorization server:

Terminal window
curl -s https://mcp.scrive.com/.well-known/oauth-protected-resource
# → {"resource":"https://mcp.scrive.com/mcp","authorization_servers":["https://oauth2.scrive.com"],"scopes_supported":["full"]}
LimitValue
Tool callsAbout 10 per 20 seconds per user; beyond that the server answers with a wait message
Request body44 MB, which bounds PDF uploads
Files on your computerNot accessible. Uploads go through the file picker panel in clients that support MCP Apps