Crush supports the Model Context Protocol (MCP), which allows you to extend Crush’s capabilities with custom tools, resources, and prompts provided by external servers.
MCP servers can provide:
Tools - Additional commands Crush can execute
Resources - External data sources Crush can read
Prompts - Reusable prompt templates
Transport Types
Crush supports three MCP transport types:
stdio - Command-line servers that communicate over stdin/stdout
http - HTTP endpoints that implement the MCP protocol
sse - Server-Sent Events for streaming MCP responses
Configuration
Configure MCP servers in your crush.json file:
{
"$schema" : "https://charm.land/crush.json" ,
"mcp" : {
"filesystem" : {
"type" : "stdio" ,
"command" : "node" ,
"args" : [ "/path/to/mcp-server.js" ],
"timeout" : 120 ,
"disabled" : false ,
"disabled_tools" : [ "some-tool-name" ],
"env" : {
"NODE_ENV" : "production"
}
},
"github" : {
"type" : "http" ,
"url" : "https://api.githubcopilot.com/mcp/" ,
"timeout" : 120 ,
"disabled" : false ,
"disabled_tools" : [ "create_issue" , "create_pull_request" ],
"headers" : {
"Authorization" : "Bearer $GH_PAT"
}
},
"streaming-service" : {
"type" : "sse" ,
"url" : "https://example.com/mcp/sse" ,
"timeout" : 120 ,
"disabled" : false ,
"headers" : {
"API-Key" : "$(echo $API_KEY)"
}
}
}
}
Configuration Options
type
Type: string (required)
Values: stdio, http, sse
Default: stdio
The transport type for the MCP server.
{
"mcp" : {
"my-server" : {
"type" : "stdio"
}
}
}
stdio Transport Options
For stdio servers:
command
Type: string
The executable command for the MCP server.
{
"mcp" : {
"filesystem" : {
"type" : "stdio" ,
"command" : "node"
}
}
}
args
Type: string[]
Command-line arguments to pass to the MCP server.
{
"mcp" : {
"filesystem" : {
"type" : "stdio" ,
"command" : "node" ,
"args" : [ "/path/to/mcp-server.js" , "--verbose" ]
}
}
}
env
Type: object
Environment variables to set for the MCP server process.
{
"mcp" : {
"filesystem" : {
"type" : "stdio" ,
"command" : "node" ,
"args" : [ "/path/to/mcp-server.js" ],
"env" : {
"NODE_ENV" : "production" ,
"LOG_LEVEL" : "info"
}
}
}
}
http and sse Transport Options
For http and sse servers:
url
Type: string (required for http/sse)
The URL endpoint for the MCP server.
{
"mcp" : {
"github" : {
"type" : "http" ,
"url" : "https://api.githubcopilot.com/mcp/"
}
}
}
Type: object
HTTP headers to send with requests.
{
"mcp" : {
"github" : {
"type" : "http" ,
"url" : "https://api.githubcopilot.com/mcp/" ,
"headers" : {
"Authorization" : "Bearer $GH_PAT" ,
"Content-Type" : "application/json"
}
}
}
}
Common Options
These options apply to all transport types:
disabled
Type: boolean
Default: false
Disable this MCP server without removing its configuration.
{
"mcp" : {
"filesystem" : {
"type" : "stdio" ,
"command" : "node" ,
"args" : [ "/path/to/mcp-server.js" ],
"disabled" : true
}
}
}
Type: string[]
List of specific tools from this MCP server to disable.
{
"mcp" : {
"github" : {
"type" : "http" ,
"url" : "https://api.githubcopilot.com/mcp/" ,
"disabled_tools" : [
"create_issue" ,
"create_pull_request" ,
"delete_repository"
]
}
}
}
Use disabled_tools to prevent Crush from accessing dangerous or unwanted tools while still using the MCP server’s other capabilities.
timeout
Type: integer
Default: 15
Timeout in seconds for MCP server connections.
{
"mcp" : {
"slow-server" : {
"type" : "http" ,
"url" : "https://example.com/mcp" ,
"timeout" : 120
}
}
}
Environment Variable Expansion
MCP configurations support environment variable expansion using $VAR or $(echo $VAR) syntax:
{
"mcp" : {
"github" : {
"type" : "http" ,
"url" : "https://api.githubcopilot.com/mcp/" ,
"headers" : {
"Authorization" : "Bearer $GH_PAT"
}
},
"custom-service" : {
"type" : "sse" ,
"url" : "https://example.com/mcp/sse" ,
"headers" : {
"API-Key" : "$(echo $API_KEY)"
}
}
}
}
Example Configurations
stdio: Node.js MCP Server
{
"mcp" : {
"filesystem" : {
"type" : "stdio" ,
"command" : "node" ,
"args" : [ "/Users/me/.config/mcp/filesystem-server.js" ],
"env" : {
"NODE_ENV" : "production" ,
"ALLOWED_PATHS" : "/home,/tmp"
}
}
}
}
stdio: Python MCP Server
{
"mcp" : {
"database" : {
"type" : "stdio" ,
"command" : "python" ,
"args" : [ "-m" , "mcp_server.database" ],
"env" : {
"DB_CONNECTION" : "$DATABASE_URL"
},
"timeout" : 30
}
}
}
http: REST API MCP Server
{
"mcp" : {
"api-gateway" : {
"type" : "http" ,
"url" : "https://api.example.com/mcp/v1" ,
"headers" : {
"Authorization" : "Bearer $API_TOKEN" ,
"X-API-Version" : "2024-01"
},
"timeout" : 60
}
}
}
sse: Streaming MCP Server
{
"mcp" : {
"realtime-data" : {
"type" : "sse" ,
"url" : "https://stream.example.com/mcp" ,
"headers" : {
"Authorization" : "$(echo $STREAM_TOKEN)"
},
"timeout" : 300
}
}
}
You can disable specific tools while keeping the MCP server active:
{
"mcp" : {
"github" : {
"type" : "http" ,
"url" : "https://api.githubcopilot.com/mcp/" ,
"headers" : {
"Authorization" : "Bearer $GH_PAT"
},
"disabled_tools" : [
"delete_repository" ,
"force_push" ,
"delete_branch"
]
}
}
}
Use disabled_tools to implement least-privilege access - only enable the tools you actually need.
MCP Resources
MCP servers can provide resources that Crush can read. Use the built-in MCP resource tools:
list_mcp_resources - List available resources from MCP servers
read_mcp_resource - Read a specific MCP resource
These tools are automatically available when MCP servers are configured.
Debugging MCP Issues
Enable debug logging to troubleshoot MCP server issues:
{
"options" : {
"debug" : true
}
}
Or use the command-line flag:
Logs are written to ./.crush/logs/crush.log in your project directory.
Finding MCP Servers
Explore available MCP servers:
Next Steps
Skills Configure Agent Skills for reusable capabilities
Permissions Control tool and MCP permissions