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.
Server definition
Section titled “Server definition”| Property | Value |
|---|---|
| Transport | Streamable HTTP |
| URL | https://mcp.scrive.com/mcp |
| Authentication | OAuth 2.0, authorization code with PKCE. Sign in with your Scrive account |
| Scope | full |
| Resource metadata | https://mcp.scrive.com/.well-known/oauth-protected-resource |
| Authorization server | https://oauth2.scrive.com |
| Sessions | Stateless, one request per call; no session id to keep |
Most clients accept one of these JSON shapes:
{ "mcpServers": { "scrive": { "type": "http", "url": "https://mcp.scrive.com/mcp" } }}{ "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.
OAuth details
Section titled “OAuth details”The server follows the MCP authorization specification. A client discovers everything it needs from two documents:
https://mcp.scrive.com/.well-known/oauth-protected-resource, which names the authorization server and the supported scope.https://oauth2.scrive.com/.well-known/oauth-authorization-server, which lists the endpoints:
| Endpoint | Value |
|---|---|
| Authorization | https://oauth2.scrive.com/oauth2/auth |
| Token | https://oauth2.scrive.com/oauth2/token |
| Revocation | https://oauth2.scrive.com/oauth2/revoke |
| PKCE | S256 |
Unauthenticated requests to /mcp get 401 with a WWW-Authenticate header pointing at the resource metadata, which is how clients start the flow.
Programmatic use
Section titled “Programmatic use”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 },});Test with the MCP Inspector
Section titled “Test with the MCP Inspector”npx @modelcontextprotocol/inspectorChoose 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.
Verify from a terminal
Section titled “Verify from a terminal”Check that the endpoint is up and advertising its authorization server:
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"]}Limits
Section titled “Limits”| Limit | Value |
|---|---|
| Tool calls | About 10 per 20 seconds per user; beyond that the server answers with a wait message |
| Request body | 44 MB, which bounds PDF uploads |
| Files on your computer | Not accessible. Uploads go through the file picker panel in clients that support MCP Apps |
