> ## Documentation Index
> Fetch the complete documentation index at: https://docs.profy.cn/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP Tools

> 远程 MCP Server 暴露的 22 个工具：参数、语义与已知缺陷

# MCP Tools

Profy 提供一个远程 MCP（Model Context Protocol）Server，让你在 Codex、Cursor、Claude Code 等支持 MCP 的 IDE 里完成"蒸馏 → 配置 → 发布 → 变现"全流程，不用离开编辑器。

```
https://mcp.profy.cn/mcp
```

传输方式是 Streamable HTTP，**无状态**（不维护 session）。

## 接入

```json .mcp.json theme={null}
{
  "mcpServers": {
    "profy": {
      "type": "streamable-http",
      "url": "https://mcp.profy.cn/mcp"
    }
  }
}
```

鉴权复用平台的登录会话，支持两种方式：

* `Authorization: Bearer <token>`
* 浏览器 Cookie（IDE 内嵌浏览器场景）

未认证时调用任何需要身份的工具会直接报错——**不会**降级成匿名操作。

## 工具全表

22 个工具，全部是对已有平台服务的薄代理，不含独立业务逻辑。

### 身份（2）

| 工具                    | 参数                                        | 用途           |
| --------------------- | ----------------------------------------- | ------------ |
| `get_creator_profile` | 无                                         | 查询你的创作者状态与详情 |
| `apply_creator`       | `displayName`、`bio`、`accountType`、`email` | 申请成为创作者      |

`apply_creator` 提交后进入人工审核。审核结果通过站内信通知，不在 MCP 侧轮询。

### 专家配置（4）

| 工具                  | 参数                                                 | 用途         |
| ------------------- | -------------------------------------------------- | ---------- |
| `create_expert`     | `name`、`description`、`category`                    | 创建专家草稿     |
| `update_expert`     | `identifier` + `name` / `description` / `category` | 更新专家配置字段   |
| `get_expert_detail` | `identifier`                                       | 获取某个专家的详情  |
| `list_my_experts`   | 无                                                  | 列出你创建的全部专家 |

<Note>
  `update_expert` 只覆盖基础元信息。**prompt 分层（GUARD / persona / soul / agent）、subagents、caseDemos 这些字段不在 MCP 表面**——它们要么涉及知识产权、要么结构复杂到不适合从 IDE 盲改。这些配置走 Studio。
</Note>

### 技能（3）

| 工具                        | 参数                       | 用途        |
| ------------------------- | ------------------------ | --------- |
| `install_skill`           | `identifier`、`skillName` | 给专家安装市场技能 |
| `list_expert_skills`      | `identifier`             | 列出专家已装技能  |
| `list_marketplace_skills` | `keyword`                | 浏览技能市场    |

<Warning>
  **`install_skill` 是 stub，不会真正安装。**

  当前实现只写一条日志然后返回 `{"success": true, "installed": "<skillName>"}`，安装服务尚未接线。也就是说：调用成功、返回成功、随后 `list_expert_skills` 里什么都没多。

  这是最危险的一类缺陷——失败态伪装成成功态，你不会收到任何错误，只会疑惑"为什么技能没生效"。安装技能请走 Studio 或 `POST /api/expert-skills/install`。
</Warning>

### 计费与发布（3）

| 工具                      | 参数                                                                 | 用途      |
| ----------------------- | ------------------------------------------------------------------ | ------- |
| `set_billing`           | `identifier`、`billingType`、`price`、`freeTrialPerUser`、`allowTrial` | 设定定价与试用 |
| `publish_expert`        | `identifier`                                                       | 提交发布审核  |
| `get_submission_status` | `identifier`                                                       | 查询审核状态  |

<Warning>
  `set_billing` 的 `billingType` 枚举是 `METERED | ONE_TIME`，但这两个名字**不对应真实的计费模型**：

  * `METERED` → 实际写入价格 0 → 专家变成**免费**
  * `ONE_TIME` → 写入 `price` → 专家变成**买断解锁**

  平台侧只有 `FREE` 与 `UNLOCK` 两种，没有按量计费的专家。所以传 `METERED` 期待"按用量收费"，得到的是"完全免费"。这是 MCP 表面命名与底层模型的漂移，命名以底层为准。
</Warning>

`freeTrialPerUser` 默认 3，`allowTrial` 默认 `true`。价格与试用的完整约束见 [定价与计费](/zh/creators/pricing-and-billing)。

`publish_expert` 是**提交审核**，不是直接上线；已上架专家发新版时老版本保持在线。

### 蒸馏（2）

| 工具                      | 参数                                            | 用途             |
| ----------------------- | --------------------------------------------- | -------------- |
| `start_distillation`    | `topic`、`materials[]`（`filename` + `content`） | 开始蒸馏对话，可带本地素材  |
| `continue_distillation` | `sessionId`、`message`                         | 回答 AI 的追问，推进蒸馏 |

