Compliant Empty
БесплатноНе проверенA fully valid MCP server that advertises zero capabilities, demonstrating that protocol conformance does not imply utility.
Описание
A fully valid MCP server that advertises zero capabilities, demonstrating that protocol conformance does not imply utility.
README
An entirely empty MCP server that passes protocol conformance.
This is a rhetorical artifact: a fully-valid Model Context Protocol server that advertises zero tools, zero resources, and zero prompts. It exists to demonstrate that "we have an MCP" is a valueless claim. MCP is a protocol, not a product. A server can be 100% conformant and do absolutely nothing.
Live instance: https://compliant-empty-mcp-production.up.railway.app/mcp
Run it (stdio)
npx -y github:shinytoyrobots/compliant-empty-mcp
Or clone and build:
git clone https://github.com/shinytoyrobots/compliant-empty-mcp
cd compliant-empty-mcp
npm install
npm run build
npm start
The server speaks JSON-RPC 2.0 over stdio. It responds to initialize, tools/list, resources/list, and prompts/list — the last three with empty arrays. Any other method returns JSON-RPC error -32601 ("Method not found").
Run it (HTTP)
npm run start:http
This starts a Streamable HTTP transport on port 3000 (or $PORT). The MCP endpoint is POST /mcp.
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"0.1"}}}'
Test it
Against the live instance
curl -X POST https://compliant-empty-mcp-production.up.railway.app/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
Response: {"result":{"tools":[]},"jsonrpc":"2.0","id":1}
MCP Inspector
npx @modelcontextprotocol/inspector
In the Inspector UI, set Transport Type to "Streamable HTTP", Connection Type to "Direct", and URL to:
https://compliant-empty-mcp-production.up.railway.app/mcp
Connect as an MCP client
Add to ~/.claude.json (Claude Code) or ~/Library/Application Support/Claude/claude_desktop_config.json (Claude Desktop):
{
"mcpServers": {
"compliant-empty-mcp": {
"type": "url",
"url": "https://compliant-empty-mcp-production.up.railway.app/mcp"
}
}
}
The server will appear as a connected MCP with zero tools. That's the point.
Conformance probe (local)
npm run build
npm run conformance
MCP conformance probe — compliant-empty-mcp
[PASS] AC-2: initialize returns valid InitializeResult with serverInfo.name
[PASS] AC-3: tools/list returns { tools: [] }
[PASS] AC-4: resources/list returns { resources: [] }
[PASS] AC-5: prompts/list returns { prompts: [] }
[PASS] AC-6: zero tools, zero resources, zero prompts at all times
[PASS] AC-7: unsupported method returns error -32601
[PASS] AC-9: stdio transport is the default and functional
[PASS] AC-1: server terminates cleanly after stdin close
8/8 checks passed.
Deploy your own
The HTTP server runs on any platform that hosts Node.js. A multi-stage Dockerfile is included.
Railway: import from GitHub. Set the custom start command to npm run start:http (under Service → Settings → Deploy).
Render (free tier): connect this repo, set build command npm install && npm run build, start command npm run start:http.
Fly.io: fly launch auto-detects the Dockerfile.
How empty is it?
The full implementation fits in one file:
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import {
ListToolsRequestSchema,
ListResourcesRequestSchema,
ListPromptsRequestSchema,
} from "@modelcontextprotocol/sdk/types.js";
const server = new Server(
{ name: "compliant-empty-mcp", version: "0.1.0" },
{ capabilities: { tools: {}, resources: {}, prompts: {} } },
);
server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: [] }));
server.setRequestHandler(ListResourcesRequestSchema, async () => ({ resources: [] }));
server.setRequestHandler(ListPromptsRequestSchema, async () => ({ prompts: [] }));
await server.connect(new StdioServerTransport());
That is the entire product. It is a valid MCP server. It does nothing.
The point
Next time a vendor tells you they "have an MCP," ask what's in it.
License
MIT
Установка Compliant Empty
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/shinytoyrobots/compliant-empty-mcpFAQ
Compliant Empty MCP бесплатный?
Да, Compliant Empty MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Compliant Empty?
Нет, Compliant Empty работает без API-ключей и переменных окружения.
Compliant Empty — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Compliant Empty в Claude Desktop, Claude Code или Cursor?
Открой Compliant Empty на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectCompare Compliant Empty with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
