Skip to main content

MCP - Set up for Copilot Studio

Turn on Yoodli MCP, add Yoodli to a Copilot Studio agent, and authorize it, so people can find and create Yoodli roleplays from the agent.

Written by Dewey Levi

Overview

Yoodli MCP Server connects Yoodli to Copilot Studio through the Model Context Protocol (MCP). From a chat, a Copilot Studio agent can find roleplays, create a practice roleplay, and return a link. The person still practices inside Yoodli. The card is marked Early access, and an organization admin enables it before anyone can connect.

  • Three roles take part. A Yoodli organization admin enables MCP. An admin of Copilot Studio then adds Yoodli to the agent. Each person then signs in to Yoodli and selects Authorize.

  • Copilot Studio connects in one of two ways. With Dynamic discovery, you paste the server URL and Copilot Studio registers itself. With Manual OAuth, you paste an OAuth client ID and an OAuth client secret from an MCP client that a Yoodli organization admin creates.

  • The agent acts as the person who selected Authorize, using that person's Yoodli account.

What it looks like when it's done

Here's the finished setup for an organization that connects a Copilot Studio agent with Dynamic discovery.


In Yoodli

  • On the Integrations page, the Yoodli MCP Server card shows its switch Enabled, and a content space is selected for organization roleplays created through MCP.


In Copilot Studio

  • The agent has a Model Context Protocol tool for Yoodli, added with the server URL, OAuth 2.0 and Dynamic discovery, with a connection.


The result

  • Each person who uses the published agent signed in as themselves and selected Authorize on the Yoodli consent page.

  • The person asks for a roleplay. The tool creates it in Yoodli and returns a practice link, and the person practices inside Yoodli.

Setting it up

Step 1: Turn on Yoodli MCP and copy the server URL

  1. Sign in to Yoodli as an organization admin.

  2. Open Organization settings.

  3. Under Advanced Settings, find Integrations. If you do not see Integrations, contact your Yoodli account team.

  4. If the button says Manage, select Manage. If it says Create new, select Create new. The Integrations page opens.

    The Advanced Settings section of Organization settings, with the Manage button on the Integrations row ringed
  5. On the Yoodli MCP Server card, enable the switch.

    The Integrations page with the Yoodli MCP Server card, its switch ringed and reading Disabled
  6. Copy the server URL on the card. On production, it is https://app.yoodli.ai/api/mcp/1.0. A tool that registers itself needs only this URL.

    The Yoodli MCP Server card reading Enabled, with the copy button on the Server URL field ringed
  7. Select the content space for organization roleplays created through MCP.

    The Yoodli MCP Server card reading Enabled, with the Content space picker ringed

Not sure which content space to select? The space decides where organization roleplays created through MCP go, and which goals they can use. See Where does a roleplay created through MCP go? in MCP Integrations.

Step 2: Create an MCP client (only for Manual OAuth)

(If you use Dynamic discovery, go to Step 3: Add Yoodli to Copilot Studio.) Copilot Studio needs this step only for Manual OAuth. Start in Step 3: the redirect URI is the callback URL Copilot Studio shows there, and you cannot edit a redirect URI after you save. The Manual OAuth steps send you back here.

  1. On the Integrations page (from Organization settings, under Advanced Settings, select Manage or Create new on Integrations), find the Yoodli MCP Server card. Make sure that its switch shows Enabled. While MCP is off, MCP clients cannot connect.

  2. On the card, select Does your AI tool ask for an OAuth client ID and client secret? Set up an MCP client for it. The MCP clients page opens. If you do not see that link, see The Yoodli MCP Server card has no link to set up an MCP client.

  3. Select Create an MCP client.

    The MCP clients page with the Create an MCP client button ringed, above Values for your AI tool's form
  4. Enter a name that your admins know, such as Copilot Studio.

  5. Enter the redirect URI for your AI tool. It must use https (http is allowed only for localhost), and it cannot contain a # part or a user name. You cannot edit it after you save. To change it later, disable the client and create a new one.

    The Create an MCP client page with the empty Redirect URI 1 field ringed, under Redirect URIs
  6. If the tool documents a second callback, select Add another redirect URI and add that URI too.

  7. Select Save.

  8. Copy the OAuth client secret. Yoodli shows it on this page only.

    The Copy your OAuth client secret dialog, with the client ID and secret blurred and the secret's copy button ringed

