内容
# MCPCloud
自主托管的MCP(模型上下文协议)网关。编写任何Python函数,将其注册为技能,它立即成为Claude Desktop、Claude API、Cursor或任何MCP兼容客户端可以调用的工具。
[](https://aws.amazon.com/marketplace/pp/prodview-6ujgmfv3k42hu)
[](LICENSE)
**网站:** [mcpcloud.dev](https://mcpcloud.dev) · **演示:** [demo.mcpcloud.dev](https://demo.mcpcloud.dev) · **GitHub:** [carsor007/mcpcloud](https://github.com/carsor007/mcpcloud)
---
## 工作原理
```
Claude Desktop / Claude API / 任意MCP客户端
↓ MCP工具调用
MCPCloud (此仓库)
↓ 您的代码运行
Jira · Slack · Salesforce · 任意
```
每个注册为技能的Python函数都成为一个MCP工具。无需供应商锁定,无需专有代理框架 — 只需函数。
---
## 快速入门
### 部署到云
在AWS Marketplace订阅,以便在ECS Fargate上进行完全托管的部署 — 无需Docker,无需ECR设置,无需管理服务器。包含7天免费试用。
### 使用Docker本地运行
```bash
git clone https://github.com/carsor007/mcpcloud.git
cd mcpcloud
cp .env.example .env
docker compose up
```
打开 **http://localhost:8000/ui** — 工具浏览器显示所有注册的技能。
---
## 连接MCP客户端
MCPCloud为每种代理类型公开一个配置端点。使用它为任何MCP客户端生成一个可以直接粘贴的代码段。
### Claude Desktop
1. 从 [claude.ai/download](https://claude.ai/download) 安装Claude Desktop
2. 获取您要使用的技能的配置代码段:
```bash
curl http://localhost:8000/mcp/jira_ops/config
```
3. 打开(或创建) `~/Library/Application Support/Claude/claude_desktop_config.json` 并在 `mcpServers` 下添加返回的代码段:
```json
{
"mcpServers": {
"jira_ops": {
"url": "http://localhost:8000/mcp/jira_ops",
"transport": "http"
},
"slack_ops": {
"url": "http://localhost:8000/mcp/slack_ops",
"transport": "http"
}
}
}
```
4. 重新启动Claude Desktop。您的技能将作为工具出现在每个对话中。
> **云部署:** 将 `http://localhost:8000` 替换为您的MCPCloud URL(例如 `https://demo.mcpcloud.dev`)。
### Cursor
在项目根目录中添加相同的JSON到 `.cursor/mcp.json`,或在 `~/.cursor/mcp.json` 处全局添加。URL和传输字段相同。
### Claude API(编程方式)
在初始化客户端会话时,传递MCP服务器URL — 该端点遵循2025-03-26规范的MCP。
---
## 添加技能
将 `.py` 文件放入 `skills/` 目录中。任何具有 `register_all()` 函数的文件都会在启动时自动加载。
```python
# skills/my_tools.py
from registry import SkillResult, get_registry
async def my_skill(input: dict, context: dict) -> SkillResult:
'''在UI中显示的一行描述。'''
return SkillResult(success=True, output={"result": input.get("text", "")})
def register_all():
get_registry().register(
"my_tools", # 代理类型 — 在侧边栏中分组技能
"my_skill", # 技能名称 — 在组下显示
my_skill,
schema={
"type": "object",
"required": ["text"],
"properties": {
"text": {"type": "string", "description": "输入文本"}
}
}
)
```
重启服务器。技能将在UI中显示,并立即作为MCP工具可调用。
---
## 内置技能
两者开箱即用 — 配置凭据时运行真正的API调用,否则返回存根数据。
### `jira_ops`
| 技能 | 描述 |
|---|---|
| `create_ticket` | 创建具有优先级、类型和描述的Jira问题 |
| `get_ticket` | 通过问题键获取状态、分配者和优先级 |
| `search_tickets` | 运行JQL查询并返回摘要列表 |
通过在 `.env` 中设置 `JIRA_URL`、`JIRA_EMAIL`、`JIRA_API_TOKEN` 进行配置。
### `slack_ops`
| 技能 | 描述 |
|---|---|
| `send_message` | 向具有可选字段网格的通道发送消息 |
| `alert` | 发送具有严重性徽章的紧急警报 — 严重时发送 `@channel` |
通过在 `.env` 中设置 `SLACK_WEBHOOK_URL` 进行配置。
---
## 配置
| 变量 | 是否必需 | 描述 |
|---|---|---|
| `REDIS_URL` | 否 | 启用多工作器会话跟踪。在Docker Compose和CloudFormation中自动设置。 |
| `JIRA_URL` | 否 | 例如 `https://your-domain.atlassian.net` |
| `JIRA_EMAIL` | 否 | Atlassian账户电子邮件 |
| `JIRA_API_TOKEN` | 否 | [在Atlassian创建](https://id.atlassian.com/manage-profile/security/api-tokens) |
| `JIRA_PROJECT` | 否 | 默认项目密钥(默认为 `IT`) |
| `SLACK_WEBHOOK_URL` | 否 | [在Slack创建](https://api.slack.com/apps) |
| `ANTHROPIC_API_KEY` | 否 | 仅由调用Claude的技能要求 |
| `OPENAI_API_KEY` | 否 | 仅由调用OpenAI的技能要求 |
---
## 许可证
Apache 2.0 — 见 [LICENSE](LICENSE)。
免费自我托管。托管部署可在 [AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-6ujgmfv3k42hu) 上使用。