Neo MCP
Integrates an autonomous AI engineering agent into your editor via the Model Context Protocol, allowing you to describe AI/ML tasks in plain English and execute them locally.
README
Neo MCP: Your autonomous AI engineering agent
<!-- mcp-name: io.github.NeoAIResearch/neo-mcp -->
neo-mcp is the Model Context Protocol server that plugs Neo into Claude Code, Cursor, Codex, and the editors you already use. Neo is an autonomous AI engineer: describe any AI/ML task in plain English and it plans, builds, runs, and evaluates the full workflow.
Everything lands in your repo on your machine (code, models, metrics, reports). Nothing is stored remotely.
Neo is built for AI engineering, not general code chat, so it goes deeper on ML, LLM, and data workflows than a typical coding agent.
🌐 Neo · 📚 Docs · 🔑 Get an API key: Neo dashboard
See it in action
Click to watch the full demo with sound.
What MCP unlocks
- 🧩 Stay in your editor. Drive Neo from Claude Code, Cursor, VS Code (Copilot), Windsurf, Zed, Continue, or Codex. No new app, no context switching.
- 🔬 Go deeper on AI/ML. Autonomous planning, experiments, evaluation, and iteration tuned for real ML work, not just one-shot answers.
- 💾 Local-first. Every output file is written to your machine. Nothing is stored remotely.
What you can build with Neo
- 🤖 Generative AI & LLMs: RAG, semantic search, agents, chatbots, fine-tuning (Llama, Qwen, Gemma), document analysis
- 🧠 ML & deep learning: PyTorch, TensorFlow, scikit-learn training, architecture search, evaluation
- 📊 Data science & analytics: EDA, feature engineering, forecasting, segmentation, A/B testing, reporting
- 👁️ Computer vision: image classification, object detection, OCR
- 🎤 Speech & audio: speech-to-text, text-to-speech, audio classification
- 🔌 Bring your own keys: GitHub, HuggingFace, Anthropic, OpenRouter, OpenAI, AWS S3, Weights & Biases, Kaggle. Stored locally and injected as env vars.
Built for data scientists, ML engineers, analysts, researchers, and PMs who want results, not boilerplate.
Try it
Ask your agent to use Neo. For example:
Use Neo to fix the failing training run and re-run with logging
Benchmark these prompts on our eval set using Neo
Build or debug an end-to-end ML pipeline using Neo
Train a fraud detection model on fraud.csv, optimize for recall
Fine-tune a text classifier on my training data with 5-fold cross-validation
Neo runs the ML work. Your editor handles everything else.
Install
pip install neo-mcp
Requires Python 3.11+.
Tip: use
pipx install neo-mcpto install in an isolated environment and avoid conflicts with your project's virtualenv.
Use Neo from your editor
Replace sk-v1-YOUR_KEY with your actual API key.
After setup, ask your agent: "What Neo tools do you have available?" You should see neo_submit_task, neo_task_status, neo_get_messages, and the rest.
Claude Code
claude mcp add --scope user neo \
-e NEO_SECRET_KEY=sk-v1-YOUR_KEY \
-- neo-mcp
Open a new Claude Code session after running this. Neo tools load at session start, not mid-session.
Scope options:
--scope user(global, recommended) ·--scope project(writes.mcp.jsonin current repo) ·--scope local(this machine only)
Verify it registered:
claude mcp list
You should see neo with a green checkmark.
Cursor
Open the config:
- GUI:
Ctrl+Shift+J(Windows/Linux) orCmd+Shift+J(Mac) → Tools & MCP → New MCP Server - Or edit the file directly:
~/.cursor/mcp.json
{
"mcpServers": {
"neo": {
"command": "neo-mcp",
"env": { "NEO_SECRET_KEY": "sk-v1-YOUR_KEY" }
}
}
}
Restart Cursor after editing the file directly. Changes via the GUI apply immediately.
OpenAI Codex CLI
Open the config:
- Run
codex mcpto manage servers interactively via CLI - Or edit the file directly:
~/.codex/config.json
{
"mcpServers": {
"neo": {
"command": "neo-mcp",
"env": { "NEO_SECRET_KEY": "sk-v1-YOUR_KEY" }
}
}
}
Also works with
Windsurf (~/.codeium/windsurf/mcp_config.json):
{
"mcpServers": {
"neo": {
"command": "neo-mcp",
"env": { "NEO_SECRET_KEY": "sk-v1-YOUR_KEY" }
}
}
}
VS Code (GitHub Copilot) (.vscode/mcp.json in your workspace root; requires VS Code 1.99+ and Agent mode):
{
"servers": {
"neo": {
"type": "stdio",
"command": "neo-mcp",
"env": { "NEO_SECRET_KEY": "sk-v1-YOUR_KEY" }
}
}
}
Zed (~/.config/zed/settings.json):
{
"context_servers": {
"neo": {
"source": "custom",
"command": {
"path": "neo-mcp",
"args": [],
"env": { "NEO_SECRET_KEY": "sk-v1-YOUR_KEY" }
}
}
}
}
Continue.dev (~/.continue/config.yaml):
mcpServers:
- name: neo
command: neo-mcp
env:
NEO_SECRET_KEY: sk-v1-YOUR_KEY
More GUI paths and per-editor notes: docs/GUIDE.md
How it works
Your editor ──MCP──▶ neo-mcp server ──API──▶ Neo backend
│ │
└──────────────────▶ Local daemon
(writes files,
runs scripts)
- You describe a task: "Train a fraud detection model on data.csv"
- The editor calls
neo_submit_taskvia MCP - Neo's backend processes the task and sends commands to the local daemon
- The daemon runs on your machine, writing files, running scripts, and installing packages
- Output files appear directly in your workspace
Files are always written to your machine, never stored remotely.
Neo can also store third-party API keys locally (GitHub, HuggingFace, Anthropic, OpenRouter, OpenAI, AWS S3, Weights & Biases, Kaggle) so tasks can use them without asking every time. Keys stay on your machine and are never sent to Neo's backend. Full guide: docs/INTEGRATIONS.md.
Tools
| Tool | Description |
|---|---|
neo_submit_task |
Submit an AI/ML task. Returns thread_id immediately. |
neo_list_tasks |
List running and recent tasks. Reconnects pollers automatically. |
neo_task_status |
Check status: RUNNING / COMPLETED / WAITING_FOR_FEEDBACK / PAUSED / TERMINATED. |
neo_get_messages |
Read full task output when COMPLETED. Capped at ~20 000 tokens. |
neo_send_feedback |
Reply when Neo asks a question (WAITING_FOR_FEEDBACK). |
neo_pause_task |
Pause a running task. |
neo_resume_task |
Resume a paused task. |
neo_stop_task |
Stop and clean up a task permanently. |
neo_list_integrations |
List stored third-party API keys (names only, never the value). |
neo_add_integration |
Register a GitHub PAT, HuggingFace token, Anthropic key, or OpenRouter key for Neo tasks. |
neo_test_integration |
Call the provider's API to confirm a stored key is still valid. |
neo_remove_integration |
Delete a stored key from this machine. |
Integration tools store credentials locally (file mode
0o600under~/.neo/integrations/, or native tool files like~/.aws/credentials,~/.netrc,~/.kaggle/kaggle.json), or your OS keyring ifNEO_INTEGRATIONS_BACKEND=keyring. Keys never leave your machine. Full guide: docs/INTEGRATIONS.md.
Workflow
Standard (tasks over a few minutes):
neo_submit_task → returns thread_id
↓
neo_task_status → poll until COMPLETED or WAITING_FOR_FEEDBACK
↓
neo_get_messages → read full output
Quick task: Pass wait_for_completion: true to neo_submit_task. It blocks until done and returns output directly. No polling needed.
Mid-task question: When status is WAITING_FOR_FEEDBACK, call neo_send_feedback with your reply. Neo resumes automatically.
Reconnecting after closing your editor:
neo_list_tasks → all tasks with live status + thread IDs
neo_task_status → check the specific task you care about
neo_get_messages → read output of any COMPLETED task
Environment variables
| Variable | Required | Description |
|---|---|---|
NEO_SECRET_KEY |
Yes | API key (sk-v1-...) from heyneo.com/dashboard → Settings → API Keys |
NEO_DEPLOYMENT_ID |
No | Pin a specific daemon UUID (auto-generated by default) |
NEO_WORKSPACE_DIR |
No | Override workspace directory (useful in Docker or CI) |
NEO_READ_ONLY |
No | true = expose only status/message tools; disables submit, stop, and pause |
Diagnostics
neo-mcp status # daemon and key status
neo-mcp doctor # full health check; identifies common issues
neo-mcp list # list known threads
neo-mcp logs --source neo-mcp --lines 100 # MCP server logs
neo-mcp logs --source daemon --lines 100 # daemon logs
# JSON output
neo-mcp status --json
neo-mcp doctor --json
Claude Code logs:
claude mcp logs neo
Troubleshooting
| Symptom | Fix |
|---|---|
neo-mcp: command not found |
Re-run pip install neo-mcp, verify with which neo-mcp |
✗ Failed to connect in claude mcp list |
Run claude mcp logs neo. Most common cause: NEO_SECRET_KEY not set |
| Neo tools don't appear | Open a new session. Tools load at session start, not mid-session |
Invalid API key (401) |
Re-check your key at heyneo.com/dashboard → Settings → API Keys |
Trial or quota ended (403) |
Top up at the Neo dashboard |
No healthy deployments available (400) |
Daemon failed to auto-start. Restart the MCP server and try again |
| Task submitted but no files written | Daemon stopped mid-task. Check neo-mcp status and restart |
Status stuck on RUNNING |
Run neo-mcp doctor to diagnose; restart the MCP server |
| Output truncated | ~20 000 token cap. Use neo_task_status for progress, neo_get_messages for final output only |
Full setup guide (all editors, GUI paths): docs/GUIDE.md · Docs
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。