Not sure where to get the redirect URI? See Where do I get the redirect URI for Copilot Studio? Left the page before you copied the secret? See I lost the client secret.

Values to paste into the AI tool

The MCP clients page lists each value under Values for your AI tool's form, with a copy control. On production, the values are:

The MCP clients page, Values for your AI tool's form, with the MCP server URL field and its copy button ringed

When your Yoodli site is not production, copy every value from the MCP clients page. The page matches the site you are signed in to.

  1. Paste the OAuth client ID into the AI tool.

  2. Paste the OAuth client secret into the AI tool.

  3. When the form requires a scope, enter mcp. When the form allows an empty scope, leave Scope empty.

  4. When the form shows these controls, enable PKCE, select method S256, and send the client secret in the request body.

Not sure why PKCE and the request body matter? See What does Yoodli require from a tool that uses a client ID and secret?

Step 3: Add Yoodli to Copilot Studio

Microsoft maintains Copilot Studio's screens, and they can change. These steps match the MCP onboarding wizard, which Microsoft documents for agents on the standard harness. If a label doesn't match, follow Microsoft's current steps.

Try Dynamic discovery first. It needs no MCP client, and it reads Yoodli's sign-in rules from Yoodli. If Dynamic discovery fails, use Manual OAuth below, with an MCP client.

Dynamic discovery

  1. Open the agent.

  2. Open the Tools page.

  3. Select Add a tool.

  4. Select New tool.

  5. Select Model Context Protocol.

  6. Enter a server name.

  7. Enter a short description of Yoodli practice.

  8. Paste the server URL from Step 1.

  9. Select OAuth 2.0.

  10. Select Dynamic discovery.

  11. Select Create.

  12. Select Next.

  13. Create a connection.

  14. Add the tool to the agent.

  15. If Yoodli asks you to sign in, sign in.

  16. Select Authorize.

Not sure whether people can share one connection? See Does each Copilot Studio user need their own Yoodli connection?

Manual OAuth

When Dynamic discovery fails, use these steps. They get the callback URL from Copilot Studio first, because you cannot change an MCP client's redirect URI after you create it.

  1. In the wizard, select OAuth 2.0.

  2. Select Manual.

  3. Enter a temporary client ID that the form accepts.

  4. Enter a temporary client secret.

  5. Paste the authorization endpoint (see Values to paste into the AI tool).

  6. Paste the token endpoint into Token URL.

  7. Paste the token endpoint again into Refresh URL.

  8. If the form requires a scope, enter mcp.

  9. If the form shows PKCE, enable PKCE.

  10. If the form shows a PKCE method, select S256.

  11. If the form asks where to send the client secret, select the request body.

  12. Select Create.

  13. Copy the callback URL. When the URL has a final slash, keep that slash.

  14. In Yoodli, create an MCP client in Step 2 with that callback URL as the redirect URI.

  15. Copy the OAuth client ID from Yoodli.

  16. Copy the OAuth client secret from Yoodli.

  17. Replace the temporary client ID in Copilot Studio.

  18. Replace the temporary client secret in Copilot Studio.

  19. If you cannot edit those fields, remove the tool. Add it again with the Yoodli client ID and the Yoodli client secret.

If sign-in fails, see Sign-in fails after I paste a client ID.

Step 4: Authorize Yoodli and use it in a chat

Each person does these steps after Yoodli is added to their AI tool.

  1. Start the connection in the AI tool.

  2. If Yoodli asks you to sign in, sign in.

  3. Check the Yoodli consent page, Authorize MCP Access. It says that an application is requesting access to your Yoodli account. It names an organization only when an admin created the MCP client, or when more than one of your organizations has MCP on.

  4. If the page lists more than one organization, select one organization. The AI tool then works in that organization only. To use a different organization later, start the connection again and select that one.

  5. Select Authorize.

    The Authorize MCP Access page, naming the organization the application gets access to, with the Authorize button ringed

Setup FAQs

Use these when a setup step raises a question.

What happens when an admin disables MCP?

