Skip to main content

Sally MCP with OpenHands (OpenDevin)

OpenHands (formerly OpenDevin) is an open-source platform for autonomous software agents. The Model Context Protocol (MCP) is an open standard that lets AI tools connect to external data sources. OpenHands supports MCP servers natively, both in OpenHands Cloud and in the Agent SDK. Once connected, agents can query your Sally meetings, summaries, and transcripts as part of automated workflows, for example to gather context from past discussions, compile action items, or feed transcript data into downstream tasks.

For background on the Sally MCP Connector, available tools, and security best practices, see the General Setup Guide.

Quick navigation

  1. Create a Personal Access Token in Sally
  2. Set up the MCP connection in OpenHands
  3. Alternative: Using the OpenHands SDK
  4. Access scope
  5. Troubleshooting
Prerequisites
  • An OpenHands Cloud account at app.all-hands.dev, or the OpenHands SDK installed locally (pip install openhands-ai).
  • An active Sally user with access to at least one company account.
  • Sally MCP enabled for your company account (admin setting).
Why a token is used here

Sally accepts both OAuth 2.1 and a Personal Access Token. For remote servers, the OpenHands MCP settings offer a url and an api_key field and no browser login, so the token route is the one that works in the UI. OpenHands can run OAuth through its CLI, SDK or TOML config instead; see OAuth 2.1 with Dynamic Client Registration if you go that way.

1. Create a Personal Access Token in Sally

A Personal Access Token (PAT) is the credential the OpenHands agent uses to authenticate against the Sally MCP endpoint. You create it once.

  1. Open Settings in the bottom-left of the sidebar.
Sally sidebar with the Settings entry highlighted in the bottom-left
Open Settings
  1. Under Configuration, select Integrations and open the MCP tab. Click Create token under Sally MCP. With no token yet, the button sits in the middle, otherwise in the top right corner.
MCP tab in the integrations with the Create token button highlighted
Create a token in the MCP tab
  1. Fill out the Create Sally MCP token dialog:

    • Name: required. Pick a label that helps you recognize the token later.
    • Expiry date (optional): set a date if the token should expire by itself. Without one, it does not expire.

    Then click Create.

Create Sally MCP token dialog with the Name and Expiry date fields
Set the name and an optional expiry date
  1. Sally shows the full token exactly once. Copy it right away with the icon on the right of the field and store it in a password manager or a secure secret store. Once you close the dialog, there is no way to retrieve it again.
Dialog showing the new token, the copy icon and the note that the token is shown in full only once
Copy the token before closing the dialog
Treat the token like a password

The token grants read access to every appointment, recording and summary your Sally user sees in this organization account. Do not share it over chat, e-mail or tickets, store it in a password manager instead.

  1. Click Done. The token then sits under Your active tokens, with its beginning, its expiry date and a trash icon. The trash icon takes the token's access away. If you need to replace a token, simply create a new one afterwards.
List of active Sally MCP tokens with the beginning of the token, the expiry date and a trash icon
Review active tokens and delete them when needed

2. Set up the MCP connection in OpenHands

  1. In OpenHands Cloud, click the profile icon in the bottom-left corner.
  2. In the menu that appears, select MCP.
OpenHands Cloud start page with the Account menu open and the MCP entry highlighted
Open the Account menu and select MCP
  1. Click Add Server in the top right. In the configuration form, fill in the following fields.
  2. Set Server Type to SHTTP.
Server Type: SHTTP, not SSE

The dropdown defaults to SSE. Sally uses the newer Streamable HTTP protocol, so you must switch to SHTTP. If you leave it on SSE, the connection will fail.

  1. Enter the following URL:
    https://app.sally.io/api/v1/McpExternal
  2. In the API Key field, paste the complete Sally token, i.e. sally_user_mcp_... with prefix. Do not write Bearer in front of it.
  3. Timeout (seconds) is optional and can stay empty. OpenHands then works with 60 seconds, which the field also shows as a grey placeholder.
Why 60 seconds?