蒸馏是多轮对话：`start_distillation` 返回 `sessionId`，之后每次回答都用 `continue_distillation` 带着这个 id。

这两个工具内部通过 SSE collector 调用 invoke 端点，把流式响应收敛成一次同步返回——所以单次调用可能耗时较长。

`materials` 直接传文件内容（不是路径），这样 IDE 里的本地文件不用先上传就能进蒸馏。

### 测试（2）

| 工具                 | 参数                     | 用途               |
| ------------------ | ---------------------- | ---------------- |
| `test_expert`      | `identifier`、`message` | 给专家发一条消息看回复      |
| `open_expert_chat` | `identifier`           | 拿到浏览器里和专家对话的 URL |

`test_expert` 会真实执行并**真实计费**。想免费看效果就用 `open_expert_chat` 在浏览器里试。

### 可视化（1）

| 工具                | 参数                                                     | 用途             |
| ----------------- | ------------------------------------------------------ | -------------- |
| `open_profy_page` | `page`（`studio` / `chat` / `marketplace` / `earnings`） | 拿到四个检查点页面的 URL |

它只返回 URL，不打开浏览器——具体怎么打开由 IDE 决定。

### 自进化（3）

| 工具                           | 参数             | 用途         |
| ---------------------------- | -------------- | ---------- |
| `list_evolution_suggestions` | `identifier`   | 列出待处理的进化建议 |
| `accept_evolution`           | `suggestionId` | 采纳一条建议     |
| `get_evolution_stats`        | `identifier`   | 查看进化统计与趋势  |

`accept_evolution` 采纳后**立即生效，无需重新审核**——技能文档是运行时读取的。这也意味着采纳前应当先读建议内容，机制见 [自进化](/zh/creators/darwin-evolution)。

### 收益（2）

| 工具                   | 参数                                     | 用途             |
| -------------------- | -------------------------------------- | -------------- |
| `get_earnings`       | 无                                      | 收益汇总（钻石余额与待提现） |
| `browse_marketplace` | `keyword`、`category`、`page`、`pageSize` | 浏览已发布专家        |

`browse_marketplace` 是全表唯一不要求登录身份的工具。

## 典型流程

在 IDE 里从零做出一个专家：

```
1. get_creator_profile          确认创作者状态
2. apply_creator                （若尚未入驻）
3. start_distillation           带上本地素材开始蒸馏
4. continue_distillation × N    回答追问直到蒸馏完成
5. get_expert_detail            核对生成的配置
6. set_billing                  定价与试用
7. test_expert                  实测一条（会计费）
8. publish_expert               提交审核
9. get_submission_status        跟进审核结果
```

## 边界与失败态

| 症状                              | 原因                          | 处理                           |
| ------------------------------- | --------------------------- | ---------------------------- |
| 工具报未认证                          | 没带 Bearer token 或 Cookie 失效 | 重新登录后重连 MCP                  |
| `install_skill` 成功但技能没装上        | 该工具是 stub                   | 改走 Studio 或 REST 端点          |
| `set_billing` 传 `METERED` 后专家免费 | 枚举名与底层模型漂移                  | 想收费用 `ONE_TIME` + `price`    |
| `publish_expert` 成功但线上没变        | 提交的是审核，不是上线                 | 用 `get_submission_status` 跟进 |
| 蒸馏工具长时间无响应                      | 内部同步消费 SSE 流，耗时较长           | 提高 IDE 的 MCP 超时设置            |
| `test_expert` 扣了积分              | 它是真实执行                      | 免费预览用 `open_expert_chat`     |

## 验证接入

在 IDE 里让模型调一次 `list_my_experts`。返回你的专家列表说明鉴权与传输都通了；报未认证说明 token 没传到。

不确定工具是否被发现时，看 IDE 的 MCP 面板里 profy 这一项下有没有 22 个工具——数量对不上通常是传输层（streamable-http）配错成了 stdio。

## 相关页面

<CardGroup cols={2}>
  <Card title="端点速查" icon="list" href="/zh/developers/reference/endpoints">
    直接走 REST 的等价能力
  </Card>

  <Card title="蒸馏" icon="flask" href="/zh/creators/distillation">
    蒸馏的完整机制
  </Card>

  <Card title="自进化" icon="dna" href="/zh/creators/darwin-evolution">
    进化建议怎么读
  </Card>

  <Card title="定价与计费" icon="tag" href="/zh/creators/pricing-and-billing">
    价格与试用的真实约束
  </Card>
</CardGroup>

<Note>
  核对日期 2026-08-11。来源：`services/core/src/routes/mcp/tools/index.ts`（22 处 `registerTool`）、`services/core/src/routes/mcp/index.ts`（传输层）、`services/core/src/routes/mcp/auth.ts`（鉴权）。
</Note>
