Portamora

Discover atmospheric 3D worlds, read controls, and build and publish authorized environments.

我该使用它吗

质量与安全性

A
描述质量
93%
模式完整度
75%
命名质量
100%
投毒风险
80%
权限匹配度
100%
协议合规性
100%

发现(3)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool 'list_comments' description contains placeholder text在 list_comments 中
  • INFOTool description contains placeholder or incomplete text在 list_comments 中

基于对工具定义和协议合规性的自动分析。

上下文开销

~3,854token 数(工具定义)
~4.1 KB典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 3.01%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "mcp": {
      "url": "https://portamora.app/mcp"
    }
  }
}

远程端点

https://portamora.app/mcpstreamable-http

它能做什么

工具清单

工具(8)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟢search_worlds(q, sort, days, tag, creator, ...)

Browse and search published worlds. Sort by newest, liked, or trending. The days filter accepts 1, 7 (API default), or 30 UTC calendar days including today, or all for any sort. Newest filters publication date unless days=all or creator is specified. Liked ranks period likes, or lifetime likes when days=all. Trending ranks period activity, or lifetime plays and likes when days=all, with publication-age decay in both cases. Older worlds may appear in activity rankings. The Explore website defaults to liked/all; API defaults remain newest/7. Search text can include exact #tags; custom tags are supported without a fixed vocabulary. Liked and trending require the community flag. Follow nextCursor with unchanged filters until null. Drafts and offline worlds are excluded. Public; no authentication is required.

输入模式

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "maxLength": 200,
      "default": ""
    },
    "sort": {
      "type": "string",
      "enum": [
        "newest",
        "liked",
        "trending"
      ],
      "default": "newest"
    },
    "days": {
      "type": [
        "integer",
        "string"
      ],
      "enum": [
        1,
        7,
        30,
        "all"
      ],
      "default": 7
    },
    "tag": {
      "type": "string",
      "pattern": "^\\s*#?[A-Za-z0-9][A-Za-z0-9_-]{0,31}\\s*$",
      "description": "One to 32 tag characters; optional leading #, surrounding whitespace, and uppercase letters are normalized."
    },
    "creator": {
      "type": "string",
      "minLength": 3,
      "maxLength": 30,
      "pattern": "^[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])$",
      "description": "An existing creator handle; lookup ignores case."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 60,
      "default": 24
    },
    "cursor": {
      "type": "string",
      "maxLength": 1024
    }
  },
  "required": [],
  "additionalProperties": false
}