Sally requests typically complete in 1-3 seconds, so 60 seconds is more than enough. For very large queries (e.g. long transcripts of multiple meetings), you can increase the value later by editing the server entry via the pencil icon.

  1. Click Add Server.
OpenHands MCP configuration form with Server Type set to SHTTP, the Sally URL entered, API Key filled in, and the Timeout field left empty
Select SHTTP, enter the Sally URL, paste the token, and click Add Server

OpenHands does not show a success message after saving the server. The entry simply appears in the server list, which only confirms that the configuration was saved, not that the connection actually works. You need to test it in a real conversation:

  1. Return to the start page by clicking the OpenHands logo in the top left.
  2. Under Start from Scratch, click New Conversation.
  3. Ask a real Sally question, for example:

"What was discussed at the last meeting?"

OpenHands conversation showing the query 'What was discussed at the last meeting?' with multiple Find the most recent meeting tool calls in progress
Test the connection with a real meeting question

If the agent calls the Sally tools (search_appointments, get_recordings, get_summary, search_summaries, get_transcription) and returns actual meeting content, the integration is working.

Language model

For the agent to call Sally tools, a language model must be configured under Settings → Language Model (LLM). OpenHands Cloud includes the openhands/minimax-m2.5 model by default, which works out of the box. Stronger models (Claude, GPT) can be added via your own API keys but are not required for Sally calls.


3. Alternative: Using the OpenHands SDK

If you use the OpenHands Agent SDK instead of the Cloud UI, you can pass the Sally MCP config programmatically.

mcp_config = {
"mcpServers": {
"sally": {
"url": "https://app.sally.io/api/v1/McpExternal",
"headers": {
"Authorization": "Bearer YOUR_SALLY_TOKEN"
}
}
}
}

Replace YOUR_SALLY_TOKEN with the token you created in Step 1.

Use environment variables

For production workflows, store the token in an environment variable instead of hard-coding it:

import os

sally_token = os.environ["SALLY_MCP_TOKEN"]

mcp_config = {
"mcpServers": {
"sally": {
"url": "https://app.sally.io/api/v1/McpExternal",
"headers": {
"Authorization": f"Bearer {sally_token}"
}
}
}
}

Then set the variable before running: export SALLY_MCP_TOKEN=sally_user_mcp_abc123...

Pass the config to your agent and run it:

from openhands.sdk import Agent, LLM

llm = LLM(model="anthropic/claude-sonnet-4-20250514")

agent = Agent(
llm=llm,
tools=[],
mcp_config=mcp_config,
)

result = agent.run(
"Search my Sally meetings from the last 14 days about the product roadmap "
"and summarize the key decisions."
)
print(result)

The agent calls search_appointments or search_summaries to find relevant meetings, then uses get_summary or get_transcription to extract details.


4. Access scope

The Sally MCP connector only returns meetings tied to your own Sally user or explicitly shared with you. The table below sums up what is and isn't reachable through your token:

SourceAccessible via MCP?
Your own meetings (you are the owner / technical owner)Yes
Meetings shared with you via a recording folder (directly or through one of your teams)Yes
Meetings of users for whom you have been set as deputy ("Vertretung")No
Deputy access is not included

Even if you have been granted deputy ("Vertretung") rights for another user inside Sally, those meetings are not exposed through MCP. The connector currently only surfaces your own recordings and recordings explicitly shared with you via folders. If you need a deputy's meetings in your AI tool, ask the owner to share them through a recording folder.


5. Troubleshooting

IssueFix
Agent only mentions its built-in tools (Bash, Browser etc.), no Sally toolsCheck the Server Type (must be SHTTP, not SSE). Check the token format: only the raw sally_user_mcp_... value, without a Bearer prefix.
Agent calls a Sally tool but gets 401 UnauthorizedDelete the token in Sally and create a new one, then edit the server entry in OpenHands via the pencil icon and paste the new token.
Requests time outEdit the server entry and increase the Timeout value from 60 to 120 or higher.
Sally tools appear but are never calledCheck the language model. Weaker models sometimes ignore available tools. Try switching to a stronger model.

For more troubleshooting tips, see the General Setup Guide → Troubleshooting.