Sage MCP
An academic research server that provides LLMs with full-text search and retrieval access to academic papers and periodicals. It enables research-grounded responses through features like topic filtering and programmatic database expansion.
README
Sage MCP - Academic Research Server
An MCP (Model Context Protocol) server that provides LLMs with access to academic papers and periodicals for research-grounded responses.
Features
- Full-text search across papers using SQLite FTS5
- Topic/publication filtering for targeted research
- Paper retrieval with full content for detailed analysis
- Extensible database - add your own papers programmatically
Tools Available
| Tool | Description |
|---|---|
search_papers |
Semantic/keyword search across all papers |
get_paper |
Retrieve full paper content by ID |
list_topics |
Browse available research topics |
list_publications |
Browse available journals/sources |
get_papers_by_topic |
Filter papers by topic |
get_papers_by_publication |
Filter papers by journal |
add_paper |
Add new papers to the database |
Quick Start (Local Setup)
Prerequisites
- Node.js 18+ (recommended: 20 LTS)
- npm 9+
1. Clone/Download and Install
cd C:\AIapps\SageMCP # or your chosen directory
npm install
npm run build
2. Seed the Database
# Option A: Sample papers (10 ML/AI papers)
npm run seed
# Option B: Import from XML (if you have papers_database.xml)
npm run import-xml
3. Verify Installation
npm start
# Should output: "Sage MCP Server running on stdio"
# Press Ctrl+C to stop
Connecting to MCP Clients
Claude Desktop (Windows)
-
Locate config file:
%APPDATA%\Claude\claude_desktop_config.jsonUsually:
C:\Users\<YourName>\AppData\Roaming\Claude\claude_desktop_config.json -
Edit the config (create if doesn't exist):
{ "mcpServers": { "sage": { "command": "node", "args": ["C:/AIapps/SageMCP/dist/index.js"] } } } -
Restart Claude Desktop completely (quit from system tray, reopen)
-
Verify connection: Look for the hammer 🔨 icon in Claude's chat input - click it to see available tools
Claude Desktop (macOS)
-
Config location:
~/Library/Application Support/Claude/claude_desktop_config.json -
Config content:
{ "mcpServers": { "sage": { "command": "node", "args": ["/Users/<you>/path/to/SageMCP/dist/index.js"] } } }
Windsurf / Cascade
Add to your MCP settings (Settings → MCP Servers):
{
"sage": {
"command": "node",
"args": ["C:/AIapps/SageMCP/dist/index.js"]
}
}
Cline (VS Code Extension)
- Open VS Code settings
- Search for "Cline MCP"
- Add server configuration:
{ "sage": { "command": "node", "args": ["C:/AIapps/SageMCP/dist/index.js"] } }
Custom MCP Client (Programmatic)
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
const transport = new StdioClientTransport({
command: 'node',
args: ['C:/AIapps/SageMCP/dist/index.js'],
});
const client = new Client({ name: 'my-client', version: '1.0.0' }, {});
await client.connect(transport);
// List available tools
const tools = await client.listTools();
console.log(tools);
// Call a tool
const result = await client.callTool({
name: 'search_papers',
arguments: { query: '神å¸', limit: 5 }
});
console.log(result);
Configuration
Environment Variables
| Variable | Description | Default |
|---|---|---|
SAGE_DB_PATH |
Custom database file path | ./data/sage.db |
Example with custom DB path:
{
"mcpServers": {
"sage": {
"command": "node",
"args": ["C:/AIapps/SageMCP/dist/index.js"],
"env": {
"SAGE_DB_PATH": "D:/Research/my_papers.db"
}
}
}
}
Adding Your Own Papers
Via the MCP Tool
LLMs can use the add_paper tool directly to add papers.
Via XML Import
Place your XML file in data/ and run:
npm run import-xml -- ./data/your_papers.xml
Programmatically
import { initDb, addPaper } from './dist/db.js';
await initDb();
addPaper({
title: 'Your Paper Title',
authors: 'Author One, Author Two',
abstract: 'Paper abstract...',
content: 'Full paper content...',
publication: 'Journal Name',
publication_date: '2024-01-15',
doi: '10.1234/example',
url: 'https://example.com/paper',
topics: 'Topic1, Topic2',
keywords: 'keyword1, keyword2, keyword3'
});
Database Schema
Papers are stored in SQLite with full-text search indexing:
| Field | Type | Description |
|---|---|---|
id |
INTEGER | Auto-incrementing primary key |
title |
TEXT | Paper title |
authors |
TEXT | Comma-separated author list |
abstract |
TEXT | Paper abstract |
content |
TEXT | Full paper text |
publication |
TEXT | Journal/conference name |
publication_date |
TEXT | Publication date (YYYY-MM-DD) |
doi |
TEXT | DOI identifier (optional) |
url |
TEXT | URL to paper (optional) |
topics |
TEXT | Comma-separated topics |
keywords |
TEXT | Comma-separated keywords |
VPS Deployment
Single command deploys everything (from your local machine):
# Windows PowerShell
.\deploy\deploy.ps1 -VpsHost "user@your-vps.com"
# Linux/macOS
./deploy/deploy.sh user@your-vps.com
This automatically:
- Installs Node.js and dependencies on VPS
- Creates
sageuser and directories - Copies source files and database
- Builds the project
- Sets up and starts systemd service
Uninstall:
# Windows
.\deploy\uninstall.ps1 -VpsHost "user@your-vps.com"
# Linux/macOS (or directly on VPS)
./deploy/uninstall.sh
See deploy/README.md for detailed options and troubleshooting.
Troubleshooting
"Cannot find module" errors
npm run build # Rebuild TypeScript
Claude Desktop doesn't show tools
- Check config JSON syntax (use a JSON validator)
- Ensure path uses forward slashes:
C:/path/to/filenotC:\path\to\file - Restart Claude Desktop completely (quit from system tray)
- Check Claude's logs:
%APPDATA%\Claude\logs\
Database errors
# Reset database
rm -rf data/sage.db
npm run seed # or npm run import-xml
Test MCP server manually
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | node dist/index.js
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
E2B
Using MCP to run code via e2b.