Neo-mcp
Neo is the first autonomous AI engineering agent that plans, researches and executes multi-step work for tasks such as building AI agents, AI model fine-tuning and evals, and ML pipelines; using your codebase, data, and experiments to ship faster with inspectable artifacts. It can reason over your repository, wire tools and retrieval, debug training runs, and help you develop production-ready AI workflows
CTRL K
- Getting Started
- Meet Neo
- Quick Start
- Core Concepts
- VS Code Extension
- Cursor IDE
- Neo MCP
- Neo for Claude Code
- Bring Your Own LLM Keys
- Learn More
- Projects
- Production-Ready A/B/n Testing Framework
- Adversarial Robustness Probe: Stress-Testing NLP and Vision Models
- Natural Language Time Series Forecasting with TimesFM
- Multilingual ASR Pipeline with Qwen3-ASR-0.6B
- Attention Head Visualiser: Mapping GPT-2 Heads
- AutoDoc: Autonomous Documentation Agent
- AutoPrompter: Closed-Loop Prompt Optimization
- Carbon-Aware Model Training Pipeline
- Code Agent Analysis and Refactoring Tool
- Low-Latency CPU-Based Voice Assistant with Streaming TTS
- Embedding Evaluator: Vector Quality & Drift Audits
- GitHub Repo Query Agent
- GPU Scout: Cloud GPU Monitoring & Spot Alerts
- Hallucination Benchmark Tool
- Helix: Self-Healing CI/CD Agent
- Medical Report Analysis (HIPAA)
- How to Fine-Tune an LLM Using NEO
- Hypothesis Engine: Autonomous Research Framework
- Invoice OCR Pipeline
- Latest LLMs: Real-Life Task Evaluation
- LLM Consistency Monitor: Detect Prompt Brittleness
- LLM Council: Multi-Model Deliberation
- LLM Evaluator Tool
- LLM Response Judge: Auto-Grade AI Responses
- MCP Optimization & Suggestion Agent
- Multi-Agent Memory Management System
- Multi-Agent Observability Platform
- Multi-Model RAG System
- Multi-Query Batch Inference Optimization
- NeuroLens: Concept Neuron Discovery
- Orbit: 3D Dependency Visualiser
- Prompt A/B Testing Tool: Statistical LLM Evaluation
- Prompt Injection Defence System
- Quantization-Aware Training for Edge Deployment
- Real-Time Voice Translation
- Spec to Ship: Multi-Agent Feature Delivery
- Stock Trading Agent Swarm
- Table Extraction from Financial Documents
- Platform Features
- Use Cases
- FAQ
- Resources
- Dashboard ↗
- Datasets
- Settings
Light
Neo MCP
Use the Model Context Protocol (MCP) to wire your editor to Neo: the neo-mcp package runs the server locally and syncs results into your project folder.
Get your API key
- Open API keys in the Neo dashboard (sign in if prompted).
- Create a key and copy it. Keys look like
sk-v1-…— treat them like secrets and do not commit them to git.
You will paste this value wherever the examples use sk-v1-YOUR_KEY.
Install
Python 3.11+:
pip install neo-mcp
LinuxWindows
If pip install neo-mcp fails with error: externally-managed-environment, run:
python3 -m pip install --user --break-system-packages neo-mcp
Installs to ~/.local/ without sudo.
Editor configuration
Replace sk-v1-YOUR_KEY with your real key in the snippet for your editor.
Claude CodeCursorWindsurfVS CodeZedContinueCodex CLIAntigravity
Claude Code configures MCP through the claude mcp CLI (run these in your system terminal, not inside a chat).
1. Register Neo
claude mcp add --scope user neo \
-e NEO_SECRET_KEY=sk-v1-YOUR_KEY \
-- python3 -m neo_mcp
2. Confirm it’s connected
claude mcp list
You should see neo with a green checkmark.
Demo: Run a task through MCP
MCP tools
| Tool | What it does |
|---|---|
| neo_submit_task | Start a Neo task; returns a thread_id. Optional wait_for_completion blocks until finished. |
| neo_task_status | Poll status (RUNNING, COMPLETED, WAITING_FOR_FEEDBACK, etc.). |
| neo_get_messages | Read the task transcript after completion (large output may be capped). |
| neo_list_tasks | List recent or active tasks (e.g. after reopening the editor). |
| neo_send_feedback | Reply when Neo is waiting for input (WAITING_FOR_FEEDBACK). |
| neo_pause_task / neo_resume_task | Pause or resume a task. |
| neo_stop_task | Stop and tear down a task. |
| neo_add_integration | Store a provider key (GitHub, HuggingFace, Anthropic, OpenRouter, or any custom secret) on your machine so Neo can use it in tasks. |
| neo_list_integrations | List configured integrations (provider names only — never prints the secret). |
| neo_test_integration | Call the provider’s API once to confirm the stored key is still valid. |
| neo_remove_integration | Delete a stored key and its file (or keyring entry). |
Typical flow: submit → poll status until COMPLETED or feedback → get messages (or use wait_for_completion on submit to skip polling).
Integrations
Give Neo access to external services — GitHub, HuggingFace, Anthropic, OpenRouter, or any custom secret — by storing API keys on your machine once. Neo injects them as environment variables every time it runs a task, so your scripts, CLIs, and libraries just work. Keys never leave your machine.
Adding a key
Just tell Neo in plain English — from any MCP-connected editor:
“Add my Anthropic key
sk-ant-...to Neo.”
“Store my GitHub PAT
ghp...so Neo can push to my repos.”
“Save my HuggingFace token
hf...for downloading models.”
Neo calls neo_add_integration behind the scenes. You only need to do this once per provider — the key is stored locally and reused across every future task.
| Provider | Credential | What Neo can do with it |
|---|---|---|
| github | Personal Access Token (ghp_...) | Clone private repos, push, open PRs |
| huggingface | Token (hf_...) | Download private models and datasets |
| anthropic | API key (sk-ant-...) | Run Claude models inside your tasks |
| openrouter | API key (sk-or-...) | Route through any model OpenRouter supports |
You can also store any custom secret the same way — use any provider name and Neo will save it and expose it to tasks.
Where keys are stored
File on disk (default)OS keyring (safer)
Keys are saved to a small file on your machine at ~/.neo/integrations/<provider>.env. The file is owner-read-only — no other user on your computer can access it. This is the same way tools like gh, aws, and huggingface-cli store their tokens.
For GitHub and HuggingFace, Neo also writes the token where the official CLI expects it (~/.git-credentials and ~/.cache/huggingface/token), so commands like git clone and huggingface-cli just work on their own — without Neo running.
- Works everywhere: Mac, Linux, Docker, servers, CI.
- Nothing extra to install.
Tip: turn on full-disk encryption (FileVault on macOS, BitLocker on Windows, LUKS on Linux) for an extra layer of protection when your machine is powered off or stolen.
How Neo uses your keys
When Neo runs a task, it reads your configured keys and sets them as environment variables on each child process:
| Variable | Provider |
|---|---|
| ANTHROPIC_API_KEY | anthropic |
| OPENROUTER_API_KEY | openrouter |
| HF_TOKEN / HUGGING_FACE_HUB_TOKEN | huggingface |
| GITHUB_TOKEN / GH_TOKEN | github |
Any script, CLI, or library that reads these env vars works out of the box — no per-task configuration needed.
Managing integrations
neo_list_integrations # shows configured providers (names only, never the key)
neo_test_integration anthropic # calls the provider's API to confirm the key is valid
neo_remove_integration anthropic # deletes the stored key and its file or keyring entry
Security
- Keys never leave your machine — they are never sent to the Neo backend, written to logs, or committed to git.
~/.neo/and.envfiles are already in.gitignore.- Secret files are always mode
0o600. neo_list_integrationsreturns provider names only, never the secret itself.- Use keys with the smallest scope you can, and rotate them if you suspect anything went wrong.
Verwandte Server
Alpha Vantage MCP Server
SponsorAccess financial market data: realtime & historical stock, ETF, options, forex, crypto, commodities, fundamentals, technical indicators, & more
Lightrun
AI-powered live runtime debugging with Lightrun production context.
BCMS MCP
Give me a one - two sentence description of the BCMS MCP # MCP The BCMS Model Context Protocol (MCP) integration enables AI assistants like Claude, Cursor, and other MCP-compatible tools to interact directly with your BCMS content. This allows you to create, read, and update content entries, manage media files, and explore your content structure—all through natural language conversations with AI. ## What is MCP? The [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) is an open standard developed by Anthropic that allows AI applications to securely connect to external data sources and tools. With BCMS MCP support, you can leverage AI assistants to: - Query and explore your content structure - Create new content entries with AI-generated content - Update existing entries - Manage your media library - Get intelligent suggestions based on your content model --- ## Getting Started ### Prerequisites 1. A BCMS account with an active instance 2. An MCP key with appropriate permissions 3. An MCP-compatible client (Claude Desktop, Cursor, or any MCP client) ### Step 1: Create an MCP Key 1. Navigate to your BCMS dashboard 2. Go to Settings → MCP 3. Click Create MCP Key 4. Configure the permissions for templates you want the AI to access:GET: Read entries 5. POST: Create entries 6. PUT: Update entries 7. DELETE: Delete entries Note: Right now, MCP only supports creating, reading and updating content. ### Step 2: Configure Your MCP Client You can find full instructions for integrating BCMS with your AI tools right inside BCMS, on the MCP page. But in general, installing BCMS MCP works in a standard way: ``` { "mcpServers": { "bcms": { "url": "https://app.thebcms.com/api/v3/mcp?mcpKey=YOUR_MCP_KEY" } } } ``` ## Available Tools Once connected, your AI assistant will have access to the following tools based on your MCP key permissions: ### Content Discovery #### list_templates_and_entries Lists all templates and their entries that you have access to. This is typically the first tool to call when exploring your BCMS content. Returns: - Template IDs, names, and slugs - Entry IDs with titles and slugs for each language Example prompt: "Show me all the templates and entries in my BCMS" --- ### Entry Management #### list_entries_for_{templateId} Retrieves all entries for a specific template with full content data. A separate tool is generated for each template you have access to. Returns: - Complete entry data including all meta fields - Content in all configured languages - Entry statuses Example prompt: "List all blog posts from my Blog template" --- #### create_entry_for_{templateId} Creates a new entry for a specific template. The input schema is dynamically generated based on your template's field structure. Input: - statuses: Array of status assignments per language - meta: Array of metadata for each language (title, slug, custom fields) - content: Array of content nodes for each language Example prompt: "Create a new blog post titled 'Getting Started with BCMS' with a brief introduction paragraph" --- #### update_entry_for_{templateId} Updates an existing entry for a specific language. Input: - entryId: The ID of the entry to update - lng: Language code (e.g., "en") - status: Optional status ID - meta: Updated metadata - content: Updated content nodes Example prompt: "Update the introduction paragraph of my 'Getting Started' blog post" --- ### Media Management #### list_all_media Lists all media files in your media library. Returns: - Media IDs, names, and types - File metadata (size, dimensions for images) - Parent directory information Example prompt: "Show me all images in my media library" --- #### list_media_dirs Lists the directory structure of your media library. Returns: - Hierarchical directory structure - Directory IDs and names Example prompt: "Show me the folder structure of my media library" --- #### create-media-directory Creates a new directory in your media library. Input: - name: Name of the directory - parentId: Optional parent directory ID (root if not specified) Example prompt: "Create a new folder called 'Blog Images' in my media library" --- #### request-upload-media-url Returns a URL you use to upload a file (for example via POST with multipart form data), which avoids pushing large binaries through the MCP tool payload. You still need a valid file name and MIME type when uploading, as described in the tool response. Availability: Only when the MCP key has Can mutate media enabled. Example prompt: “Give me an upload URL for a new hero image, then tell me how to upload it.” Input: - fileName: Name of the file with extension - fileData: Base64-encoded file data (with data URI prefix) - parentId: Optional parent directory ID Example prompt: "Upload this image to my Blog Images folder" --- ### Linking Tools #### get_entry_pointer_link Generates an internal BCMS link to an entry for use in content. Input: - entryId: The ID of the entry to link to Returns: - Internal link format: entry:{entryId}@*_{templateId}:entry Example prompt: "Get me the internal link for the 'About Us' page entry" --- #### get_media_pointer_link Generates an internal BCMS link to a media item for use in content. Input: - mediaId: The ID of the media item Returns: - Internal link format: media:{mediaId}@*_@*_:entry Example prompt: "Get the link for the hero image so I can use it in my blog post" --- ## Content Structure ### Entry Content Nodes When creating or updating entries, content is structured as an array of nodes. Supported node types include: Type Description paragraph Standard text paragraph heading Heading (h1-h6) bulletList Unordered list orderedList Numbered list listItem List item codeBlock Code block with syntax highlighting blockquote Quote block image Image node widget Custom widget with props ### Example Content Structure ``` { "content": [ { "lng": "en", "nodes": [ { "type": "heading", "attrs": { "level": 1 }, "content": [ { "type": "text", "text": "Welcome to BCMS" } ] }, { "type": "paragraph", "content": [ { "type": "text", "text": "This is your first paragraph." } ] } ] } ] } ``` ## Security & Permissions ### MCP Key Scopes Your MCP key controls what the AI can access: - Template Access: Only templates explicitly granted in the MCP key are visible - Operation Permissions: Each template can have independent GET/POST/PUT/DELETE permissions - Media Access: Media operations are controlled separately ### Best Practices 1. Principle of Least Privilege: Only grant the permissions needed for your use case 2. Separate Keys: Create different MCP keys for different purposes or team members 3. Regular Rotation: Periodically rotate your MCP keys ## Use Cases ### Content Creation Workflows Blog Post Creation "Create a new blog post about the benefits of headless CMS. Include an introduction, three main benefits with explanations, and a conclusion. Use the Blog template." Product Updates "Update the price field for all products in the Electronics category to apply a 10% discount" ### Content Exploration Content Audit "List all blog posts that don't have a featured image set" Translation Status "Show me which entries are missing German translations" ### Media Organization Library Cleanup "Show me all unused images in the media library" Folder Setup "Create folder structure for: Products > Categories > Electronics, Clothing, Home" ## Troubleshooting ### Common Issues #### "MCP key not found" - Verify your MCP key format: keyId.keySecret.instanceId - Ensure the MCP key hasn't been deleted or deactivated - Check that you're using the correct instance #### "MCP key does not have access to template" - Review your MCP key permissions in the dashboard - Ensure the required operation (GET/POST/PUT/DELETE) is enabled for the template #### Session Expired - MCP sessions may timeout after periods of inactivity - Simply start a new conversation to establish a fresh session ### Getting Help - Documentation: [thebcms.com/docs](https://thebcms.com/docs) - Support: [[email protected]](mailto:[email protected]) - Community: [Join BCMS Discord](https://discord.com/invite/SYBY89ccaR) for community support ## Technical Reference ### Endpoint POST https://app.thebcms.com/api/v3/mcp?mcpKey={MCP_KEY} ### Transport BCMS MCP uses the Streamable HTTP transport with session management. Sessions are maintained via the mcp-session-id header. ### Response Format All tools return structured JSON responses conforming to the MCP specification with: - content: Array of content blocks - structuredContent: Typed response data ## Rate Limits MCP requests are subject to the same rate limits as API requests: - Requests are tracked per MCP key - Contact support if you need higher limits for production workloads
Authless Remote MCP Server
An authentication-free remote MCP server designed for deployment on Cloudflare Workers.
CodeAlive MCP
Provides semantic code search and codebase interaction features via the CodeAlive API.
Squads MCP
A secure MCP implementation for Squads multisig management on the Solana blockchain.
Playwright MCP Explorer
An intelligent tool that uses MCP to autonomously explore websites and generate Playwright tests from natural language descriptions.
ICP MCP
A developer-friendly and type-safe TypeScript SDK for the ICP MCP API.
DHTMLX MCP Server
The DHTMLX MCP server provides real-time access to official docs and a smart RAG.
RubyGems
Fetch metadata for Ruby gems from the rubygems.org API.
Deep Code Reasoning MCP Server
Performs complementary code analysis by combining Claude Code and Google's Gemini AI.