Logo
NeoArc Studio

MCP Import and Export

Import existing MCP server manifests into NeoArc Studio and export your documented servers as standard JSON. Understand the file format, directory conventions, and how NeoArc maps MCP primitives to its internal data model.

NeoArc Studio stores MCP server definitions in a structured file format that maps directly to the MCP specification. You can create servers from scratch using the visual editor, import existing server manifests, or export your documented servers for use in other tools and CI/CD pipelines.

File Structure

Each MCP server lives in a dedicated directory within your project's integration design folder. The directory name becomes the server's identifier in the file system.

integration-design/
  mcp-servers/
    my-server/
      my-server.cf.mcp-server.json      # Server definition
      tools/
        search-items.cf.mcp-tool.json    # Tool definition
        create-order.cf.mcp-tool.json
      resources/
        catalogue.cf.mcp-resource.json   # Resource definition
        policy.cf.mcp-resource.json
      prompts/
        greeting.cf.mcp-prompt.json      # Prompt definition

Server Definition File

The server file is the root of an MCP server. It contains the server's identity, protocol version, capabilities declaration, transport configuration, and authentication settings.

{
  "schemaVersion": "1.0.0",
  "meta": { "generator": "NeoArc Studio", "generatorVersion": "1.0.0" },
  "id": "unique-uuid",
  "name": "E-Commerce AI Assistant",
  "title": "E-Commerce AI Assistant MCP Server",
  "version": "2.1.0",
  "protocolVersion": "2025-06-18",
  "capabilities": {
    "tools": { "listChanged": true },
    "resources": { "subscribe": true, "listChanged": true },
    "prompts": { "listChanged": false },
    "logging": true,
    "completions": true
  },
  "transports": [ ... ],
  "auth": { ... },
  "sampling": { ... },
  "llmInstructions": "<p>Instructions for the AI assistant...</p>",
  "tags": ["ecommerce", "ai-assistant"]
}

Tool Definition File

Each tool is a separate file in the tools/ subdirectory. Tool definitions include annotation flags, schema references, error scenarios, and worked examples.

{
  "schemaVersion": "1.0.0",
  "meta": { "generator": "NeoArc Studio", "generatorVersion": "1.0.0" },
  "id": "unique-uuid",
  "name": "search_products",
  "title": "Search Products",
  "description": "<p>Search the product catalogue...</p>",
  "annotations": {
    "readOnlyHint": true,
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false
  },
  "inputSchemaRef": "path/to/schema.cf.schema.json",
  "resultContentTypes": ["text"],
  "errorScenarios": [
    {
      "id": "err-1",
      "name": "Invalid Category",
      "isProtocolError": false,
      "errorCode": 400,
      "errorMessage": "Category not found"
    }
  ],
  "examples": [
    {
      "id": "ex-1",
      "name": "Basic search",
      "inputArguments": { "query": "laptop" },
      "expectedOutput": {
        "content": [{ "type": "text", "text": "Found 42 products..." }]
      }
    }
  ],
  "tags": ["search", "catalogue"]
}

Resource Definition File

Resources are stored in the resources/ subdirectory. A resource can be either concrete (fixed URI) or templated (parameterised URI).

{
  "schemaVersion": "1.0.0",
  "meta": { "generator": "NeoArc Studio", "generatorVersion": "1.0.0" },
  "id": "unique-uuid",
  "name": "product-catalogue",
  "title": "Product Catalogue",
  "isTemplate": true,
  "uriTemplate": "ecommerce://catalogue/{category}",
  "templateParameters": [
    {
      "id": "param-1",
      "name": "category",
      "description": "Product category slug",
      "required": true,
      "completionSupported": true
    }
  ],
  "mimeType": "application/json",
  "contentType": "text",
  "subscribable": true,
  "audience": ["user", "assistant"],
  "tags": ["catalogue", "products"]
}

Prompt Definition File

Prompts are stored in the prompts/ subdirectory. Each prompt defines typed arguments, expected messages with role and content type, and worked examples.

{
  "schemaVersion": "1.0.0",
  "meta": { "generator": "NeoArc Studio", "generatorVersion": "1.0.0" },
  "id": "unique-uuid",
  "name": "customer-service-response",
  "title": "Customer Service Response",
  "arguments": [
    {
      "id": "arg-1",
      "name": "customerName",
      "description": "The customer's name",
      "required": true,
      "completionSupported": false
    }
  ],
  "expectedMessages": [
    {
      "id": "msg-1",
      "role": "user",
      "contentType": "text",
      "templateText": "Respond to {customerName}'s enquiry..."
    }
  ],
  "examples": [
    {
      "id": "ex-1",
      "name": "Standard enquiry",
      "argumentValues": [
        { "name": "customerName", "value": "Alice" }
      ],
      "expectedMessages": [
        { "role": "assistant", "content": "Hello Alice..." }
      ]
    }
  ],
  "tags": ["customer-service"]
}

Creating an MCP Server

In NeoArc Studio, you create MCP servers through the file explorer in the workspace.

Schema References

MCP tool input and output schemas reference shared .cf.schema.json files. This is the same schema system used by REST API endpoints and GraphQL types, enabling cross-API traceability through the Intent Graph.

Publishing

When you publish a site that includes MCP servers, NeoArc generates JavaScript data files that the viewer loads on demand.

Site Settings

Control which MCP servers are included in a published site through the site settings. Navigate to the MCP Servers tab in your site settings and toggle each server on or off.

This allows you to maintain multiple MCP server definitions in your project while only publishing a subset to each site. For example, you might include production servers in your public documentation site while keeping internal development servers unpublished.

Content Block Links

You can link to MCP entities from any content page using dedicated content block types.

These blocks render as clickable badges in the published viewer. Clicking a badge navigates to the corresponding MCP entity detail view, just like clicking an item in the sidebar panel.

Related Guides