Skip to main content

MCP Server

The Ever Works MCP (Model Context Protocol) server exposes the Ever Works API as tools that AI assistants like Claude can call directly. This enables natural-language management of works — creating works, generating items, deploying websites, and more — all through conversation.

When to use this

Connect the MCP server to Claude Desktop, Claude Code, or any MCP-compatible client to manage your Ever Works works through AI-powered conversation instead of manual API calls.

Prerequisites

  • A running Ever Works API instance
  • An API key for authentication
  • Node.js 20 or later

Architecture

The MCP server is a standalone NestJS application in apps/mcp/ that:

  1. Fetches the Ever Works API's OpenAPI spec at startup
  2. Filters endpoints through a curated whitelist of 36 operations
  3. Converts OpenAPI schemas to MCP tool definitions automatically
  4. Proxies tool calls to the API using your API key

This means tool descriptions, parameter names, types, and validation rules are always in sync with the API — no manual tool definitions to maintain.

Setup

Environment Variables

VariableRequiredDefaultDescription
EVER_WORKS_API_KEYYesAPI key for authentication
EVER_WORKS_API_URLNohttp://localhost:3100Base URL of the Ever Works API
EVER_WORKS_MCP_PORTNo3200Port for HTTP transport mode
MCP_TRANSPORTNostdioTransport: stdio or streamable-http

Build

pnpm build --filter=ever-works-mcp

Running

Stdio mode (for Claude Desktop and Claude Code):

EVER_WORKS_API_KEY=ew_live_... pnpm --filter=ever-works-mcp start:stdio

HTTP mode (for remote clients):

EVER_WORKS_API_KEY=ew_live_... pnpm --filter=ever-works-mcp start:http

In HTTP mode, all requests to the /mcp endpoint require an Authorization: Bearer <API_KEY> header.

Claude Desktop Integration

Add the following to your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
"mcpServers": {
"ever-works": {
"command": "node",
"args": ["<path-to-repo>/apps/mcp/dist/stdio.js"],
"env": {
"EVER_WORKS_API_URL": "http://localhost:3100",
"EVER_WORKS_API_KEY": "ew_live_your_key_here"
}
}
}
}

Claude Code Integration

Add the MCP server to your project's .mcp.json:

{
"mcpServers": {
"ever-works": {
"command": "node",
"args": ["<path-to-repo>/apps/mcp/dist/stdio.js"],
"env": {
"EVER_WORKS_API_URL": "http://localhost:3100",
"EVER_WORKS_API_KEY": "ew_live_your_key_here"
}
}
}
}

Available Tools

The MCP server exposes 36 tools organized by domain. Each tool's parameters and descriptions are auto-generated from the API's OpenAPI specification.

Works (12 tools)

ToolDescription
list_worksList all works accessible to the user
create_workCreate a new work
get_workGet a specific work by ID
update_workUpdate work settings and configuration
delete_workDelete a work and its repositories
get_work_configGet work configuration and metadata
get_work_itemsGet all items in a work
get_categories_tagsGet categories and tags for a work
get_work_historyGet generation history
regenerate_markdownRegenerate markdown files for all items
update_websiteTrigger a website rebuild
process_community_prsProcess community pull requests

Generation (4 tools)

ToolDescription
generate_itemsStart AI-powered item generation
update_itemsUpdate existing items using AI
generate_work_detailsAI-generate work details from a prompt
get_generator_formGet the dynamic generator form schema

Items (4 tools)

ToolDescription
submit_itemAdd a single item to a work
remove_itemRemove an item from a work
update_itemUpdate item metadata (featured, order)
extract_item_detailsExtract item details from a URL using AI

Deployment (4 tools)

ToolDescription
deploy_workDeploy a work to a hosting provider
list_domainsList custom domains for a work
list_deploy_providersList available deployment providers
check_deploy_capabilityCheck if deployment is available

Plugins (5 tools)

ToolDescription
list_pluginsList all available plugins
get_pluginGet plugin details and settings
enable_pluginEnable a plugin for the user
disable_pluginDisable a plugin
update_plugin_settingsUpdate plugin configuration

Scheduling (4 tools)

ToolDescription
get_scheduleGet scheduled update configuration
update_scheduleUpdate schedule (cadence, enable/disable)
cancel_scheduleCancel scheduled updates
run_scheduled_updateManually trigger a scheduled update

Comparisons (5 tools)

ToolDescription
list_comparisonsList all comparisons for a work
get_comparisonGet a comparison with markdown content
generate_comparisonAuto-generate the next comparison
generate_manual_comparisonGenerate comparison for two specific items
delete_comparisonDelete a comparison

Adding New Tools

To expose a new API endpoint as an MCP tool:

  1. Add Swagger decorators to the API endpoint — @ApiOperation, @ApiParam, @ApiResponse, and @ApiProperty on the DTO fields
  2. Add a whitelist entry in apps/mcp/src/openapi-tools/whitelist.ts:
{
method: 'POST',
path: '/api/your-endpoint',
toolName: 'your_tool_name',
annotations: { readOnlyHint: false }
}
  1. Rebuild and restart the MCP server

The tool's description, parameters, and validation are derived automatically from the OpenAPI spec.

Security

  • Response sanitization — sensitive fields (passwords, API keys, tokens, secrets) are automatically stripped from all API responses before being returned to the AI client
  • API key authentication — all requests are authenticated with your Ever Works API key
  • Whitelist filtering — only explicitly allowed endpoints are exposed as tools
  • Request timeout — API calls time out after 2 minutes
  • API Keys — Generate API keys for MCP server authentication
  • Authentication — Full API authentication reference
  • Plugin System — Plugins that power generation, search, and deployment