MCP

The Model Context Protocol (MCP) is an open standard for connecting AI models to external tools and data sources. Creor supports both local stdio-based servers and remote HTTP-based servers with OAuth.

Overview

MCP servers expose tools, resources, and prompts that the Creor agent can use during conversations. When you configure an MCP server, its tools appear alongside Creor's built-in tools and the agent can call them as needed.

Creor supports two types of MCP servers:

  • Local servers — spawned as child processes, communicating via stdio
  • Remote servers — accessed over HTTP, with optional OAuth authentication

MCP servers are configured in the mcp section of your creor.json or in a standalone mcp.json file.

Local MCP Servers

Local servers run as child processes on your machine. Creor spawns them with the specified command and communicates via stdin/stdout using the MCP stdio transport.

1
2
3
4
5
6
7
8
9
10
11
{
"mcp": {
"github": {
"type": "local",
"command": ["npx", "-y", "@modelcontextprotocol/server-github"],
"environment": {
"GITHUB_TOKEN": "ghp_your_token_here"
}
}
}
}

Local Server Config

FieldTypeDescription
type"local"Must be "local" for stdio-based servers
commandstring[]Command and arguments to spawn the server process
environmentRecord<string, string>Environment variables passed to the server process
enabledbooleanSet to false to disable without removing (default: true)
timeoutnumberRequest timeout in milliseconds (default: 5000)

The command array is executed directly — the first element is the binary and the rest are arguments. Common patterns:

1
2
3
4
5
6
7
8
9
10
11
// npx to run an npm package
"command": ["npx", "-y", "@modelcontextprotocol/server-github"]
 
// Python server
"command": ["python", "-m", "mcp_server_sqlite", "--db-path", "./data.db"]
 
// Docker container
"command": ["docker", "run", "-i", "--rm", "mcp/fetch"]
 
// Local binary
"command": ["/usr/local/bin/my-mcp-server", "--port", "0"]

Remote MCP Servers

Remote servers are accessed over HTTP using the Streamable HTTP transport. They can optionally require OAuth authentication.

1
2
3
4
5
6
7
8
9
10
11
12
{
"mcp": {
"linear": {
"type": "remote",
"url": "https://mcp.linear.app/sse",
"oauth": {
"clientId": "your-client-id",
"scope": "read write"
}
}
}
}

Remote Server Config

FieldTypeDescription
type"remote"Must be "remote" for HTTP-based servers
urlstringURL of the remote MCP server endpoint
enabledbooleanSet to false to disable without removing (default: true)
headersRecord<string, string>Custom HTTP headers to include with requests
oauthobject | falseOAuth config, or false to disable OAuth auto-detection
timeoutnumberRequest timeout in milliseconds (default: 5000)

OAuth Configuration

When a remote server requires OAuth, Creor handles the authorization flow automatically. It opens a browser for the user to authenticate, receives the callback, and stores tokens securely.

FieldTypeDescription
clientIdstringOAuth client ID. If omitted, dynamic client registration (RFC 7591) is attempted.
clientSecretstringOAuth client secret (if required by the authorization server)
scopestringOAuth scopes to request during authorization

Set oauth: false to explicitly disable OAuth auto-detection for servers that don't require authentication:

1
2
3
4
5
6
7
8
9
10
11
12
{
"mcp": {
"public-api": {
"type": "remote",
"url": "https://api.example.com/mcp",
"oauth": false,
"headers": {
"X-Api-Key": "your-api-key"
}
}
}
}

Configuration

MCP servers can be configured in two places:

  • The "mcp" section of creor.json or creor.jsonc
  • A standalone mcp.json file in the .creor/ directory

Both global (~/.creor/) and project-level (.creor/) config directories are scanned. Project-level MCP config overrides global config for servers with the same name.

To disable a server that was configured at a higher level, use:

1
2
3
4
5
6
7
{
"mcp": {
"server-name": {
"enabled": false
}
}
}

mcp.json File

Creor also supports a standalone mcp.json file in .creor/ directories. This follows the same format as the mcp section in creor.json and provides compatibility with other tools that use the same convention.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// .creor/mcp.json
{
"github": {
"type": "local",
"command": ["npx", "-y", "@modelcontextprotocol/server-github"],
"environment": {
"GITHUB_TOKEN": "ghp_your_token_here"
}
},
"slack": {
"type": "local",
"command": ["npx", "-y", "@anthropic/mcp-server-slack"],
"environment": {
"SLACK_BOT_TOKEN": "xoxb-your-token",
"SLACK_TEAM_ID": "T0123456789"
}
}
}

