MCP Server

Connect AI tools like Claude to manage configs and files conversationally.

Overview

co includes a built-in Model Context Protocol (MCP) server. This allows AI assistants like Claude Desktop, Claude Code, or any MCP-compatible client to manage configs, namespaces, groups, and S3 files through natural conversation.

The MCP server is stateless — each request is independently authenticated and processed. It uses Streamable HTTP transport at the /mcp endpoint.

Authentication

The MCP server uses the same API keys as the REST API. You can authenticate in two ways:

  • Authorization header: Authorization: Bearer sk-xxx
  • URL token parameter: /mcp?token=sk-xxx

Create API keys in Workspace Settings > API Keys.

Setup

Claude Desktop

Add the following to your Claude Desktop MCP configuration:

json
{  "mcpServers": {    "co": {      "type": "http",      "url": "https://co.tlyboy.com/mcp?token=sk-xxx"    }  }}

Claude Code

Add to your project's .mcp.json:

json
{  "mcpServers": {    "co": {      "type": "http",      "url": "https://co.tlyboy.com/mcp?token=sk-xxx"    }  }}

Or use the CLI:

bash
claude mcp add co --transport http https://co.tlyboy.com/mcp?token=sk-xxx

Other MCP Clients

Any MCP client that supports Streamable HTTP transport can connect to:

https://co.tlyboy.com/mcp

Pass authentication via the Authorization: Bearer sk-xxx header or the ?token=sk-xxx query parameter.

Available Tools

list_namespaces

List all namespaces in the workspace.

No parameters required.

Example prompt: "Show me all namespaces"

list_groups

List config groups within a namespace.

ParameterTypeRequiredDescription
namespaceIdstringYesNamespace ID

Example prompt: "List groups in the production namespace"

list_configs

List configs with optional filters.

ParameterTypeRequiredDescription
namespaceIdstringNoFilter by namespace
groupIdstringNoFilter by group
searchstringNoSearch config names

Example prompt: "Show me all configs in the production namespace"

get_config

Get a specific config by ID or by namespace/group/name path.

ParameterTypeRequiredDescription
idstringNoConfig ID
namespacestringNoNamespace name (for path lookup)
groupstringNoGroup name (for path lookup)
namestringNoConfig name (for path lookup)

Provide either id or all three of namespace, group, and name.

Example prompt: "Get the database connection string from production/database"

create_config

Create a new config in a group.

ParameterTypeRequiredDescription
groupIdstringYesTarget group ID
namestringYesConfig name
formatstringNoFormat (string, json, yaml, toml, env)
contentstringNoConfig content
descriptionstringNoDescription

Example prompt: "Create a new JSON config called 'settings' in group abc-123"

update_config

Update an existing config.

ParameterTypeRequiredDescription
idstringYesConfig ID
contentstringNoNew content
formatstringNoNew format
namestringNoNew name
descriptionstringNoNew description

Example prompt: "Update the database URL config to use the new host"

delete_config

Delete a config.

ParameterTypeRequiredDescription
idstringYesConfig ID

Example prompt: "Delete the deprecated config abc-123"

list_connections

List all S3 connections in the workspace.

No parameters required.

Example prompt: "Show me all S3 connections"

browse_files

Browse files in an S3 connection.

ParameterTypeRequiredDescription
connectionIdstringYesS3 connection ID
prefixstringNoPath prefix to browse

Example prompt: "Browse files in the images folder"

get_file_url

Get a URL to access a file.

ParameterTypeRequiredDescription
connectionIdstringYesS3 connection ID
keystringYesFile key/path

Example prompt: "Get the URL for images/hero.jpg"

get_upload_url

Get a presigned URL for uploading a file.

ParameterTypeRequiredDescription
connectionIdstringYesS3 connection ID
keystringYesTarget file key/path
contentTypestringNoMIME type

Example prompt: "Give me an upload URL for documents/report.pdf"