Compare LLM cost & latency on one prompt, translate PDF keeping layout, cited research, make PPTX
MCP Server: com.ainetcafe/ai-netcafe
The MCP server com.ainetcafe/ai-netcafe provides capabilities to compare LLM cost and latency for a single prompt, translate PDFs while keeping layout, and support cited research and PPTX generation. Its primary purpose is task execution around prompt evaluation and document transformation.
🛠️ Key Features
Compare LLM cost & latency on one prompt
Translate PDF while keeping layout
Provide cited research
Make PPTX
🚀 Use Cases
Benchmark LLM tradeoffs (cost vs latency) for a specific prompt
Convert or translate PDF content without losing formatting
Generate slide decks from cited research content
⚡ Developer Benefits
Single-prompt LLM comparison for quick evaluation
Layout-preserving PDF translation for document workflows
Outputs structured artifacts (PPTX) with research context
⚠️ Limitations
Described features do not specify supported file formats beyond PDF and PPTX.
List the open-source AI applications hosted and ready to run at AI NetCafé (ainetcafe.com). Each one normally requires local setup (Docker/Python + your own model API key); here they run pre-configured. Use this to find a tool for a task like translating a PDF with formulas intact, generating a PowerPoint file, polishing an academic paper, or running an autonomous research report.
Parameters1
category
string
optional
Optional filter, e.g. "office", "research", "chat".
Full details of one hosted application: what it does, how to use it, measured benchmark scores, source repository, and the URL a human can open to run it.
Send a prompt to one specific large language model and get the answer plus its exact cost in USD. Useful when you want a second opinion from a different model, or a cheaper model for a bulk subtask.
Parameters4
prompt
string
required
The prompt to send.
model
string
optional
Model id. Call list_models for available ids. Defaults to a cheap capable model.
system
string
optional
Optional system instruction.
max_tokens
integer
optional
Optional output cap.
Raw schema
{
"type": "object",
"properties": {
"prompt": {
"type": "string",
"description": "The prompt to send."
},
"model": {
"type": "string",
"description": "Model id. Call list_models for available ids. Defaults to a cheap capable model."
},
"system": {
"type": "string",
"description": "Optional system instruction."
},
"max_tokens": {
"type": "integer",
"description": "Optional output cap."
}
},
"required": [
"prompt"
]
}
compare_models
Run one prompt across multiple LLMs in parallel and return every answer side by side with its real measured cost and latency. This answers "which model should I actually use for this kind of task?" with data instead of guesswork — useful before committing a long job to an expensive model.
Parameters3
prompt
string
required
The prompt to send to every model.
models
array
optional
Model ids to compare (2-5). Defaults to a cheap/mid/strong spread.
system
string
optional
Optional system instruction applied to all.
Raw schema
{
"type": "object",
"properties": {
"prompt": {
"type": "string",
"description": "The prompt to send to every model."
},
"models": {
"type": "array",
"items": {
"type": "string"
},
"description": "Model ids to compare (2-5). Defaults to a cheap/mid/strong spread."
},
"system": {
"type": "string",
"description": "Optional system instruction applied to all."
}
},
"required": [
"prompt"
]
}
list_models
List every model callable through AI NetCafé with its input/output price per million tokens, so you can pick by cost as well as capability.
Parameters
No parameters.
Raw schema
{
"type": "object",
"properties": {}
}
deep_research
Start an autonomous web research task. The agent plans sub-questions, searches the web, reads the sources and writes a report with citations — this is real research, not a single model call, and takes 2-5 minutes. Returns a job_id immediately; poll check_job to get the report. Use this when you need sourced, current information rather than what a model already knows. Powered by gpt-researcher (29k stars) hosted at AI NetCafé.
Parameters2
topic
string
required
The research question. Phrase it as a question, not a keyword.
depth
string
optional
quick = outline only (~1 min); standard = full cited report (~3 min). Default standard.
Raw schema
{
"type": "object",
"properties": {
"topic": {
"type": "string",
"description": "The research question. Phrase it as a question, not a keyword."
},
"depth": {
"type": "string",
"enum": [
"quick",
"standard"
],
"description": "quick = outline only (~1 min); standard = full cited report (~3 min). Default standard."
}
},
"required": [
"topic"
]
}
check_job
Get the status or result of a job started by deep_research. Poll every 20-30 seconds until status is "done" or "error".
Parameters1
job_id
string
required
The job_id returned when the task was started.
Raw schema
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"description": "The job_id returned when the task was started."
}
},
"required": [
"job_id"
]
}
translate_pdf
Translate a PDF from a URL while preserving the original layout — formulas, figures and two-column academic typesetting stay intact, unlike ordinary translators that flatten the document. Returns a job_id; poll check_job for the download links (translated-only and bilingual side-by-side). Typically 20-60 seconds for a few pages. Powered by PDFMathTranslate (36k stars) hosted at AI NetCafé.
Parameters3
url
string
required
Direct URL to the PDF (e.g. an arXiv PDF link).
lang_to
string
optional
Target language, e.g. "Simplified Chinese", "Japanese". Default Simplified Chinese.
pages
string
optional
How much to translate. first = 1 page, first5 = first 5 pages (default), all = whole document (slow and expensive).
Raw schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Direct URL to the PDF (e.g. an arXiv PDF link)."
},
"lang_to": {
"type": "string",
"description": "Target language, e.g. \"Simplified Chinese\", \"Japanese\". Default Simplified Chinese."
},
"pages": {
"type": "string",
"enum": [
"first",
"first5",
"all"
],
"description": "How much to translate. first = 1 page, first5 = first 5 pages (default), all = whole document (slow and expensive)."
}
},
"required": [
"url"
]
}
make_slides
Turn a topic or an outline into a real downloadable .pptx file — not a link into someone's web editor. Returns a job_id; poll check_job for the download URL. Usually 1-3 minutes. Powered by Presenton (open source) hosted at AI NetCafé.
Parameters4
topic
string
required
The topic, or a full outline to follow.
slides
integer
optional
Number of slides (default 8).
language
string
optional
Output language, e.g. "Chinese", "English". Default Chinese.
instructions
string
optional
Optional extra guidance on style or emphasis.
Raw schema
{
"type": "object",
"properties": {
"topic": {
"type": "string",
"description": "The topic, or a full outline to follow."
},
"slides": {
"type": "integer",
"description": "Number of slides (default 8)."
},
"language": {
"type": "string",
"description": "Output language, e.g. \"Chinese\", \"English\". Default Chinese."
},
"instructions": {
"type": "string",
"description": "Optional extra guidance on style or emphasis."
}
},
"required": [
"topic"
]
}
Meeting Your Company's Privatization and Customization Deployment Requirements:
Brand Customization: Tailored VI/UI to seamlessly align with your corporate brand image.
Resource Integration: Unified configuration and management of dozens of AI resources by company administrators, ready for use by team members.
Permission Control: Clearly defined member permissions, resource permissions, and knowledge base permissions, all controlled via a corporate-grade Admin Panel.
Knowledge Integration: Combining your internal knowledge base with AI capabilities, making it more relevant to your company's specific business needs compared to general AI.
Security Auditing: Automatically intercept sensitive inquiries and trace all historical conversation records, ensuring AI adherence to corporate information security standards.
Private Deployment: Enterprise-level private deployment supporting various mainstream private cloud solutions, ensuring data security and privacy protection.
Continuous Updates: Ongoing updates and upgrades in cutting-edge capabilities like multimodal AI, ensuring consistent innovation and advancement.
Self-host Model: Fully compatible with RWKV-Runner, as well as server deployment of LocalAI: llama/gpt4all/rwkv/vicuna/koala/gpt4all-j/cerebras/falcon/dolly etc.
Artifacts: Easily preview, copy and share generated content/webpages through a separate window #5092
Plugins: support network search, calculator, any other apis etc. #165#5353
network search, calculator, any other apis etc. #165#5353
If you have deployed your own project with just one click following the steps above, you may encounter the issue of "Updates Available" constantly showing up. This is because Vercel will create a new project for you by default instead of forking this project, resulting in the inability to detect updates correctly.
We recommend that you follow the steps below to re-deploy:
Delete the original repository;
Use the fork button in the upper right corner of the page to fork this project;
If you encounter a failure of Upstream Sync execution, please manually update code.
After forking the project, due to the limitations imposed by GitHub, you need to manually enable Workflows and Upstream Sync Action on the Actions page of the forked project. Once enabled, automatic updates will be scheduled every hour:
Automatic Updates
Enable Automatic Updates
Manually Updating Code
If you want to update instantly, you can check out the GitHub documentation to learn how to synchronize a forked project with upstream code.
You can star or watch this project or follow author to get release notifications in time.
Access Password
This project provides limited access control. Please add an environment variable named CODE on the vercel environment variables page. The value should be passwords separated by comma like this:
code
code1,code2,code3
After adding or modifying this environment variable, please redeploy the project for the changes to take effect.
Environment Variables
CODE (optional)
Access password, separated by comma.
OPENAI_API_KEY (required)
Your openai api key, join multiple api keys with comma.
If you do not want users to input their own API key, set this value to 1.
DISABLE_GPT4 (optional)
Default: Empty
If you do not want users to use GPT-4, set this value to 1.
ENABLE_BALANCE_QUERY (optional)
Default: Empty
If you do want users to query balance, set this value to 1.
DISABLE_FAST_LINK (optional)
Default: Empty
If you want to disable parse settings from url, set this to 1.
CUSTOM_MODELS (optional)
Default: Empty
Example: +llama,+claude-2,-gpt-3.5-turbo,gpt-4-1106-preview=gpt-4-turbo means add llama, claude-2 to model list, and remove gpt-3.5-turbo from list, and display gpt-4-1106-preview as gpt-4-turbo.
To control custom models, use + to add a custom model, use - to hide a model, use name=displayName to customize model name, separated by comma.
User -all to disable all default models, +all to enable all default models.
For Azure: use modelName@Azure=deploymentName to customize model name and deployment name.
Example: +gpt-3.5-turbo@Azure=gpt35 will show option gpt35(Azure) in model list.
If you only can use Azure model, -all,+gpt-3.5-turbo@Azure=gpt35 will gpt35(Azure) the only option in model list.
For ByteDance: use modelName@bytedance=deploymentName to customize model name and deployment name.
Example: +Doubao-lite-4k@bytedance=ep-xxxxx-xxx will show option Doubao-lite-4k(ByteDance) in model list.
DEFAULT_MODEL (optional)
Change default model
VISION_MODELS (optional)
Default: Empty
Example: gpt-4-vision,claude-3-opus,my-custom-model means add vision capabilities to these models in addition to the default pattern matches (which detect models containing keywords like "vision", "claude-3", "gemini-1.5", etc).
Add additional models to have vision capabilities, beyond the default pattern matching. Multiple models should be separated by commas.
WHITE_WEBDAV_ENDPOINTS (optional)
You can use this option if you want to increase the number of webdav service addresses you are allowed to access, as required by the format:
Each address must be a complete endpoint
https://xxxx/yyy
Multiple addresses are connected by ', '
DEFAULT_INPUT_TEMPLATE (optional)
Customize the default template used to initialize the User Input Preprocessing configuration item in Settings.
STABILITY_API_KEY (optional)
Stability API key.
STABILITY_URL (optional)
Customize Stability API url.
ENABLE_MCP (optional)
Enable MCP(Model Context Protocol)Feature
SILICONFLOW_API_KEY (optional)
SiliconFlow API Key.
SILICONFLOW_URL (optional)
SiliconFlow API URL.
AI302_API_KEY (optional)
302.AI API Key.
AI302_URL (optional)
302.AI API URL.
Requirements
NodeJS >= 18, Docker >= 20
Development
Before starting development, you must create a new .env.local file at project root, and place your api key into it:
code
OPENAI_API_KEY=<your api key here>
# if you are not able to access openai service, use this BASE_URL
BASE_URL=https://chatgpt1.nextweb.fun/api/proxy
Local Development
shell
# 1. install nodejs and yarn first# 2. config localenv vars in `.env.local`# 3. run
yarn install
yarn dev