Servers defined in mcp.json override any servers with the same name from creor.json. The load order is:

  • Global ~/.creor/mcp.json
  • Project .creor/mcp.json (overrides global)

Server Status

Each MCP server has a status that Creor tracks and displays in the UI:

StatusDescription
connectedServer is running and tools are available
connectingServer is being started or connection is in progress
disabledServer is configured but disabled (enabled: false)
failedServer failed to start or connection was lost
needs_authRemote server requires OAuth authentication
needs_client_registrationDynamic client registration failed — manual client ID required

MCP servers emit a ToolListChanged notification when their available tools change at runtime. Creor automatically picks up these changes without requiring a reconnection.

Marketplace

The Creor dashboard includes an MCP marketplace where you can browse and install community MCP servers. Installed servers from the marketplace are synced to your configuration and can be managed alongside manually configured servers.

Marketplace servers appear in the MCP panel in the IDE with an indicator badge. You can enable, disable, or remove them from the settings UI or by editing your config directly.

Tip

Marketplace servers use real-time sync — changes you make in the dashboard are reflected in the IDE immediately without restarting.

Examples

GitHub MCP Server

Access GitHub repositories, issues, pull requests, and more through the official GitHub MCP server:

1
2
3
4
5
6
7
8
9
10
11
{
"mcp": {
"github": {
"type": "local",
"command": ["npx", "-y", "@modelcontextprotocol/server-github"],
"environment": {
"GITHUB_TOKEN": "ghp_your_personal_access_token"
}
}
}
}

Slack MCP Server

Read and send messages in Slack channels:

1
2
3
4
5
6
7
8
9
10
11
12
{
"mcp": {
"slack": {
"type": "local",
"command": ["npx", "-y", "@anthropic/mcp-server-slack"],
"environment": {
"SLACK_BOT_TOKEN": "xoxb-your-bot-token",
"SLACK_TEAM_ID": "T0123456789"
}
}
}
}

SQLite Database Server

Query and modify a local SQLite database:

1
2
3
4
5
6
7
8
{
"mcp": {
"sqlite": {
"type": "local",
"command": ["python", "-m", "mcp_server_sqlite", "--db-path", "./data/app.db"]
}
}
}

Filesystem Server

Give the agent access to specific directories through a sandboxed filesystem server:

1
2
3
4
5
6
7
8
9
10
11
{
"mcp": {
"filesystem": {
"type": "local",
"command": [
"npx", "-y", "@modelcontextprotocol/server-filesystem",
"/path/to/allowed/directory"
]
}
}
}

Remote Server with Custom Headers

Connect to a private MCP server using API key authentication:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"mcp": {
"internal-api": {
"type": "remote",
"url": "https://mcp.internal.company.com/v1",
"oauth": false,
"headers": {
"Authorization": "Bearer your-api-key",
"X-Team-Id": "engineering"
},
"timeout": 10000
}
}
}

Remote Server with OAuth

Connect to a remote MCP server that uses OAuth for authentication:

1
2
3
4
5
6
7
8
9
10
11
12
{
"mcp": {
"linear": {
"type": "remote",
"url": "https://mcp.linear.app/sse",
"oauth": {
"clientId": "your-linear-client-id",
"scope": "read write issues:create"
}
}
}
}

Full Configuration Example

A production setup with multiple MCP servers:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{
"mcp": {
"github": {
"type": "local",
"command": ["npx", "-y", "@modelcontextprotocol/server-github"],
"environment": {
"GITHUB_TOKEN": "ghp_your_token"
}
},
"slack": {
"type": "local",
"command": ["npx", "-y", "@anthropic/mcp-server-slack"],
"environment": {
"SLACK_BOT_TOKEN": "xoxb-your-token",
"SLACK_TEAM_ID": "T0123456789"
}
},
"linear": {
"type": "remote",
"url": "https://mcp.linear.app/sse",
"oauth": {
"clientId": "your-client-id"
}
},
"sentry": {
"type": "local",
"command": ["npx", "-y", "@sentry/mcp-server"],
"environment": {
"SENTRY_AUTH_TOKEN": "your-sentry-token"
}
}
}
}