Skip to main content
Neo ships a hosted Model Context Protocol (MCP) server. MCP is an open standard that lets AI assistants discover and call external tools. Point any MCP-compatible client — Cursor, Claude, or your own agent — at Neo’s endpoint and it gains a set of tools for starting security assessments, monitoring them, reading validated findings, and pulling the files Neo generates. This is the simplest way to drive Neo from outside the web app: no SDK to install, no API wrapper to build. You add one endpoint and your API key, and the client does the rest.
This is the inbound direction — external clients calling Neo. If you instead want Neo’s agents to call your MCP servers as tools during a task, see MCP Tools.

Prerequisites

  • A Neo API key (prefix neo_sk_), created under Settings → API Key (see API Key).
  • An MCP-compatible client — Cursor, Claude Code, Claude Desktop, or any client that supports streamable HTTP.
Your API key carries the same permissions as your account. Treat it like a password: store it in your client’s secret/header configuration, never commit it to source control, and rotate it if it leaks.

Connection details

Use these values in any MCP client that supports a remote HTTP server.

Connect your client

Add Neo to your Cursor MCP configuration (~/.cursor/mcp.json for all projects, or .cursor/mcp.json inside a project):
Reload Cursor, then open Settings → MCP and confirm the neo server shows a green status with its tools listed.

Authentication

Authentication uses your Neo API key only. Send it with every request in the X-Api-Key header:
The key must have the neo_sk_ prefix and is created under Settings → API Key (API Key). If it’s missing or invalid, requests fail with an authentication error. Keep the key in your client’s header config — never in the URL.

Available tools

Once connected, your client gets a set of tools that follow the natural loop of an assessment — start it, watch it, read the findings, and pull the files.

get_task views

get_task takes a task_id and an optional view (defaults to overview). Each view returns a different slice of the task.
For the concrete list of validated vulnerabilities, use get_issues (scope it with task_id) rather than a get_task view — findings are first-class objects with severity and remediation.

create_task parameters

create_task is the main entry point. Only task is required; everything else has a sensible default.
create_task returns as soon as the task is created and queued; Neo keeps working in the background. Use get_task with the returned task ID to follow progress, then get_issues to read the findings. Neo tasks run for minutes — avoid polling in a tight loop.

Resources

Resources let clients browse Neo data without invoking a tool. They return JSON.

Example workflow

A typical end-to-end loop from an MCP client:
1

Start a task

Call create_task with task: "Test https://staging.example.com for authentication and authorization flaws". Note the returned task_id. (Optionally call list_capabilities first to pick a specific agent, model, or project.)
2

Monitor progress

Call get_task with the task_id and view: "overview" to check status and the latest response, or view: "logs" to follow each step. Neo tasks run for minutes, so check periodically rather than in a tight loop.
3

Read the findings

Call get_issues with task_id to list the validated findings — each with severity, target, and remediation. Use get_task with view: "report" for the narrative summary.
4

Collect artifacts

Call get_task with view: "files" to find generated reports or screenshots, then pass a returned file_key to get_file to read it inline or get a shareable download link.
5

Wrap up

Use manage_task with action: "rename" for easy lookup later, or action: "delete" if it was a throwaway run.

File keys

get_file operates on file keys — the full workspace path of a file, always starting with workspace/. Task artifacts live under workspace/tasks/{task_id}/. A typical key looks like:
get_task with view: "files" returns the exact key for every file, so the usual pattern is to list first, then pass a returned key to get_file.

Troubleshooting

Make sure the URL ends in /mcp and your client is configured for the streamable HTTP transport. After fixing the config, fully reload the client so it re-runs MCP discovery.
Confirm the X-Api-Key header is set and the value starts with neo_sk_. Keys created in the wrong team, revoked, or rotated will fail — generate a fresh one under Settings → API Key and update your client.
Workspace files are created during task execution. Run at least one task first so your workspace is initialized, then retry get_task with view: "files".
create_task waits for the task to be registered before returning. A timeout usually means the upstream Neo API or agent is briefly unavailable — retry, and check your account has sufficient credits and Neo access.

Security notes

  • Stateless by design. The MCP server holds no credentials or sessions; your key is used only to authenticate the current request to the Neo API.
  • Scoped to your account. Tools only ever act on tasks and files your API key can access.
  • HTTPS only. Always connect over https://, and keep your key in headers rather than URLs.