srgplus-mcp (srgplus/srgplus-mcp) is an MCP server listed on the M8ven Trust Index. It scores 52 out of 100, grade D. It declares 103 tools. No publisher has claimed this listing.

D
Caution
52/100

srgplus-mcp

MCP server for SRG+ — lets Claude (and any MCP-aware agent) manage hubs, channels, content, assets, users, and workspaces through the SRG+ API.

Caution. Specific findings reduced this grade. They are listed on the page. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.

How we verified

Code Verified⚡ Live Monitored: not connected

Verified is a snapshot. Live keeps it current, and builds your track record.

⚡ Connect GitHub → continuous verification on every pushwhy connect →

Who stands behind it

srgplus

Source: Glama

Is this your MCP?

Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →

Install from

The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.

// key findings
103 tools verified — handlers match their declared behaviour
42 read-only tools verified — handlers contain no write/delete/exec
No credential exfiltration, no sensitive file access, no obfuscation
Static analysis found nothing flowing your secrets to unexpected places.
🔐
You'll be asked for 1 credential: OPENAI_APPS_CHALLENGE_TOKEN
These are read from process.env at runtime. Make sure you trust where they’ll be sent.
// tools this server exposes103 tools

These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.

list_assets

List assets in a hub profile with cursor-based pagination.

search_assets

Search assets in a hub profile by keyword.

get_asset

Get full asset details by ID (Media, File, Image, Embed, or Video).

update_asset

Update an asset's display name, read-only flag, and optionally its cover image.

create_embed_asset

Create an embed asset (external URL embed) in a hub profile.

create_media_asset

Create a media (video) asset record in a hub profile.

create_file_asset

Create a file asset record in a hub profile.

create_image_asset

Create an image asset record in a hub profile.

create_video_asset

Create a video file asset record in a hub profile.

upload_asset

Create an asset AND upload its bytes in one call.

list_channels

List all channels for a hub profile.

get_channel

Get full channel details by ID (includes categories and heading content).

get_channel_by_name

Get channel details by hub profile username slug and channel name slug.

create_channel

Create a new channel in a hub profile. Returns the new channel ID.

update_channel

Update a channel's name, privacy, and category order.

archive_channel

Archive a channel (hidden from members, content preserved).

restore_channel

Restore a previously archived channel.

delete_channel

Permanently delete a channel and all its categories/sections. Irreversible.

create_category

Create a new category inside a channel. Returns the new category ID.

update_category

Update a category's name, pin status, notification settings, and display options.

archive_category

Archive a category inside a channel.

restore_category

Restore a previously archived category inside a channel.

delete_category

Permanently delete a category from a channel. Irreversible.

get_category_references

List content references in a category with cursor-based pagination.

get_category_by_slugs

Get category details by hub profile username, channel name, and category name slugs.

create_section

Create a new section inside a channel category. Returns the new section ID.

update_section

Rename a section inside a channel category.

delete_section

Permanently delete a section from a channel category. Irreversible.

add_content_to_category

Add one or more content items to a section inside a channel category.

list_contents

List content items in a hub profile with cursor-based pagination.

search_contents

Search content items in a hub profile by keyword.

get_content

Get content item details by ID (v1 schema).

get_content_v2

Get content item by ID (v2 schema).

create_content

Create a new content item in a hub profile.

update_content

Update a content item's metadata. Only provided fields are changed.

archive_content

Archive a content item (hidden from listings, fully reversible).

restore_content

Restore a previously archived content item.

add_content_to_categories

Add a content item to one or more channel categories.

remove_content_from_categories

Remove a content item from one or more channel categories.

move_content

Move a content item to a different category section within a channel.

create_content_section

Create a section inside a collection content item's category.

update_content_section

Rename a section inside a collection content item's category.

delete_content_section

Delete a section from a collection content item's category. Irreversible.

add_subcontent

Link existing content items as subcontent inside a collection section.

get_subcontent

List the subcontent items nested inside a collection, page by page.

delete_subcontent

Unlink a subcontent item from a collection section.

move_subcontent

Reorder a subcontent item within a collection section.

patch_content_progression

Update the current user's progression status for a content item.

patch_media_progression

Update the current user's last watched position in a media asset (seconds).

get_progression_stats

Get completion statistics for the current user.

get_srgplus_guide

Return the full SRG+ how-to guide: navigation, content creation, the exact widget shapes for the `context` body, safe-update rules, asset upload, archive/restore, and common pitfalls.

list_hub_profiles

List all hub profiles in a workspace.

list_managed_hub_profiles

List hub profiles where the current API key user has Admin or Editor role.

get_hub_profile

Get full hub profile details by ID.

get_hub_profile_by_username

Get hub profile details by its URL username/slug.

filter_hub_profiles

Batch-fetch lightweight hub profile data for a list of IDs.

create_hub_profile

Create a new hub profile in a workspace.

update_hub_profile

Update an existing hub profile's metadata.

archive_hub_profile

Archive a hub profile (hidden from listings, content preserved).

restore_hub_profile

Restore a previously archived hub profile.

delete_hub_profile

Permanently delete a hub profile and all its data. Irreversible.

join_hub_profile

Join a public hub profile as the current API key user.

move_hub_profile_to_workspace

Transfer a hub profile to a different workspace (preserves content).