输出模式

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "data": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 16,
                "maxLength": 16,
                "pattern": "^world_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$",
                "description": "Case-sensitive world identifier with 10 safe-alphabet characters after the prefix."
              },
              "title": {
                "type": "string"
              },
              "tagline": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 32,
                  "pattern": "^[a-z0-9][a-z0-9_-]*$"
                }
              },
              "currentVersionId": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 18,
                    "maxLength": 18,
                    "pattern": "^version_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$",
                    "description": "Case-sensitive version identifier with 10 safe-alphabet characters after the prefix."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "publishedAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "playsTotal": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "likesTotal": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "dislikesTotal": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "links": {
                "type": "object",
                "properties": {
                  "self": {
                    "type": "string",
                    "format": "uri"
                  },
                  "details": {
                    "type": "string",
                    "format": "uri"
                  },
                  "play": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uri"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "thumbnail": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uri"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "self",
                  "details",
                  "play",
                  "thumbnail"
                ],
                "additionalProperties": false
              },
              "creator": {
                "type": "object",
                "properties": {
                  "handle": {
                    "type": "string",
                    "minLength": 3,
                    "maxLength": 30,
                    "pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])$"
                  },
                  "displayName": {
                    "type": "string"
                  },
                  "links": {
                    "type": "object",
                    "properties": {
                      "profile": {
                        "type": "string",
                        "format": "uri"
                      }
                    },
                    "required": [
                      "profile"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "handle",
                  "displayName",
                  "links"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "id",
              "title",
              "tagline",
              "description",
              "tags",
              "currentVersionId",
              "publishedAt",
              "playsTotal",
              "likesTotal",
              "dislikesTotal",
              "links",
              "creator"
            ],
            "additionalProperties": false
          }
        },
        "nextCursor": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "items",
        "nextCursor"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "status",
    "data"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_world(worldId)

Read a public world page. Offline and removed worlds retain a notice; drafts are not exposed.

输入模式

{
  "type": "object",
  "properties": {
    "worldId": {
      "type": "string",
      "minLength": 16,
      "maxLength": 16,
      "pattern": "^world_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$",
      "description": "Case-sensitive world identifier with 10 safe-alphabet characters after the prefix."
    }
  },
  "required": [
    "worldId"
  ],
  "additionalProperties": false
}

输出模式

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 16,
          "maxLength": 16,
          "pattern": "^world_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$",
          "description": "Case-sensitive world identifier with 10 safe-alphabet characters after the prefix."
        },
        "title": {
          "type": "string"
        },
        "tagline": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "thumbnailKey": {
          "type": [
            "string",
            "null"
          ]
        },
        "status": {
          "type": "string",
          "enum": [
            "published",
            "offline",
            "removed"
          ]
        },
        "currentVersionId": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 18,
              "maxLength": 18,
              "pattern": "^version_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$",
              "description": "Case-sensitive version identifier with 10 safe-alphabet characters after the prefix."
            },
            {
              "type": "null"
            }
          ]
        },
        "publishedAt": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
            },
            {
              "type": "null"
            }
          ]
        },
        "playsTotal": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "likesTotal": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "dislikesTotal": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "bytesUnpacked": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 32,
            "pattern": "^[a-z0-9][a-z0-9_-]*$"
          }
        },
        "creator": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "minLength": 15,
              "maxLength": 15,
              "pattern": "^user_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$",
              "description": "Case-sensitive user identifier with 10 safe-alphabet characters after the prefix."
            },
            "handle": {
              "type": "string",
              "minLength": 3,
              "maxLength": 30,
              "pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])$"
            },
            "displayName": {
              "type": "string"
            },
            "bio": {
              "type": "string"
            },
            "avatarKey": {
              "type": [
                "string",
                "null"
              ]
            },
            "links": {
              "type": "object",
              "properties": {
                "self": {
                  "type": "string",
                  "format": "uri"
                },
                "profile": {
                  "type": "string",
                  "format": "uri"
                },
                "avatar": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "uri"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "self",
                "profile",
                "avatar"
              ],
              "additionalProperties": false
            }
          },
          "required": [
            "id",
            "handle",
            "displayName",
            "bio",
            "avatarKey",
            "links"
          ],
          "additionalProperties": false
        },
        "links": {
          "type": "object",
          "properties": {
            "self": {
              "type": "string",
              "format": "uri"
            },
            "details": {
              "type": "string",
              "format": "uri"
            },
            "play": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uri"
                },
                {
                  "type": "null"
                }
              ]
            },
            "thumbnail": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uri"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "self",
            "details",
            "play",
            "thumbnail"
          ],
          "additionalProperties": false
        }
      },
      "required": [
        "id",
        "title",
        "tagline",
        "description",
        "thumbnailKey",
        "status",
        "currentVersionId",
        "publishedAt",
        "playsTotal",
        "likesTotal",
        "dislikesTotal",
        "bytesUnpacked",
        "tags",
        "creator",
        "links"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "status",
    "data"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_version(versionId)

Read the current ready version of a published world. Unpublished versions are not exposed.

输入模式

{
  "type": "object",
  "properties": {
    "versionId": {
      "type": "string",
      "minLength": 18,
      "maxLength": 18,
      "pattern": "^version_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$",
      "description": "Case-sensitive version identifier with 10 safe-alphabet characters after the prefix."
    }
  },
  "required": [
    "versionId"
  ],
  "additionalProperties": false
}

输出模式

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 18,
          "maxLength": 18,
          "pattern": "^version_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$",
          "description": "Case-sensitive version identifier with 10 safe-alphabet characters after the prefix."
        },
        "worldId": {
          "type": "string",
          "minLength": 16,
          "maxLength": 16,
          "pattern": "^world_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$",
          "description": "Case-sensitive world identifier with 10 safe-alphabet characters after the prefix."
        },
        "versionNumber": {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        "sdkVersion": {
          "type": "number",
          "const": 1
        },
        "bytesUnpacked": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "notes": {
          "type": [
            "string",
            "null"
          ]
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
        },
        "packagePath": {
          "type": "string"
        },
        "controls": {
          "default": null,
          "anyOf": [
            {
              "type": "object",
              "propertyNames": {
                "type": "string",
                "pattern": "^(Key[A-Z]|Digit[0-9]|ArrowUp|ArrowDown|ArrowLeft|ArrowRight|Space|ShiftLeft|ShiftRight|Mouse)$"
              },
              "additionalProperties": {
                "type": "string",
                "minLength": 1,
                "maxLength": 160
              }
            },
            {
              "type": "null"
            }
          ]
        },
        "links": {
          "type": "object",
          "properties": {
            "self": {
              "type": "string",
              "format": "uri"
            },
            "world": {
              "type": "string",
              "format": "uri"
            },
            "play": {
              "type": "string",
              "format": "uri"
            },
            "entry": {
              "type": "string",
              "format": "uri"
            }
          },
          "required": [
            "self",
            "world",
            "play",
            "entry"
          ],
          "additionalProperties": false
        }
      },
      "required": [
        "id",
        "worldId",
        "versionNumber",
        "sdkVersion",
        "bytesUnpacked",
        "notes",
        "createdAt",
        "packagePath",
        "controls",
        "links"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "status",
    "data"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_creator(handle)

Read an active creator profile. Email addresses, roles and account state are never exposed.

输入模式

{
  "type": "object",
  "properties": {
    "handle": {
      "type": "string",
      "minLength": 3,
      "maxLength": 30,
      "pattern": "^[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])$",
      "description": "An existing creator handle; lookup ignores case."
    }
  },
  "required": [
    "handle"
  ],
  "additionalProperties": false
}

输出模式

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 15,
          "maxLength": 15,
          "pattern": "^user_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$",
          "description": "Case-sensitive user identifier with 10 safe-alphabet characters after the prefix."
        },
        "handle": {
          "type": "string",
          "minLength": 3,
          "maxLength": 30,
          "pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])$"
        },
        "displayName": {
          "type": "string"
        },
        "bio": {
          "type": "string"
        },
        "avatarKey": {
          "type": [
            "string",
            "null"
          ]
        },
        "links": {
          "type": "object",
          "properties": {
            "self": {
              "type": "string",
              "format": "uri"
            },
            "profile": {
              "type": "string",
              "format": "uri"
            },
            "avatar": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uri"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "self",
            "profile",
            "avatar"
          ],
          "additionalProperties": false
        }
      },
      "required": [
        "id",
        "handle",
        "displayName",
        "bio",
        "avatarKey",
        "links"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "status",
    "data"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_community

Read server-evaluated community and play-counting flags. Personal state is returned by me.get. Lists use cursor pagination.

输入模式

{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}
🟢list_comments(worldId, limit, cursor)

Read plain-text comments, newest first, with deletion placeholders. Viewer controls are private; no-store. Lists use cursor pagination.

输入模式

{
  "type": "object",
  "properties": {
    "worldId": {
      "type": "string",
      "minLength": 16,
      "maxLength": 16,
      "pattern": "^world_[6789BCDFGHJKLMNPQRTWbcdfghjkmnpqrtwz]{10}$",
      "description": "Case-sensitive world identifier with 10 safe-alphabet characters after the prefix."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 60,
      "default": 24
    },
    "cursor": {
      "type": "string",
      "maxLength": 1024
    }
  },
  "required": [
    "worldId"
  ],
  "additionalProperties": false
}
🟢read_guide(guide)

Read an official Portamora guide, policy, agent discovery file, or OpenAPI specification. Start with worlds before building and workflows before uploading.

输入模式

{
  "type": "object",
  "properties": {
    "guide": {
      "type": "string",
      "enum": [
        "agents",
        "worlds",
        "api",
        "workflows",
        "mcp",
        "terms",
        "privacy",
        "discovery",
        "openapi"
      ]
    }
  },
  "required": [
    "guide"
  ],
  "additionalProperties": false
}
🟢get_starter

Get the editable starter ZIP and the build guide. Download and build it in your own workspace; the MCP server does not execute world code.

输入模式

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

推荐提示词

search_research
Search for information about [topic] using Portamora
预期工具: search_worlds
find_specific
Find [specific item] using Portamora
预期工具: search_worlds
retrieve_data
Get details about [item] from Portamora
预期工具: get_world
fetch_info
Fetch [information type] using Portamora
预期工具: get_world
list_items
List all [items] available in Portamora
预期工具: list_comments

社区

评价此服务器

证据

最近观测

已验证未记录版本8 个工具