无服务
](https://www.npmjs.com/package/no-as-service)  
因为现在说“不”显然需要API。
像这个项目? 给它一个⭐ 在GitHub上!
API服务,提供1000多种创造性的方式来拒绝请求。对于那些认为说“不”需要比应有的更复杂的架构,或者只是欣赏专业拒绝的准确性的人来说。
这是什么?
NoaaS是一个 REST API服务 带着一个 MCP服务器包装器 它提供了四类创造性的拒绝反应:
两个组件:
- REST API (主要)-公共HTTP API任何人都可以直接调用
- MCP服务器 (包装器)-通过stdio传输将Claude Desktop连接到REST API
建筑
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 |
+-----------------+要点:
- REST API 是具有所有业务逻辑的主要服务
- MCP服务器 是一个将人工智能助手桥接到REST API的瘦stdio包装器
- 适用于Claude Desktop、Cursor和其他MCP兼容客户端
响应类别:
- 礼貌的 -因为当你想让他们认为你真的考虑了他们的要求
- 幽默的 -因为添加一个笑话会让拒绝感觉不那么像拒绝(事实并非如此)
- 专业的 -公司认可的拒绝方式,听起来像你在乎(你不在乎)
- 创意 -对于那些认为聪明会让他们更有趣(有争议)的人来说
注: 原始回复由人工智能生成。252条专业企业术语回复和完整的分类系统由Claude(Anthropic)撰写和组织。所以,如果它们偶尔会变得奇怪、荒谬,或者听起来像是机器人太努力地想要成为人类,这就是原因。不管怎样,我们都保留了它们。质量控制被高估了。
快速开始
使用公共服务
只需调用API。没有安装,没有注册,没有废话。
curl -X POST https://api.mcp-for-no.com/v1/tools/call \
-H "Content-Type: application/json" \
-d '{"method":"getRandomNo","params":{"category":"humorous"}}'答复:
{
"jsonrpc": "2.0",
"result": {
"response": "I'd love to say yes, but my calendar is allergic to that date."
}
}部署您自己的
想运行自己的实例吗?我们尊重您的信任问题。
推荐:Cloudflare Workers(免费)
零维护,全球边缘网络,自动扩展。明智的选择。
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请参阅: docs/deployment/QUICKSTART_WORKERS.md 详细说明。
替代方案:Docker(企业/自托管)
当您与云提供商或合规要求存在信任问题时。
# 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高级:Node.js/Express
直接部署在VPS、PM2或systemd上。你知道你在做什么。
npm install
cp .env.example .env
# Edit .env with your configuration
npm start请参阅: 文档/指南/安全.md 用于安全配置和最佳实践。
与克劳德桌面(MCP)一起使用
NoaaS包括一个具有stdio传输的本地MCP服务器。不幸的是,Claude Desktop需要本地安装,因为它无法直接连接到web服务。
为什么选择本地安装? Claude Desktop通过stdio(stdin/stdout)为MCP服务器生成本地进程。它不能直接连接到HTTP端点,即使实际数据来自我们的REST API。本地MCP服务器充当将Claude Desktop桥接到REST API的瘦包装器。
先决条件
你需要安装Node.js(v18+)和Git:
- macOS:
brew install node git - 窗户: 下载自
- Linux: 使用您的包管理器(例如。,
apt install nodejs git)
安装
1.克隆并构建MCP服务器:
cd ~
git clone https://github.com/Koneisto/no-as-a-service.git
cd no-as-a-service
npm install
npm run mcp:build这创造了 build/mcp-server.js 在克隆的目录中。
2.获取绝对路径:
虽然还在 no-as-a-service 目录,运行:
pwd这显示了您的完整路径,类似于: /Users/yourname/no-as-a-service
📝 把这写下来——下一步你需要它。
Claude桌面配置
1.查找您的配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 窗户:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
2.编辑文件并添加此配置:
替换 /YOUR/PATH/HERE 与路径从 pwd 上面的命令:
{
"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"
}
}
}
}⚠️ 重要提示:
- 使用正斜杠(
/)即使在Windows上 - 替换
/YOUR/PATH/HERE从步骤2开始的实际路径 - 一个拼写错误就行不通了——路径区分大小写
3.重新启动克劳德桌面:
完全关闭Claude Desktop(退出应用程序,而不仅仅是关闭窗口),然后重新打开它。
4.测试:
问克劳德:
- _“给我一个礼貌的方式来拒绝这次会议”_
- _“你有多少种不同的拒绝方式?”_
如果它不起作用,请检查配置文件中的拼写错误。
可用工具
- Getrandomno -获得创造性拒绝(可选类别:礼貌、幽默、专业、创意)
- getNoCount -获取总计数(1021)
故障排除
配置文件错误?
- 在以下位置验证JSON Jsonlin.com
路径错误?
- 跑
ls build/mcp-server.js在repo目录中验证文件是否存在
仍然不工作吗?
- 查看日志
~/Library/Logs/Claude/mcp*.log(macOS) - 确保已安装Node.js:
node --version - 确保您完全重新启动了Claude Desktop
与游标IDE(MCP)一起使用
Cursor还支持MCP服务器。相同的本地安装要求,不同的配置文件。
先决条件
与Claude Desktop相同-Node.js(v18+)和Git。如果您已经克隆了Claude Desktop的仓库,请跳到配置。
安装
如果你还没有:
cd ~
git clone https://github.com/Koneisto/no-as-a-service.git
cd no-as-a-service
npm install
npm run mcp:build
pwd请注意以下路径 pwd -你会需要它的。
光标配置
1.查找或创建配置文件:
- 全球(所有项目):
~/.cursor/mcp.json - 项目具体: `
/.cursor/mcp.json`
2.添加MCP服务器配置:
替换 /YOUR/PATH/HERE 根据您的实际路径:
{
"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.重新启动游标
关闭并重新打开游标。MCP服务器现在应该可用。
可用工具
与Claude Desktop相同:
- Getrandomno -获得创造性拒绝(可选类别:礼貌、幽默、专业、创意)
- getNoCount -获取总计数(1021)
API使用(直接HTTP)
您还可以直接使用REST API:
# 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"}'看 examples/usage-examples.md 用于各种语言的代码示例。
特性
- 无认证 -没有信用卡,没有注册,没有价值主张
- 快速响应时间 -因为等待拒绝显然是不可接受的
- 全球分布 -立即从世界任何地方说不
- 无跟踪 -我们不太关心你的行踪
- 速率限制 -每分钟30个请求。每2秒一次。仍然慷慨。
- MCP兼容\*-\*通过本地stdio包装器,因为SSE传输太有意义了
- 1000+响应 -因为显然100种说不的方式还不够多
- 无认证 -只需发送请求。我们懒得实现OAuth。
api参考
随机拒绝
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 /healthAPI完整文档: 技术.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部署选项
| 方法 | 成本 | 设置时间 | 最适合 |
|---|---|---|---|
| Cloudflare员工 ⭐ | $0/月 | 5分钟 | 每个人(认真) |
| 码头工人 🐳 | 变量 | 10分钟 | 企业版,自托管,K8s |
| Node.js/Express | 每月5-12美元 | 15分钟 | VPS,自定义部署 |
| Cloudflare隧道 | 每月0美元 | 15分钟 | 防火墙后 |
推荐: Cloudflare Workers(免费层,每天10万个请求,全球边缘网络,零维护)
何时使用Docker: 合规要求、气隙环境、现有容器基础设施或与云提供商的信任问题(可以理解)。
文档
部署指南
- 快速启动_工人.md -在5分钟内部署到Cloudflare Workers
- WORKERS_DEPLOYMENT.md -全面的Cloudflare Workers指南
- CLOUDFLARE_DEPLOY.md -所有Cloudflare部署方法
- 第页_展开.md -部署登录页面
配置和安全
- 安全.md -安全最佳实践、环境变量、CORS、速率限制
- DAILY_LIMIT_GUIDE.md -解释每日费率限制
技术参考
- 技术.md -API完整参考和技术细节
- examples/usage-examples.md -代码示例
例子
JavaScript
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);python
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'])更多示例: examples/usage-examples.md
贡献
添加新的拒绝消息
- 编辑
reasons.json - 将您的拒绝添加到相应的类别部分
- 提交PR
类别按数组索引划分:
- 礼貌: 0-25%
- 幽默: 25-50%
- 专业: 50-75%
- 创意: 75-100%
报告问题
发现bug了吗? 打开一个问题.
代码贡献
欢迎PR:
- 错误修正
- 文档改进
- 新功能(请先打开一个问题)
常见问题解答
Q: 费用是多少? A: 没有。这可能会让你担心,但我们相信你无论如何都会使用它。
Q: 利率限制是什么? A: 每个IP每分钟30个请求。每2秒一次。如果你需要更多,那你就做错了。
Q: 我可以在商业上使用它吗? A: 当然。无论是个人还是商业,我们都不歧视。当你的用户讨厌你的应用程序时,不要责怪我们。
Q: 是否有SLA? A: 你的期望应该与你为此付出的代价相匹配。
Q: 你为什么建造这个? A: 有人不得不这么做。显然,是我们。我们想,不用客气。
许可证
📄 麻省理工学院——无论做什么,都不要在应该说不的时候说“是”。归因受到赞赏,但不是必需的。
鸣谢
- 由优先级有问题的人建造
- 受到所有无法拒绝的人的启发
- 由Cloudflare Workers提供支持(可能)
- 克劳德(Anthropic)撰写的回应分类和252份专业企业回应
- 人工智能生成的769条原始回复
链接
- 登录页面: mcp-for-no.com
- API终结点: api.mcp-for-no.com
- 文档: 技术文档
- 部署指南: Cloudflare员工快速入门
- 问题: 报告错误
______________________________________________________________________
诺亚 -自2025年以来,帮助您更有效地浪费每个人的时间。
