openaaas-mcp-adapter 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- openaaas_mcp_adapter-0.1.0/PKG-INFO +127 -0
- openaaas_mcp_adapter-0.1.0/PYPI_README.md +103 -0
- openaaas_mcp_adapter-0.1.0/README.md +419 -0
- openaaas_mcp_adapter-0.1.0/pyproject.toml +35 -0
- openaaas_mcp_adapter-0.1.0/setup.cfg +4 -0
- openaaas_mcp_adapter-0.1.0/src/openaaas_mcp_adapter/__init__.py +3 -0
- openaaas_mcp_adapter-0.1.0/src/openaaas_mcp_adapter/__main__.py +17 -0
- openaaas_mcp_adapter-0.1.0/src/openaaas_mcp_adapter/config.py +129 -0
- openaaas_mcp_adapter-0.1.0/src/openaaas_mcp_adapter/http_client.py +118 -0
- openaaas_mcp_adapter-0.1.0/src/openaaas_mcp_adapter/tools.py +1081 -0
- openaaas_mcp_adapter-0.1.0/src/openaaas_mcp_adapter.egg-info/PKG-INFO +127 -0
- openaaas_mcp_adapter-0.1.0/src/openaaas_mcp_adapter.egg-info/SOURCES.txt +14 -0
- openaaas_mcp_adapter-0.1.0/src/openaaas_mcp_adapter.egg-info/dependency_links.txt +1 -0
- openaaas_mcp_adapter-0.1.0/src/openaaas_mcp_adapter.egg-info/entry_points.txt +2 -0
- openaaas_mcp_adapter-0.1.0/src/openaaas_mcp_adapter.egg-info/requires.txt +2 -0
- openaaas_mcp_adapter-0.1.0/src/openaaas_mcp_adapter.egg-info/top_level.txt +1 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: openaaas-mcp-adapter
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: OpenAaaS MCP adapter — connect Claude Desktop, Cursor, Cline to OpenAaaS Server
|
|
5
|
+
License-Expression: MIT
|
|
6
|
+
Project-URL: Homepage, https://www.open-aaas.com
|
|
7
|
+
Project-URL: Repository, https://github.com/Wolido/OpenAaaS
|
|
8
|
+
Project-URL: Issues, https://github.com/Wolido/OpenAaaS/issues
|
|
9
|
+
Project-URL: Documentation, https://www.open-aaas.com
|
|
10
|
+
Keywords: mcp,openaaas,ai-agent,claude,cursor,cline
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
19
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
20
|
+
Requires-Python: >=3.10
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
Requires-Dist: fastmcp>=3.0.0
|
|
23
|
+
Requires-Dist: httpx>=0.27.0
|
|
24
|
+
|
|
25
|
+
# OpenAaaS MCP Adapter
|
|
26
|
+
|
|
27
|
+
Connect Claude Desktop, Cursor, Cline and any MCP-compatible AI client to the [OpenAaaS Server](https://www.open-aaas.com).
|
|
28
|
+
|
|
29
|
+
## Quick Install
|
|
30
|
+
|
|
31
|
+
The easiest way to run the adapter without installing it locally is via **uvx** (requires [uv](https://docs.astral.sh/uv/)):
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
uvx openaaas-mcp-adapter
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Or install globally with **pipx**:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
pipx install openaaas-mcp-adapter
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Client Configuration
|
|
44
|
+
|
|
45
|
+
### Claude Desktop
|
|
46
|
+
|
|
47
|
+
Edit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or the equivalent path on your platform:
|
|
48
|
+
|
|
49
|
+
```json
|
|
50
|
+
{
|
|
51
|
+
"mcpServers": {
|
|
52
|
+
"openaaas": {
|
|
53
|
+
"command": "uvx",
|
|
54
|
+
"args": ["openaaas-mcp-adapter"]
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
If you used `pipx install`, replace the command with:
|
|
61
|
+
|
|
62
|
+
```json
|
|
63
|
+
{
|
|
64
|
+
"mcpServers": {
|
|
65
|
+
"openaaas": {
|
|
66
|
+
"command": "openaaas-mcp-adapter"
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Cursor
|
|
73
|
+
|
|
74
|
+
In Cursor Settings → MCP, add a new server with the following configuration:
|
|
75
|
+
|
|
76
|
+
```json
|
|
77
|
+
{
|
|
78
|
+
"mcpServers": {
|
|
79
|
+
"openaaas": {
|
|
80
|
+
"command": "uvx",
|
|
81
|
+
"args": ["openaaas-mcp-adapter"]
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Standard Workflow
|
|
88
|
+
|
|
89
|
+
Once the adapter is connected, ask your AI agent to follow these steps:
|
|
90
|
+
|
|
91
|
+
1. **`set_server_url`** — Set the OpenAaaS server address (e.g. `https://api.open-aaas.com`)
|
|
92
|
+
2. **`register`** — Register a client name and obtain an API key (only needed once)
|
|
93
|
+
3. **`list_services`** — Browse available agent services
|
|
94
|
+
4. **`get_service_usage`** — Read the detailed usage guide for a chosen service
|
|
95
|
+
5. **`submit_task`** — Submit a task (supports file uploads)
|
|
96
|
+
6. **`get_task`** — Poll for task status and final results
|
|
97
|
+
7. **`list_files`** — List result files produced by the task
|
|
98
|
+
8. **`download_result`** — Download result files (ZIP archives are extracted automatically)
|
|
99
|
+
|
|
100
|
+
## Available Tools (14)
|
|
101
|
+
|
|
102
|
+
| Tool | Description |
|
|
103
|
+
|------|-------------|
|
|
104
|
+
| `discover` | Discover server API info and available endpoints |
|
|
105
|
+
| `set_server_url` | Set or update a server address |
|
|
106
|
+
| `register` | Register a client and get an API key |
|
|
107
|
+
| `update_profile` | Update the registered client name |
|
|
108
|
+
| `list_services` | List available agent services |
|
|
109
|
+
| `get_service_usage` | Get detailed usage instructions for a service |
|
|
110
|
+
| `submit_task` | Submit a task to an agent (supports file upload) |
|
|
111
|
+
| `get_task` | Check task status and retrieve results |
|
|
112
|
+
| `cancel_task` | Cancel a running task |
|
|
113
|
+
| `list_files` | List result files for a task |
|
|
114
|
+
| `download_result` | Download result files (auto-extracts ZIP) |
|
|
115
|
+
| `list_servers` | List all configured servers |
|
|
116
|
+
| `set_default_server` | Switch the default server alias |
|
|
117
|
+
| `remove_server` | Remove a server configuration |
|
|
118
|
+
|
|
119
|
+
## Links
|
|
120
|
+
|
|
121
|
+
- **Homepage:** [https://www.open-aaas.com](https://www.open-aaas.com)
|
|
122
|
+
- **Repository:** [https://github.com/Wolido/OpenAaaS](https://github.com/Wolido/OpenAaaS)
|
|
123
|
+
- **Issues:** [https://github.com/Wolido/OpenAaaS/issues](https://github.com/Wolido/OpenAaaS/issues)
|
|
124
|
+
|
|
125
|
+
## License
|
|
126
|
+
|
|
127
|
+
MIT
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# OpenAaaS MCP Adapter
|
|
2
|
+
|
|
3
|
+
Connect Claude Desktop, Cursor, Cline and any MCP-compatible AI client to the [OpenAaaS Server](https://www.open-aaas.com).
|
|
4
|
+
|
|
5
|
+
## Quick Install
|
|
6
|
+
|
|
7
|
+
The easiest way to run the adapter without installing it locally is via **uvx** (requires [uv](https://docs.astral.sh/uv/)):
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
uvx openaaas-mcp-adapter
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Or install globally with **pipx**:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
pipx install openaaas-mcp-adapter
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Client Configuration
|
|
20
|
+
|
|
21
|
+
### Claude Desktop
|
|
22
|
+
|
|
23
|
+
Edit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or the equivalent path on your platform:
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
{
|
|
27
|
+
"mcpServers": {
|
|
28
|
+
"openaaas": {
|
|
29
|
+
"command": "uvx",
|
|
30
|
+
"args": ["openaaas-mcp-adapter"]
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
If you used `pipx install`, replace the command with:
|
|
37
|
+
|
|
38
|
+
```json
|
|
39
|
+
{
|
|
40
|
+
"mcpServers": {
|
|
41
|
+
"openaaas": {
|
|
42
|
+
"command": "openaaas-mcp-adapter"
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Cursor
|
|
49
|
+
|
|
50
|
+
In Cursor Settings → MCP, add a new server with the following configuration:
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"mcpServers": {
|
|
55
|
+
"openaaas": {
|
|
56
|
+
"command": "uvx",
|
|
57
|
+
"args": ["openaaas-mcp-adapter"]
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Standard Workflow
|
|
64
|
+
|
|
65
|
+
Once the adapter is connected, ask your AI agent to follow these steps:
|
|
66
|
+
|
|
67
|
+
1. **`set_server_url`** — Set the OpenAaaS server address (e.g. `https://api.open-aaas.com`)
|
|
68
|
+
2. **`register`** — Register a client name and obtain an API key (only needed once)
|
|
69
|
+
3. **`list_services`** — Browse available agent services
|
|
70
|
+
4. **`get_service_usage`** — Read the detailed usage guide for a chosen service
|
|
71
|
+
5. **`submit_task`** — Submit a task (supports file uploads)
|
|
72
|
+
6. **`get_task`** — Poll for task status and final results
|
|
73
|
+
7. **`list_files`** — List result files produced by the task
|
|
74
|
+
8. **`download_result`** — Download result files (ZIP archives are extracted automatically)
|
|
75
|
+
|
|
76
|
+
## Available Tools (14)
|
|
77
|
+
|
|
78
|
+
| Tool | Description |
|
|
79
|
+
|------|-------------|
|
|
80
|
+
| `discover` | Discover server API info and available endpoints |
|
|
81
|
+
| `set_server_url` | Set or update a server address |
|
|
82
|
+
| `register` | Register a client and get an API key |
|
|
83
|
+
| `update_profile` | Update the registered client name |
|
|
84
|
+
| `list_services` | List available agent services |
|
|
85
|
+
| `get_service_usage` | Get detailed usage instructions for a service |
|
|
86
|
+
| `submit_task` | Submit a task to an agent (supports file upload) |
|
|
87
|
+
| `get_task` | Check task status and retrieve results |
|
|
88
|
+
| `cancel_task` | Cancel a running task |
|
|
89
|
+
| `list_files` | List result files for a task |
|
|
90
|
+
| `download_result` | Download result files (auto-extracts ZIP) |
|
|
91
|
+
| `list_servers` | List all configured servers |
|
|
92
|
+
| `set_default_server` | Switch the default server alias |
|
|
93
|
+
| `remove_server` | Remove a server configuration |
|
|
94
|
+
|
|
95
|
+
## Links
|
|
96
|
+
|
|
97
|
+
- **Homepage:** [https://www.open-aaas.com](https://www.open-aaas.com)
|
|
98
|
+
- **Repository:** [https://github.com/Wolido/OpenAaaS](https://github.com/Wolido/OpenAaaS)
|
|
99
|
+
- **Issues:** [https://github.com/Wolido/OpenAaaS/issues](https://github.com/Wolido/OpenAaaS/issues)
|
|
100
|
+
|
|
101
|
+
## License
|
|
102
|
+
|
|
103
|
+
MIT
|
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
# OpenAaaS MCP Adapter
|
|
2
|
+
|
|
3
|
+
OpenAaaS 的 MCP(Model Context Protocol)适配器,让 Claude Desktop、Cursor、Cline 等支持 MCP 的 AI 客户端能够连接 OpenAaaS Server,发现远程服务、提交任务并获取结果。
|
|
4
|
+
|
|
5
|
+
基于 [MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk) 构建,提供 14 个核心 Tool,覆盖完整的客户端能力:服务发现、注册认证、任务提交、结果下载及多服务器管理。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 安装
|
|
10
|
+
|
|
11
|
+
支持多种安装方式,按推荐程度排序:
|
|
12
|
+
|
|
13
|
+
### 推荐:uvx(零安装)
|
|
14
|
+
|
|
15
|
+
无需安装,直接运行(需已安装 [uv](https://docs.astral.sh/uv/)):
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
uvx openaaas-mcp-adapter
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### 备选:pipx
|
|
22
|
+
|
|
23
|
+
使用 [pipx](https://pipx.pypa.io/) 安装到独立虚拟环境:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
pipx install openaaas-mcp-adapter
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
安装后全局可用:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
openaaas-mcp-adapter
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### PyPI 安装(虚拟环境)
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
pip install openaaas-mcp-adapter
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 本地源码运行(开发)
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
cd openaaas-mcp-adapter
|
|
45
|
+
uv sync
|
|
46
|
+
uv run openaaas-mcp-adapter
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 全局 pip 安装(不推荐)
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
pip install openaaas-mcp-adapter
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 客户端配置
|
|
58
|
+
|
|
59
|
+
### Claude Desktop
|
|
60
|
+
|
|
61
|
+
编辑 `~/Library/Application Support/Claude/claude_desktop_config.json`(macOS)或对应平台配置:
|
|
62
|
+
|
|
63
|
+
**uvx 方式(推荐):**
|
|
64
|
+
|
|
65
|
+
```json
|
|
66
|
+
{
|
|
67
|
+
"mcpServers": {
|
|
68
|
+
"openaaas": {
|
|
69
|
+
"command": "uvx",
|
|
70
|
+
"args": ["openaaas-mcp-adapter"]
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**pipx 方式:**
|
|
77
|
+
|
|
78
|
+
```json
|
|
79
|
+
{
|
|
80
|
+
"mcpServers": {
|
|
81
|
+
"openaaas": {
|
|
82
|
+
"command": "openaaas-mcp-adapter"
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Cursor
|
|
89
|
+
|
|
90
|
+
在 Cursor 设置 → MCP → 添加 server,粘贴对应配置:
|
|
91
|
+
|
|
92
|
+
**uvx 方式(推荐):**
|
|
93
|
+
|
|
94
|
+
```json
|
|
95
|
+
{
|
|
96
|
+
"mcpServers": {
|
|
97
|
+
"openaaas": {
|
|
98
|
+
"command": "uvx",
|
|
99
|
+
"args": ["openaaas-mcp-adapter"]
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**pipx 方式:**
|
|
106
|
+
|
|
107
|
+
```json
|
|
108
|
+
{
|
|
109
|
+
"mcpServers": {
|
|
110
|
+
"openaaas": {
|
|
111
|
+
"command": "openaaas-mcp-adapter"
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Cline
|
|
118
|
+
|
|
119
|
+
在 Cline 的 MCP 设置中添加 server,配置方式与 Cursor 相同。
|
|
120
|
+
|
|
121
|
+
> **提示**:配置修改后,需要重启客户端或刷新 MCP 连接才能生效。
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## 配置文件
|
|
126
|
+
|
|
127
|
+
配置文件保存在用户主目录下:
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
~/.openaaas-mcp-adapter/config.json
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
首次运行时若不存在,会自动创建默认配置:
|
|
134
|
+
|
|
135
|
+
```json
|
|
136
|
+
{
|
|
137
|
+
"servers": {
|
|
138
|
+
"default": {
|
|
139
|
+
"server_url": "http://localhost:8080",
|
|
140
|
+
"api_key": "",
|
|
141
|
+
"client_id": "",
|
|
142
|
+
"name": ""
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
"default_server": "default"
|
|
146
|
+
}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
注册成功后的配置示例:
|
|
150
|
+
|
|
151
|
+
```json
|
|
152
|
+
{
|
|
153
|
+
"servers": {
|
|
154
|
+
"default": {
|
|
155
|
+
"server_url": "https://api.open-aaas.com",
|
|
156
|
+
"api_key": "ak_client_xxx",
|
|
157
|
+
"client_id": "xxx",
|
|
158
|
+
"name": "my-client"
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
"default_server": "default"
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
运行 `register` 成功后会自动写入 `api_key`、`client_id` 和 `name`。
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## 多服务器配置
|
|
170
|
+
|
|
171
|
+
支持同时配置多个服务器,通过 `server` 参数指定目标服务器。
|
|
172
|
+
|
|
173
|
+
### 为多个服务器分别注册
|
|
174
|
+
|
|
175
|
+
每个服务器别名有独立的注册信息:
|
|
176
|
+
|
|
177
|
+
```
|
|
178
|
+
register(name: "my-prod-client", server: "prod")
|
|
179
|
+
register(name: "my-local-client", server: "local")
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
两个服务器会分别保存各自的 api_key,互不干扰。
|
|
183
|
+
|
|
184
|
+
### 设置服务器地址
|
|
185
|
+
|
|
186
|
+
```
|
|
187
|
+
set_server_url(server_url: "https://api.open-aaas.com", server: "prod")
|
|
188
|
+
set_server_url(server_url: "http://127.0.0.1:8080", server: "local")
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### 切换默认服务器
|
|
192
|
+
|
|
193
|
+
```
|
|
194
|
+
set_default_server(server: "prod")
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### 列出所有配置的服务器
|
|
198
|
+
|
|
199
|
+
```
|
|
200
|
+
list_servers()
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## 可用工具
|
|
206
|
+
|
|
207
|
+
| 工具名 | 功能描述 |
|
|
208
|
+
|--------|----------|
|
|
209
|
+
| `discover` | 发现服务端 API 信息(返回服务端版本、Base URL、认证方式、可用端点列表、已注册服务列表) |
|
|
210
|
+
| `set_server_url` | 设置服务器地址并保存到 config.json。已有注册信息(api_key)的服务器不会被覆盖 |
|
|
211
|
+
| `register` | 注册客户端,自动保存 api_key(仅需一次) |
|
|
212
|
+
| `update_profile` | 修改用户名 |
|
|
213
|
+
| `list_services` | 列出可用服务(返回轻量摘要:id/name/description/agent_status/access_type/has_permission/registration_status,不含 usage 长文本) |
|
|
214
|
+
| `get_service_usage` | 获取指定服务的详细 usage(能力范围、调用规范、返回格式、限制条件) |
|
|
215
|
+
| `submit_task` | 提交任务到远程 Agent(支持文件上传,支持 `session_id` 保持对话上下文) |
|
|
216
|
+
| `get_task` | 查询任务状态和最终结果(仅在用户要求时调用,不要主动轮询) |
|
|
217
|
+
| `cancel_task` | 取消执行中的任务 |
|
|
218
|
+
| `list_files` | 列出任务的结果文件列表 |
|
|
219
|
+
| `download_result` | 下载任务结果文件(支持 file_id 单选或 download_all 全选),未指定 file_id 且 download_all=false 时默认优先下载 .zip 文件,否则下载第一个文件。自动检测并解压 .zip 文件 |
|
|
220
|
+
| `list_servers` | 列出所有已配置的服务器 |
|
|
221
|
+
| `set_default_server` | 切换默认服务器 |
|
|
222
|
+
| `remove_server` | 删除指定服务器的配置(不能删除默认服务器) |
|
|
223
|
+
|
|
224
|
+
### 参数说明
|
|
225
|
+
|
|
226
|
+
| 工具名 | 参数 | 必填 | 说明 |
|
|
227
|
+
|--------|------|------|------|
|
|
228
|
+
| `discover` | `server_url` | ✅ | 目标服务器地址 |
|
|
229
|
+
| `set_server_url` | `server_url` | ✅ | 服务器地址(以 http:// 或 https:// 开头) |
|
|
230
|
+
| | `server` | ❌ | 服务器别名,默认 `"default"` |
|
|
231
|
+
| `register` | `name` | ✅ | 客户端名称(长度 ≤64,不含 ASCII 控制字符、Unicode 控制字符及 `/\<>\|&;$`) |
|
|
232
|
+
| | `server` | ❌ | 服务器别名,默认 `"default"` |
|
|
233
|
+
| `update_profile` | `name` | ✅ | 新用户名(同上约束) |
|
|
234
|
+
| | `server` | ❌ | 服务器别名,默认 `"default"` |
|
|
235
|
+
| `list_services` | `server` | ❌ | 服务器别名,默认 `"default"` |
|
|
236
|
+
| `get_service_usage` | `service_id` | ✅ | 目标服务 ID |
|
|
237
|
+
| | `server` | ❌ | 服务器别名,默认 `"default"` |
|
|
238
|
+
| `submit_task` | `service_id` | ✅ | 目标服务 ID |
|
|
239
|
+
| | `task_prompt` | ✅ | 任务描述 prompt |
|
|
240
|
+
| | `output_prompt` | ❌ | 输出格式要求,默认 `""` |
|
|
241
|
+
| | `input_files` | ❌ | 本地文件路径列表(最多 10 个,单文件 ≤100MB,仅限当前工作目录) |
|
|
242
|
+
| | `session_id` | ❌ | 会话 ID,用于保持对话上下文 |
|
|
243
|
+
| | `server` | ❌ | 服务器别名,默认 `"default"` |
|
|
244
|
+
| `get_task` | `task_id` | ✅ | 任务 ID |
|
|
245
|
+
| | `server` | ❌ | 服务器别名,默认 `"default"` |
|
|
246
|
+
| `cancel_task` | `task_id` | ✅ | 任务 ID |
|
|
247
|
+
| | `server` | ❌ | 服务器别名,默认 `"default"` |
|
|
248
|
+
| `list_files` | `task_id` | ✅ | 任务 ID |
|
|
249
|
+
| | `server` | ❌ | 服务器别名,默认 `"default"` |
|
|
250
|
+
| `download_result` | `task_id` | ✅ | 任务 ID |
|
|
251
|
+
| | `file_id` | ❌ | 指定文件 ID,默认 `""` |
|
|
252
|
+
| | `download_all` | ❌ | 是否下载全部文件,默认 `false` |
|
|
253
|
+
| | `server` | ❌ | 服务器别名,默认 `"default"` |
|
|
254
|
+
| `list_servers` | — | — | 无参数 |
|
|
255
|
+
| `set_default_server` | `server` | ✅ | 要设为默认的服务器别名 |
|
|
256
|
+
| `remove_server` | `server` | ✅ | 要删除的服务器别名 |
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## 渐进式信息获取
|
|
261
|
+
|
|
262
|
+
本插件遵循"信息渐进式披露"原则:不要一次性获取所有服务的完整信息。
|
|
263
|
+
|
|
264
|
+
### 标准使用流程
|
|
265
|
+
|
|
266
|
+
1. `set_server_url` — 设置服务端地址(如未设置,默认连接 localhost)
|
|
267
|
+
2. `register` — 注册获取 api_key(仅需一次)
|
|
268
|
+
3. `list_services` — 获取轻量服务列表(id/name/description/agent_status/access_type/has_permission/registration_status),浏览并筛选候选服务
|
|
269
|
+
4. `get_service_usage` — 对筛选出的候选服务,按需获取详细 usage(能力范围、调用规范、返回格式、限制条件)
|
|
270
|
+
5. 根据 usage 内容,构造正确的 `task_prompt` 和 `output_prompt`
|
|
271
|
+
6. `submit_task` — 提交任务(可附带文件),保存返回的 `task_id`
|
|
272
|
+
7. `get_task` — 仅在用户明确要求时调用,查询任务状态和最终结果(不要主动轮询)
|
|
273
|
+
8. `download_result` — 任务完成后下载结果文件
|
|
274
|
+
|
|
275
|
+
### 为什么这样设计
|
|
276
|
+
|
|
277
|
+
- `list_services` 返回轻量摘要,不占用 LLM 上下文
|
|
278
|
+
- `usage` 通常包含大量文本(能力说明、调用规范、示例等),只应在确定使用该服务时获取
|
|
279
|
+
- 避免一次性加载所有服务的完整文档导致上下文溢出
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
## MCP 传输说明
|
|
284
|
+
|
|
285
|
+
- **MCP Transport**:`stdio`(标准输入输出),适配器作为子进程由 MCP 客户端启动,所有 tool 调用通过 JSON-RPC 在 stdio 上通信
|
|
286
|
+
- **文件传输**:文件上传和下载不走 MCP 协议,而是通过独立的 **HTTP(multipart/form-data)** 直连 OpenAaaS Server:
|
|
287
|
+
- `submit_task` 中的 `input_files` 通过 HTTP multipart 上传
|
|
288
|
+
- `download_result` 通过 HTTP GET 下载文件
|
|
289
|
+
- 这样设计避免了通过 MCP stdio 传输大体积二进制数据,保证性能和稳定性
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
|
|
293
|
+
## 注册约束
|
|
294
|
+
|
|
295
|
+
- 每个服务器别名可以独立注册。如果**当前服务器**已有 `api_key`,说明已完成注册,**请勿重复调用 `register`**
|
|
296
|
+
- 如需修改用户名,请使用 `update_profile`(示例:`update_profile(name: "new-name")`)
|
|
297
|
+
- **`name` 参数约束**:长度不超过 64 个字符,不含 ASCII 控制字符、Unicode 控制字符及 `\ / < > | & ; $`
|
|
298
|
+
- **服务器地址保护**:`set_server_url` 不会自动覆盖已有注册信息的服务器。如果该服务器已有 `api_key`,修改地址会被阻止,防止意外丢失注册信息
|
|
299
|
+
- 如需切换到新服务器地址,请使用新的 `server` 别名(多服务器配置),或先用 `remove_server` 删除旧配置
|
|
300
|
+
- **跨别名重复注册检查**:如果某个 `server_url` 已被其他 `server` 别名注册过(即该 URL 已有 api_key),则新别名无法再次注册或设置该地址,防止同一服务器被多个别名重复记录
|
|
301
|
+
- **删除服务器**:如需删除某个服务器配置,使用 `remove_server`。注意不能删除默认服务器,删除前需先用 `set_default_server` 切换默认服务器
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## 使用示例
|
|
306
|
+
|
|
307
|
+
### 基础流程
|
|
308
|
+
|
|
309
|
+
1. **设置服务器地址**(可选,默认 http://localhost:8080):
|
|
310
|
+
```
|
|
311
|
+
set_server_url(server_url: "https://api.open-aaas.com")
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
可选:发现服务端信息:
|
|
315
|
+
```
|
|
316
|
+
discover(server_url: "https://api.open-aaas.com")
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
2. **注册客户端**:
|
|
320
|
+
```
|
|
321
|
+
register(name: "my-client")
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
3. **列出服务并筛选候选**:
|
|
325
|
+
```
|
|
326
|
+
list_services()
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
4. **对目标服务获取详细 usage**:
|
|
330
|
+
```
|
|
331
|
+
get_service_usage(service_id: "my-service")
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
5. **提交任务**:
|
|
335
|
+
```
|
|
336
|
+
submit_task(
|
|
337
|
+
service_id: "my-service",
|
|
338
|
+
task_prompt: "分析数据并生成报告",
|
|
339
|
+
output_prompt: "返回 Markdown 格式的分析报告"
|
|
340
|
+
)
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
6. **查询任务**(仅在用户要求时调用):
|
|
344
|
+
```
|
|
345
|
+
get_task(task_id: "xxx")
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
7. **下载结果**:
|
|
349
|
+
```
|
|
350
|
+
download_result(task_id: "xxx")
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
### 带文件上传的任务
|
|
354
|
+
|
|
355
|
+
```
|
|
356
|
+
submit_task(
|
|
357
|
+
service_id: "data-analysis-agent",
|
|
358
|
+
task_prompt: "分析附件中的销售数据,找出增长趋势",
|
|
359
|
+
output_prompt: "返回 JSON 格式的分析结果,包含 trend 和 insights 字段",
|
|
360
|
+
input_files: ["./sales_data.csv", "./notes.txt"],
|
|
361
|
+
session_id: "可选,用于保持对话上下文"
|
|
362
|
+
)
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
文件上传限制:最多支持 10 个文件,单文件不超过 100MB;只能上传当前工作目录下的文件,不支持符号链接。
|
|
366
|
+
|
|
367
|
+
### 多服务器切换
|
|
368
|
+
|
|
369
|
+
```
|
|
370
|
+
list_services(server: "prod")
|
|
371
|
+
submit_task(server: "local", service_id: "my-service", task_prompt: "...")
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
### 删除服务器配置
|
|
375
|
+
|
|
376
|
+
```
|
|
377
|
+
remove_server(server: "old-server")
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
---
|
|
381
|
+
|
|
382
|
+
## 安全特性
|
|
383
|
+
|
|
384
|
+
- **路径遍历防护**:文件上传仅限当前工作目录下;zip 解压逐文件验证路径,防止 `../` 路径穿越
|
|
385
|
+
- **zip 炸弹防护**:最大压缩比 500、解压后总大小 100MB、最大文件数 1000、单文件最大 50MB
|
|
386
|
+
- **符号链接拒绝**:上传文件和 zip 中的符号链接均被直接拒绝
|
|
387
|
+
- **原子写入**:配置文件使用临时文件 + `replace` 保证写入过程不损坏
|
|
388
|
+
- **下载限制**:单文件下载不超过 100MB
|
|
389
|
+
|
|
390
|
+
---
|
|
391
|
+
|
|
392
|
+
## 开发
|
|
393
|
+
|
|
394
|
+
本地开发运行方式:
|
|
395
|
+
|
|
396
|
+
```bash
|
|
397
|
+
cd openaaas-mcp-adapter
|
|
398
|
+
uv sync
|
|
399
|
+
uv run openaaas-mcp-adapter
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
或使用 Python 模块方式:
|
|
403
|
+
|
|
404
|
+
```bash
|
|
405
|
+
uv run python -m openaaas_mcp_adapter
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
---
|
|
409
|
+
|
|
410
|
+
## 链接
|
|
411
|
+
|
|
412
|
+
- GitHub: [https://github.com/Wolido/OpenAaaS](https://github.com/Wolido/OpenAaaS)
|
|
413
|
+
- 官网: [https://www.open-aaas.com](https://www.open-aaas.com)
|
|
414
|
+
|
|
415
|
+
---
|
|
416
|
+
|
|
417
|
+
## 许可证
|
|
418
|
+
|
|
419
|
+
MIT License
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "openaaas-mcp-adapter"
|
|
3
|
+
version = "0.1.0"
|
|
4
|
+
description = "OpenAaaS MCP adapter — connect Claude Desktop, Cursor, Cline to OpenAaaS Server"
|
|
5
|
+
readme = "PYPI_README.md"
|
|
6
|
+
requires-python = ">=3.10"
|
|
7
|
+
license = "MIT"
|
|
8
|
+
keywords = ["mcp", "openaaas", "ai-agent", "claude", "cursor", "cline"]
|
|
9
|
+
classifiers = [
|
|
10
|
+
"Development Status :: 3 - Alpha",
|
|
11
|
+
"Intended Audience :: Developers",
|
|
12
|
+
"Programming Language :: Python :: 3",
|
|
13
|
+
"Programming Language :: Python :: 3.10",
|
|
14
|
+
"Programming Language :: Python :: 3.11",
|
|
15
|
+
"Programming Language :: Python :: 3.12",
|
|
16
|
+
"Programming Language :: Python :: 3.13",
|
|
17
|
+
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
18
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
19
|
+
]
|
|
20
|
+
dependencies = [
|
|
21
|
+
"fastmcp>=3.0.0",
|
|
22
|
+
"httpx>=0.27.0",
|
|
23
|
+
]
|
|
24
|
+
|
|
25
|
+
[project.scripts]
|
|
26
|
+
openaaas-mcp-adapter = "openaaas_mcp_adapter.__main__:main"
|
|
27
|
+
|
|
28
|
+
[project.urls]
|
|
29
|
+
Homepage = "https://www.open-aaas.com"
|
|
30
|
+
Repository = "https://github.com/Wolido/OpenAaaS"
|
|
31
|
+
Issues = "https://github.com/Wolido/OpenAaaS/issues"
|
|
32
|
+
Documentation = "https://www.open-aaas.com"
|
|
33
|
+
|
|
34
|
+
[tool.uv]
|
|
35
|
+
package = true
|