Yoodli rejects every MCP call for the organization, starting with the next request, for as long as the switch stays off. People do not sign in again for that to apply, and MCP clients cannot connect. While MCP is off, the MCP clients page says that MCP is off. To turn it back on, go to the Integrations page and enable the switch on the Yoodli MCP Server card.

Does the AI tool get my Yoodli password, and how long does it stay connected?

No. Yoodli does not send your Yoodli password to the AI tool, and the tool can stay connected for up to 30 days after you select Authorize. The access token expires after one hour. Yoodli also returns a refresh token, and the tool uses it to stay connected. After 30 days, the person starts the connection again and selects Authorize.

Why does the consent page show only one organization?

When the AI tool uses an MCP client that a Yoodli admin created, Yoodli limits the connection to the organization that created that client. The consent page then shows that organization only. If you are not a member of that organization, see The consent page shows Organization Not Available.

What does Yoodli require from a tool that uses a client ID and secret?

PKCE with method S256, and the client secret in the token request body (client_secret_post).

  • Yoodli rejects a sign-in that omits PKCE method S256.

  • Yoodli rejects a secret sent only in the Authorization header.

  • Yoodli returns a refresh token with no extra parameters.

  • Copilot Studio's Dynamic discovery reads these rules from Yoodli, so only a manual form needs them set.

Where do I get the redirect URI for Copilot Studio?

Copy the callback URL that Copilot Studio shows after you create the tool (see Manual OAuth). When the URL has a final slash, keep that slash.

Does the client secret expire?

No. The secret stops only when you create a new secret or disable the MCP client.

  • A new secret stops the old one at the next token request.

  • Disable stops new tokens for that client, and Enable lets it connect again.

  • Either way, an access token that already exists stays valid for up to one hour.

Does each Copilot Studio user need their own Yoodli connection?

Yes. Each person who uses the published agent needs a connection that signs in as that person. A shared connection uses the Yoodli access of the account that signed in.

Troubleshooting

The Yoodli MCP Server card has no link to set up an MCP client

Contact your Yoodli account team.

The consent page shows MCP Not Available

MCP is off for every organization you belong to. An organization admin enables the switch on the Yoodli MCP Server card, on the Integrations page.

The consent page shows Organization Not Available

  • If: you are not a member of the organization that created the MCP client. Then: sign in as a member of that organization. When you cannot, ask the admin who created the client.

  • If: MCP is off for that organization. Then: an organization admin of that organization enables the switch on the Yoodli MCP Server card, on the Integrations page.

I created an organization roleplay, but no one can find it

Assign it to groups. An organization roleplay created through MCP starts with no groups. See Where does a roleplay created through MCP go? in MCP Integrations.

The AI tool returns a 401 error

Start the connection again in the AI tool. A 401 means the access token is expired or invalid.

The AI tool returns a 403 error

  • If: the error says "MCP is not enabled for your organization." Then: an organization admin enables the switch on the Yoodli MCP Server card, on the Integrations page.

  • If: the error says "You are not a member of the authorized organization." Then: start the connection again in the AI tool, and sign in with an account that is a member of that organization.

Sign-in fails after I paste a client ID

  • If: the MCP client's redirect URI doesn't match the AI tool's callback URL, character for character. Then: on the MCP clients page, open the menu on the client's row and select Disable. Then create a new MCP client with the callback URL that the AI tool shows. A redirect URI cannot be edited.

  • If: PKCE in the AI tool isn't set to S256. Then: enable PKCE and select method S256.

  • If: the AI tool sends the client secret in the Authorization header. Then: set the AI tool to send the client secret in the request body.

I lost the client secret

Create a new secret. On the MCP clients page, open the menu on the client's row and select Create new secret. Paste the new secret into the AI tool. The previous secret stops at the next token request.

The MCP clients table with a client's row menu open, showing Disable and Create new secret, with the client ID blurred

Yoodli says my organization already has the maximum number of enabled MCP clients

Disable an MCP client you no longer use, then create the new one. An organization can have three enabled MCP clients. On the MCP clients page, open the menu on that client's row and select Disable.

Still stuck? Email [email protected] with the AI tool you're connecting, the error or page it shows, and your Yoodli organization name.

Did this answer your question?