Server data from the Official MCP Registry
1000+ creative ways to say no. Polite, humorous, professional rejection responses.
1000+ creative ways to say no. Polite, humorous, professional rejection responses.
Valid MCP server (2 strong, 4 medium validity signals). 6 known CVEs in dependencies (0 critical, 3 high severity) Package registry verified. Imported from the Official MCP Registry. Trust signals: trusted author (3/3 approved).
5 files analyzed ยท 7 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-koneisto-no-as-a-service": {
"args": [
"-y",
"no-as-service"
],
"command": "npx"
}
}
}From the project's GitHub README.
Because saying "no" apparently requires an API now.
Like this project? Give it a โญ on GitHub!
An API service providing 1,000+ creative ways to decline requests. For those who find saying "no" requires more architectural complexity than it deserves, or who simply appreciate the precision of professionally crafted rejection.
NoaaS is a REST API service with an MCP server wrapper that provides creative rejection responses across four categories:
Two Components:
REST API (Primary Service)
+-------------+ +-------------+ +-------------+
| Express | | Cloudflare | | Docker |
| (Node.js) | | Workers | | Container |
+-------------+ +-------------+ +-------------+
| | |
+--------------+--------------+
|
reasons.json
(1000+ responses)
|
+-----------------+-----------------+
| | |
HTTP HTTP HTTP
| | |
+----+----+ +-----+-----+ +-----+-----+
|Web Apps | |curl/fetch | |MCP Server |
| Mobile | | Python | | (stdio) |
+---------+ +-----------+ +-----+-----+
|
stdio
|
+-----------------+
| Claude Desktop |
| Cursor IDE |
+-----------------+
Key Points:
Response Categories:
Note: Original responses were generated by AI. The 252 professional corporate jargon responses and complete categorization system were authored and organized by Claude (Anthropic). So if they're occasionally weird, nonsensical, or sound like a robot trying too hard to be human, that's why. We've kept them anyway. Quality control is overrated.
Just call the API. No installation, no signup, no nonsense.
curl -X POST https://api.mcp-for-no.com/v1/tools/call \
-H "Content-Type: application/json" \
-d '{"method":"getRandomNo","params":{"category":"humorous"}}'
Response:
{
"jsonrpc": "2.0",
"result": {
"response": "I'd love to say yes, but my calendar is allergic to that date."
}
}
Want to run your own instance? We respect your trust issues.
Zero maintenance, global edge network, automatic scaling. The sensible choice.
npm install
# Copy wrangler config template
cp deployment/wrangler.toml.example deployment/wrangler.toml
npx wrangler login --config deployment/wrangler.toml
npx wrangler kv:namespace create "REASONS_KV" --config deployment/wrangler.toml
npx wrangler kv:namespace create "RATE_LIMIT_KV" --config deployment/wrangler.toml
# Update deployment/wrangler.toml with the KV namespace IDs from the output above
npm run worker:kv:upload
npm run worker:deploy
See: docs/deployment/QUICKSTART_WORKERS.md for detailed instructions.
For when you have trust issues with cloud providers or compliance requirements.
# Docker Compose (recommended)
npm run docker:up
# Or plain Docker
npm run docker:build
docker run -d -p 3000:3000 \
-e NODE_ENV=production \
-e CORS_ORIGIN=https://your-domain.com \
noaas
Direct deployment on VPS, PM2, or systemd. You know what you're doing.
npm install
cp .env.example .env
# Edit .env with your configuration
npm start
See: docs/guides/SECURITY.md for security configuration and best practices.
NoaaS includes a native MCP server with stdio transport. Unfortunately, Claude Desktop requires local installation because it cannot connect directly to web services.
Why Local Installation?
Claude Desktop spawns local processes via stdio (stdin/stdout) for MCP servers. It cannot connect to HTTP endpoints directly, even though the actual data comes from our REST API. The local MCP server acts as a thin wrapper that bridges Claude Desktop to the REST API.
You need Node.js (v18+) and Git installed:
brew install node gitapt install nodejs git)1. Clone and build the MCP server:
cd ~
git clone https://github.com/Koneisto/no-as-a-service.git
cd no-as-a-service
npm install
npm run mcp:build
This creates build/mcp-server.js in the cloned directory.
2. Get the absolute path:
While still in the no-as-a-service directory, run:
pwd
This shows your full path, something like: /Users/yourname/no-as-a-service
๐ Write this down - you'll need it in the next step.
1. Find your config file:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.json2. Edit the file and add this configuration:
Replace /YOUR/PATH/HERE with the path from the pwd command above:
{
"mcpServers": {
"noaas": {
"command": "node",
"args": [
"/YOUR/PATH/HERE/no-as-a-service/build/mcp-server.js"
],
"env": {
"API_BASE_URL": "https://api.mcp-for-no.com"
}
}
}
}
โ ๏ธ Important:
/) even on Windows/YOUR/PATH/HERE with your actual path from step 23. Restart Claude Desktop:
Close Claude Desktop completely (quit the application, not just close the window), then reopen it.
4. Test it:
Ask Claude:
If it doesn't work, check your config file for typos.
Config file errors?
Path wrong?
ls build/mcp-server.js in the repo directory to verify the file existsStill not working?
~/Library/Logs/Claude/mcp*.log (macOS)node --versionCursor also supports MCP servers. Same local installation requirement, different config file.
Same as Claude Desktop - Node.js (v18+) and Git. If you already cloned the repo for Claude Desktop, skip to Configuration.
If you haven't already:
cd ~
git clone https://github.com/Koneisto/no-as-a-service.git
cd no-as-a-service
npm install
npm run mcp:build
pwd
Note the path from pwd - you'll need it.
1. Find or create your config file:
~/.cursor/mcp.json<project-root>/.cursor/mcp.json2. Add the MCP server configuration:
Replace /YOUR/PATH/HERE with your actual path:
{
"mcpServers": {
"noaas": {
"command": "node",
"args": [
"/YOUR/PATH/HERE/no-as-a-service/build/mcp-server.js"
],
"env": {
"API_BASE_URL": "https://api.mcp-for-no.com"
}
}
}
}
3. Restart Cursor
Close and reopen Cursor. The MCP server should now be available.
Same as Claude Desktop:
You can also use the REST API directly:
# Get a random rejection
curl -X POST https://api.mcp-for-no.com/v1/tools/call \
-H "Content-Type: application/json" \
-d '{"method":"getRandomNo","params":{"category":"humorous"}}'
# Get count
curl -X POST https://api.mcp-for-no.com/v1/tools/call \
-H "Content-Type: application/json" \
-d '{"method":"getNoCount"}'
See examples/usage-examples.md for code examples in various languages.
POST /v1/tools/call
Content-Type: application/json
{
"method": "getRandomNo",
"params": {
"category": "polite" // optional: polite, humorous, professional, creative
}
}
POST /v1/tools/call
Content-Type: application/json
{
"method": "getNoCount"
}
GET /health
Full API docs: TECHNICAL.md
no-as-a-service/
โโโ src/
โ โโโ index.js # Node.js/Express server
โ โโโ worker.js # Cloudflare Workers server
โโโ data/
โ โโโ reasons.json # 921 rejection messages
โโโ deployment/
โ โโโ Dockerfile # Docker deployment
โ โโโ docker-compose.yml # Docker Compose config
โ โโโ wrangler.toml # Cloudflare Workers config
โโโ docs/
โ โโโ deployment/
โ โ โโโ QUICKSTART_WORKERS.md
โ โ โโโ WORKERS_DEPLOYMENT.md
โ โ โโโ CLOUDFLARE_DEPLOY.md
โ โ โโโ PAGES_DEPLOYMENT.md
โ โโโ guides/
โ โ โโโ SECURITY.md # Security best practices
โ โ โโโ DAILY_LIMIT_GUIDE.md
โ โโโ TECHNICAL.md # Full API reference
โโโ examples/
โ โโโ usage-examples.md # Code examples
โ โโโ mcp-client-config.json
โโโ .env.example # Environment variables template
โโโ .gitignore # Git ignore rules
โโโ package.json # Dependencies
โโโ README.md # You are here
โโโ LICENSE
| Method | Cost | Setup Time | Best For |
|---|---|---|---|
| Cloudflare Workers โญ | $0/month | 5 minutes | Everyone (seriously) |
| Docker ๐ณ | Variable | 10 minutes | Enterprise, self-hosted, K8s |
| Node.js/Express | $5-12/month | 15 minutes | VPS, custom deployments |
| Cloudflare Tunnel | $0/month | 15 minutes | Behind firewalls |
Recommended: Cloudflare Workers (free tier, 100k requests/day, global edge network, zero maintenance)
When to use Docker: Compliance requirements, airgapped environments, existing container infrastructure, or trust issues with cloud providers (understandable).
const response = await fetch('https://noaas.your-deployment.workers.dev/v1/tools/call', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
method: 'getRandomNo',
params: { category: 'professional' }
})
});
const data = await response.json();
console.log(data.result.response);
import requests
response = requests.post(
'https://noaas.your-deployment.workers.dev/v1/tools/call',
json={'method': 'getRandomNo', 'params': {'category': 'polite'}}
)
print(response.json()['result']['response'])
More examples: examples/usage-examples.md
reasons.jsonCategories are divided by array index:
Found a bug? Open an issue.
PRs welcome for:
Q: What's the cost? A: There isn't one. Which should probably concern you, but we're confident you'll use it anyway.
Q: What are the rate limits? A: 30 requests per minute per IP. One every 2 seconds. If you need more than that, you're doing something wrong.
Q: Can I use this commercially? A: Of course. Personal or commercial, we don't discriminate. Just don't blame us when your users hate your app.
Q: Is there an SLA? A: Your expectations should be calibrated to match what you're paying for this.
Q: Why did you build this? A: Someone had to. And apparently, it was us. You're welcome, we suppose.
๐ MIT โ do whatever, just don't say yes when you should say no. Attribution appreciated but not required.
NoaaS - Helping you waste everyone's time more efficiently since 2025.
Be the first to review this server!
by Modelcontextprotocol ยท Developer Tools
Read, search, and manipulate Git repositories programmatically
by Toleno ยท Developer Tools
Toleno Network MCP Server โ Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace ยท Developer Tools
Create, build, and publish Python MCP servers to PyPI โ conversationally.
by Microsoft ยท Content & Media
Convert files (PDF, Word, Excel, images, audio) to Markdown for LLM consumption
by mcp-marketplace ยท Developer Tools
Scaffold, build, and publish TypeScript MCP servers to npm โ conversationally
by mcp-marketplace ยท Finance
Free stock data and market news for any MCP-compatible AI assistant.