The Scholar Gateway MCP connector routes your AI agent's tool calls to Scholar Gateway's own MCP server through Scalekit. Each user signs in to Scholar Gateway once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 1 tool.
- Tools
- 1
- What they doRead · write · destructive
- 1 · 0 · 01 read0 write0 destructive
- Users sign in with
- OAuth
- OAuth app
- Scalekit's or your own
What you can do
- Search academic literature: find relevant passages in full-text academic publications with citation details, filtered by publication year
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Scholar Gateway MCP connection
In AgentKit > Connections, create a Scholar Gateway MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Scalekit credentials are available for Scholar Gateway MCP server, so you don't need to register an OAuth app.
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'scholargateway'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Scholar Gateway MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'scholargateway_semanticSearch',toolInput: { query: 'YOUR_QUERY' },})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "scholargateway"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Scholar Gateway MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={"query":"YOUR_QUERY"},tool_name="scholargateway_semanticSearch",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolscholargateway_semanticSearchSearches a full-text academic corpus and returns relevant passages with citation metadata.Read-onlySemantic Search
Searches a full-text academic corpus and returns relevant passages with citation metadata. When to use: Use this tool for research questions, factual claims, literature-backed explanations, evidence-based summaries, and any response where academic support would improve accuracy, credibility, or depth. Submit queries as complete natural language questions — preserve the full intent and do not reduce to keywords. For ambiguous or polysemous terms, expand to full context before searching (e.g. use 'multiple sclerosis' not 'MS'). Cite all substantive claims inline using author-year format with DOI hyperlinks. When NOT to use: Do not use for general web searches, non-academic topics, or when the question requires real-time or proprietary data not covered by the academic corpus.
Inputs
querystringrequired- Natural language research question. Preserve intent, scope, and structure. Rewrite for semantic clarity but do not compress to keywords. Expand acronyms and add field context for ambiguous or polysemous terms.
end_yearstring- Inclusive upper bound for publication year filter. Omit to include publications up to the present.
includeRetractedContentboolean- Whether to include retracted publications in results. Default false; set true only when retraction history is itself the subject of inquiry.default
false start_yearstring- Inclusive lower bound for publication year filter. Omit to search across all available years.
topNinteger- Number of passages to return. Higher values improve recall for broad or multi-faceted queries; lower values are appropriate for narrow or well-defined topics.default
15
No tools match.