@perssua/mcp
OfficialThis server lets MCP-capable AI apps interact with the local Perssua desktop app to check its status, manage assistants, and start or create assistant sessions directly from a conversation.
app_status: Check whether Perssua is installed/running and where its integration bridge lives.
list_assistants: List the user's configured Perssua assistants by name and id.
start_session: Launch the local Perssua app and start a session with an optional assistant, prompt, free-text context, and attached local text files (with autoSubmit control).
create_assistant: Interview the user, create a new custom assistant (name, instructions, optional category/knowledge/files), and open a session with it.
create_session_link: Generate a clickable
perssua://deep link (and optional https launcher link) for hosted/remote connectors; inline links never auto-submit.new_assistant prompt: A guided interview workflow that ends by calling
create_assistant.Runs via local stdio or as an HTTP endpoint, reads only local files the user opts into, and uses single-use handoff files for secure local session launches.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@perssua/mcpStart a Perssua session with my writing assistant to draft a blog post."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@perssua/mcp — official Perssua MCP server
Lets MCP-capable AI apps (Claude Desktop, Claude Code, ChatGPT developer-mode connectors, Grok connectors, and any other MCP client) start a Perssua session with a configured assistant and context (free text + attached text files), directly from a conversation.
Claude / ChatGPT / Grok ──(MCP tool call)──▶ perssua-mcp
│ writes single-use handoff JSON
▼
<Perssua userData>/external-handoffs/<id>.json
│ opens perssua://session/start?handoff=<id>
▼
Perssua app
(selects the assistant, injects context, opens the
session tab, prefills or auto-submits the prompt)Requirements
Node.js ≥ 18
The Perssua desktop app (full flavor) installed and launched at least once (it writes the integration bridge at
~/.perssua/bridge.jsonon startup)
Related MCP server: Perplexity AI MCP Server
Run
# Local stdio (Claude Desktop, Claude Code, other local MCP clients)
npx -y @perssua/mcp # once published; from this repo use:
node bin/perssua-mcp.js
# Streamable-HTTP endpoint on http://127.0.0.1:8433/mcp
node bin/perssua-mcp.js --http 8433Tools
Tool | What it does |
| Is Perssua installed / running on this machine, where, and which handoff capabilities the installed build advertises. |
| Lists the user's assistants (name + id) from the app's roster snapshot. |
| Writes a handoff (assistant, prompt, context, text files, autoSubmit) and launches the app via |
| Creates a custom assistant with its system prompt plus optional Notch, follow-up, summary, certainty, category, and permanent knowledge settings, then opens a session. |
| Returns a clickable |
There is also one MCP prompt, new_assistant — a guided interview (goal → style → knowledge → kickoff) that ends by calling create_assistant. In Claude Code it surfaces as /mcp__perssua__new_assistant.
Version compatibility
The app advertises its handoff capabilities in ~/.perssua/bridge.json (capabilities, e.g. ["session-start", "session-files", "create-assistant", "create-assistant-extended-prompts"]). create_assistant refuses only when the installed build cannot create assistants at all. Its v1 handoff projection always contains newAssistant.name, newAssistant.instructions, and optional newAssistant.category; optional Notch/follow-up/summary/certainty fields are additive. Older compatible desktops ignore those extensions and create the reviewed basic assistant, while newer ones apply them. create-assistant-extended-prompts is informational and is not required to send the backward-compatible payload. Bridges written by builds that predate the capabilities field advertise none.
Environment variables
Variable | Purpose |
| Override the app's user-data directory (defaults to the bridge file, then platform defaults). |
| Default source tag stamped on sessions ( |
| Hosted launcher page (e.g. |
Security model
Handoff payloads are single-use files inside the app's own user-data directory; the app validates the id grammar, size (≤ 2 MB) and freshness (≤ 15 min) and deletes the file after one read.
Inline
perssua://links (the onescreate_session_linkproduces) never auto-submit and cannot attach files — any web page can open a custom scheme, so the user always reviews the prefilled prompt inside Perssua.File attachments are read by this server (running as the user), inlined as text, and capped; binary files are skipped. The app never reads arbitrary paths from a handoff.
Tests
npm test # node --test — no network, no app requiredPrivacy Policy
Full policy: https://perssua.com/privacy
What this MCP server does with data, specifically:
Collection: the server runs entirely on the user's machine. It reads the Perssua integration bridge (
~/.perssua/bridge.json), the assistants roster snapshot (names and ids only), and — when a tool call asks for it — local text files the user chose to attach. Tool arguments (prompt, context, assistant spec) come from the MCP client.Usage and storage: payloads are written only to the Perssua app's own handoff directory on the same machine, as single-use files the app deletes after reading (15-minute expiry). The server keeps no database, no logs of content, and no state between calls.
Third-party sharing: none. The server makes no network requests; data flows only between the MCP client and the local Perssua app. Session content handled by the Perssua app itself is covered by the policy linked above.
Retention: nothing is retained by this server. Unconsumed handoff files are deleted by the app after 15 minutes.
Contact: help@perssua.com
See ../claude, ../chatgpt, and ../grok for per-client setup, and
../../docs/integrations.md for the full protocol reference.
WebMCP Session Studio challenge source
webmcp-session-studio/ is the public, standalone
source for the Perssua WebMCP Session Studio. Its five-step wizard exposes
exactly five browser-scoped tools through
document.modelContext.registerTool(...), keeps every agent mutation visible
in an append-only ledger, and makes the final perssua:// handoff a human-only
action. The create-only new-assistant handoff is an untrusted
proposal that the Perssua app must validate and present for confirmation; the
browser tools never create anything. In the final Start the session step,
the human uses Create assistant and start session; Perssua opens and
pre-fills the session without sending the message.
The WebMCP Challenge legal entrant is MONTANO PRODUCTIONS B.V.; Perssua is the product/project name. Director Sara Ennes da Silva is the authorized WebMCP Challenge submitter/signatory. The public contact email remains pending and is maintained privately until publication is explicitly authorized.
The Studio is independent from this Node MCP server and can be demonstrated
without the Perssua desktop app installed. See WEBMCP_CHALLENGE.md
for challenge-window scope, security decisions, testing, compatibility, and the
mapping to the production https://perssua.com/studio route.
Available Tools
5 toolsapp_statusPerssua app statusARead-only
Check whether the Perssua desktop app is installed and running on this machine, and where its integration bridge lives.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint and openWorldHint annotations already convey that this is a safe, read-only operation. The description adds that it checks installation, running state, and bridge location on the local machine, but it does not describe return format, error behavior, or what 'integration bridge' concretely means. This is acceptable but not especially rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that communicates the resource, the exact checks being performed, and the location aspect. Every phrase earns its place, and there is no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, parameterless read-only status tool with no output schema, the description covers what an agent needs to know: that the tool checks installation, running state, and bridge location. Sibling tools are unrelated, and no prerequisites or caveats are necessary for this operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description cannot add parameter-level meaning. A score of 4 is the appropriate baseline for a parameterless tool, and the description sufficiently explains the tool's purpose without needing parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Check') and identifies the concrete resource: whether the Perssua desktop app is installed, running, and where its integration bridge lives. This clearly differentiates it from the sibling tools, which deal with assistants and sessions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear use context: call this tool to determine the desktop app's installation and running state, and to locate its integration bridge. It does not explicitly mention alternatives or exclusions, but the sibling tools' purposes are clearly different enough that the intended use is evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_assistantCreate a Perssua assistantA
Create a new custom assistant in the Perssua desktop app (name + system-prompt instructions, optional knowledge) and open a session with it. BEFORE calling this, interview the user briefly so the assistant fits: (1) what is the assistant's goal / what sessions will it support, (2) how should it respond (tone, format, language), (3) what knowledge should it carry (notes, files, background), (4) what should the first session start with. Then write the instructions yourself from those answers. Knowledge text and files become the assistant's permanent context, not part of the first message. Runs on the same machine as the Perssua app.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Assistant name shown in Perssua, e.g. "Interview Coach". | |
| files | No | Local text-file paths whose contents are stored as the assistant's knowledge. | |
| source | No | Calling product, e.g. "claude", "chatgpt", "grok". Defaults to the PERSSUA_MCP_SOURCE env var or "mcp". | |
| category | No | Optional category label for the assistants library. | |
| knowledge | No | Free-text knowledge stored with the assistant (background, notes, decisions). | |
| autoSubmit | No | Submit the first prompt immediately (default true). When false, it is prefilled for review. | |
| firstPrompt | No | First user message for the session that opens with the new assistant. | |
| instructions | Yes | System prompt defining the assistant: goal, behavior, tone, and response format. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses important behavioral details: knowledge and files become permanent context, they are not part of the first message, a session is opened immediately, and the tool runs on the same machine as the Perssua app. This adds meaningful context without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and then provides structured, numbered pre-call guidance. Every sentence carries useful information, including the environment note about running on the same machine, with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 8 parameters and no output schema, the description provides rich context: what to do before calling, how to craft instructions, the permanence of knowledge, and the local-machine runtime. Combined with the fully described schema, an agent has everything needed to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all parameters with 100% coverage, so the baseline is 3. The description adds extra semantic value by clarifying that knowledge and files become permanent assistant context rather than part of the first message, which directly disambiguates knowledge, files, and firstPrompt.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: create a new custom assistant in the Perssua desktop app and open a session with it. It also names the key ingredients (name, system-prompt instructions, optional knowledge), clearly distinguishing this from sibling tools like list_assistants and start_session.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives unusually concrete usage guidance by requiring a brief user interview before calling and specifying exactly what to ask. It does not explicitly list sibling alternatives or when-not-to-use cases, but the context for when this tool is appropriate is very clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_session_linkCreate a Perssua session linkARead-only
Build a perssua:// deep link (and, when configured, an https launcher link) that starts a Perssua session with an assistant, prompt, and context when the user clicks it. Use this from hosted/remote connectors (ChatGPT, Grok, web chats) where this server cannot reach the user's machine. Inline links never auto-submit — the user reviews the prefilled prompt in Perssua.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | No | Initial user message (prefilled, not auto-submitted). | |
| source | No | Calling product, e.g. "chatgpt" or "grok". | |
| context | No | Short background context injected into the session. | |
| assistant | No | Assistant to activate, by name or id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare readOnlyHint=true, matching the description's non-mutating 'build a link' framing. The description adds valuable behavioral context beyond annotations: the link is activated on click, may include an https launcher when configured, and importantly 'Inline links never auto-submit — the user reviews the prefilled prompt in Perssua.'
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: one for what the tool builds, one for when to use it, and one for the critical non-auto-submit caveat. Information is front-loaded and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, usage context, a key behavioral caveat, and the role of all major parameters. With readOnlyHint=true and no output schema required, this is a complete and well-scoped description for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema documents all four parameters. The description names prompt, assistant, and context in the opening sentence but adds little semantic detail beyond what the schema already provides. This is an appropriate baseline-3 score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Build a perssua:// deep link...'. It also clarifies the purpose by stating it starts a session with an assistant, prompt, and context when clicked, distinguishing it from start_session even without naming it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when this tool should be used: 'from hosted/remote connectors (ChatGPT, Grok, web chats) where this server cannot reach the user's machine.' This is clear contextual guidance, though it does not explicitly name the alternative (start_session) or state a when-not-to-use condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_assistantsList Perssua assistantsARead-only
List the user's configured Perssua assistants (name and id) so a session can be started with the right one.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only and non-open-world nature, so the description does not need to restate those. It adds the useful scoping detail that only the user's configured assistants are listed and that results include name and id, but it stays silent on ordering, pagination, or empty-list behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that leads with the verb and resource and then explains the purpose. No filler, no repetition of the tool name, and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-argument, read-only list tool, the description provides the essential return fields and the reason to call it. There is no output schema, but 'name and id' gives an agent enough to invoke and interpret the call successfully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the schema already carries complete parameter information, so the description does not need to compensate. The mention of returned fields ('name and id') adds relevant context for interpreting the call result.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List'), a specific resource ('the user's configured Perssua assistants'), and the key returned fields ('name and id'). This makes it easy to distinguish from the sibling tools, which create or start sessions rather than enumerate existing assistants.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies the right usage moment: call this before starting a session so the correct assistant can be selected. It does not explicitly name alternative tools or state when not to use it, so it falls just short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_sessionStart a Perssua sessionA
Launch the Perssua desktop app and start a session with an optional assistant, an initial prompt, free-text context, and text files attached as context. Runs on the same machine as the Perssua app; for remote/hosted setups use create_session_link instead. Files must be paths to local text files (binary files are skipped). To start with a NEW assistant that does not exist yet, use create_assistant instead.
| Name | Required | Description | Default |
|---|---|---|---|
| files | No | Local text-file paths whose contents are attached as session context. | |
| prompt | No | Initial user message for the session. | |
| source | No | Calling product, e.g. "claude", "chatgpt", "grok". Defaults to the PERSSUA_MCP_SOURCE env var or "mcp". | |
| context | No | Background context injected into the session (project notes, task description, decisions so far). | |
| assistant | No | Assistant to activate, by name or id (see list_assistants). Omit to keep the current one. | |
| autoSubmit | No | Submit the prompt immediately (default true). When false, the prompt is prefilled for the user to review. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly=false and destructive=false, and the description adds meaningful runtime facts: the tool launches a local desktop app, only accepts local text-file paths, and silently skips binary files. It does not cover every side effect like process lifecycle or return behavior, but it goes well beyond the bare annotation profile without contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the core function, the local-vs-remote boundary, and the file/new-assistant caveats. It is front-loaded with the main purpose and contains no repetition of the title or schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with six optional parameters and no output schema, the description gives enough context to select and invoke it: local execution, remote alternative, file restrictions, and new-assistant alternative. The remaining gap is that it does not describe what the tool returns or what state changes occur after launch, which would be more important without the strong sibling guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by grouping the parameters into a coherent invocation scenario ('optional assistant, initial prompt, free-text context, and text files') and by contributing the binary-file-skip constraint that is not present in the schema. This lifts it above the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Launch the Perssua desktop app and start a session') and enumerates the optional payloads it accepts. It explicitly distinguishes the tool from create_session_link and create_assistant, so an agent can disambiguate at a glance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use and when-not-to-use guidance: local same-machine usage vs 'remote/hosted setups use create_session_link instead,' and new-assistant creation routed to create_assistant. This is direct alternative routing rather than leaving the choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool maps to a distinct action: environment status, assistant listing, remote link creation, local session launch, and assistant creation. The two session-starting tools are clearly separated by local vs remote context and explicitly reference each other, reducing ambiguity.
Most tool names follow a clear verb_noun snake_case pattern: list_assistants, create_session_link, start_session, create_assistant. app_status is the only noun-phrase name without an action verb, a minor deviation from the otherwise consistent convention.
Five tools is well-scoped for a desktop-app integration bridge. Each tool covers a distinct step in the assistant/session workflow without unnecessary overlap or bloat.
The set covers the core workflow: checking app availability, listing assistants, starting sessions locally or via links, and creating new assistants. It lacks update/delete or session-management operations, but those may realistically live in the desktop app itself.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Manage SRG+ hubs, channels, content, assets, users, and workspaces from any MCP-aware AI agent.
Automate 1,000+ services from any MCP-compatible AI agent: build Applets, run actions and queries.
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
Discover and call AI agents via MCP. Supports A2A agents and platform agents with async tasks.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceFacilitates integration of PrivateGPT with MCP-compatible applications, enabling chat functionalities and secure management of knowledge sources and user access.-
- FlicenseBqualityDmaintenanceProvides a standardized way to integrate Perplexity AI's features like chat, search, and documentation access into MCP-based systems.51-

Anam MCP Serverofficial
AlicenseBqualityCmaintenanceEnables managing AI personas, avatars, voices, and sessions from any MCP client, for integration with Anam AI.5430MIT- AlicenseBqualityCmaintenanceMCP server that lets AI agents control Perssona. It enables creating terminals, managing canvas nodes, sending prompts, and running multi-agent workflows.2024MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Perssua/perssua-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server