turn_on_hub_profile_community

Enable community features for a hub profile (posts, comments, reactions).

list_permission_groups

List all permission groups for a target.

get_permission_group

Get a permission group by ID, including its members.

create_permission_group

Create a new permission group on a target. Returns the new group ID.

update_permission_group

Rename a permission group.

delete_permission_group

Permanently delete a permission group. Members lose inherited permissions.

add_users_to_permission_group

Add one or more users to a permission group.

remove_user_from_permission_group

Remove a user from a permission group.

get_workspace_users

List all users in a workspace with their roles.

get_user

Get a user's full profile by ID.

check_user_exists_by_email

Check whether a user account with the given email address exists.

check_user_exists_by_phone

Check whether a user account with the given phone number exists (e.g. "+1234567890").

list_invitations

List all pending invitations for a hub profile.

invite_to_hub_profile

Send email invitations to join a hub profile.

invite_to_workspace

Send email invitations to join a workspace.

get_invitation_link

Generate a shareable invitation link for a single email address.

update_invitation

Update the role assigned to a pending invitation.

delete_invitation

Cancel and permanently delete a pending invitation.

list_workspace_invitations

List all pending invitations for a workspace.

get_workspace_invitation_link

Generate a shareable invitation link for a workspace for a single email.

update_workspace_invitation

Update the role assigned to a pending workspace invitation.

delete_workspace_invitation

Cancel and permanently delete a pending workspace invitation.

can_read

Check whether the current user has read access to a target.

can_edit

Check whether the current user has edit access to a target.

can_create_child

Check whether the current user can create a child resource inside a parent.

can_manage_permissions

Check whether the current user can grant/revoke roles on a target.

can_archive

Check whether the current user can archive a target.

is_member

Check whether the current user is a member of a target (any role).

get_permission_targets

Get all targets of a given type accessible to the current user.

give_permission

Grant a user a role on a target (hub profile, workspace, channel, etc.).

delete_permission

Revoke all permissions a user has on a target.

list_workspaces

List all workspaces accessible with the current API key(s).

get_workspace

Get full details of a workspace (name, seats, subscription, hub profiles).

update_workspace

Update a workspace's display name.

get_workspace_hub_profiles

List all hub profiles in a workspace (minimal representation).

list_workspace_actions

List all automation actions configured on a workspace.

get_workspace_action

Get full details of a workspace automation action by ID.

3 further tools are not listed here. The complete surface is in the source.

// environment variables
To run this server yourself, you supply these values. They go in your own MCP client configuration and stay on your machine. The secret label means the value is sensitive, not that the server mishandles it.
configOAUTH_ISSUERCanonical issuer URL (e.g. https://mcp.srgplus.com)
🔐 secretOPENAI_APPS_CHALLENGE_TOKEN
configHOST
configSRG_CLIENT_CACHE_MAX
configSRG_CLIENT_CACHE_TTL
configSRG_HTTP_TIMEOUT
configOAUTH_RESOURCE
Deployment configuration, supplied by whoever hosts the server. Users are not asked for these.
deployPORT
// quality suggestions

All four hints declared on every tool

103/103 tools missing one or more hints — list_assets (missing: idempotentHint); search_assets (missing: idempotentHint); get_asset (missing: idempotentHint), +100 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.

For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.

Destructive tools are labelled

1 tool perform destructive updates without destructiveHint — upload_asset deletes at line 424 (os.unlink(tmp_path))

Add destructiveHint:true to any tool whose handler calls .delete(), .upsert(), .update(), unlink, rm, DELETE, DROP, REPLACE INTO, or any operation that overwrites existing data.

Tool inputs are validated

101/103 tool handlers declare input schemas (98%)

Declare an inputSchema with zod/joi/yup on every tool definition.

Tool handlers catch errors

Only 1/103 tool handlers wrap calls in try/catch (1%)

Wrap each tool handler body in try/catch and return a structured error response.

License file

No license file

Add a LICENSE file (MIT, Apache-2.0, etc.).

Tests exist

No test files found

Add tests that exercise each declared tool.

Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.

// full audit trail
The findings above are the summary. The full trail, every check we ran, each deduction, the network hosts observed and the dependency advisories, goes to verified publishers, along with an alert whenever a new one lands. Verified publishers can also review each finding and dispute it in one click. Publisher corrections have sharpened several of our checks this month, because the maintainer knows the codebase better than any scanner.
// improvement guidance — verified publishers only
We have 6 concrete improvements we can share with the publisher of this MCP. Each comes with specific guidance to raise the trust score.
// embed badge in your README
[![M8ven Verified](https://m8ven.ai/badge/mcp/srgplus/srgplus-mcp?variant=verified)](https://m8ven.ai/mcp/srgplus/srgplus-mcp)
Shows verification status without the grade. Want the grade badge instead? Remove ?variant=verified from the URL.
commit: bdc807e987cae31fef814500346a6fa714b50614
code hash: 4c61dc9e4ee10440dc6c59fc122eed1960a9e928cce36948079fbd0e8e429d53
view raw JSON →
Check MCPs from inside your assistant
Tool Check · MCP

Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.

https://m8ven.ai/api/mcp/tool-check
check_toolsearch_toolscompare_toolsrecommend_alternativescheck_publisherreport_concern
How to add it →Free · no account needed · works in any MCP client