portal
Allows interaction with the MySQL command-line client as an interactive process, providing tools to start, monitor, read/write I/O, and control it.
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., "@portalStart a psql session and run: SELECT * FROM users;"
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.
Portal MCP Server
An MCP (Model Context Protocol) server purpose-built for interactive programs. Start, monitor, read/write I/O, and control interactive processes — all through MCP tool calls.
Use for: SSH remote connections, GDB debugging, database CLIs (psql/mysql), REPL environments, and other programs requiring sustained bidirectional interaction.
Not for: Simple one-shot commands (ls, echo, etc.) — use the built-in Shell
tool for those.
Installation
pip install -e .Requires Python 3.11+.
Related MCP server: PTY MCP Server
Uninstall
pip uninstall portal-mcpConfiguration
Add to your MCP client configuration (e.g., Claude Code):
{
"mcpServers": {
"portal": {
"command": "portal-mcp"
}
}
}Or with explicit Python path:
{
"mcpServers": {
"portal": {
"command": "python",
"args": ["-m", "portal_mcp.server"]
}
}
}The PORTAL_DB_PATH environment variable controls the SQLite database
location (default: portal.db in the working directory). The database is
created fresh on every server startup.
One-Click Install
Copy the prompt from llms-install.md into your AI agent to automatically install and configure Portal.
Tools
Tool | Description |
| Start a subprocess with optional args, cwd, env, timeout |
| Read output records (stdout/stderr/stdin/both) within a time window |
| Write content to a process's stdin |
| Send an OS-native signal to a process |
| List all managed processes with summary info |
| Get detailed info about a process |
| Kill a single process (output data retained) |
| Kill all managed processes |
| Clear I/O records for a process |
| Remove a terminated process and all its data |
process_start
Start a subprocess and begin capturing its output.
command(required): Executable or command to runargs(optional): List of command-line argumentscwd(optional): Working directoryenv(optional): Environment variables (merged with current env)timeout_ms(optional): Idle timeout in milliseconds (0 = no timeout)
Returns: id, os_pid, status
process_read
Read captured output from a process. Resets the idle timer.
id(required): Internal process IDsource(optional):stdout,stderr,stdin, orboth(default:both)duration(optional): How far back to read (default: 1000)unit(optional): Time unit —ns,us,ms,s(default:ms)
Returns: List of records with timestamp, source, content
process_write
Write content to the process's stdin. Only works while running.
id(required): Internal process IDcontent(required): String to write
process_signal
Send an OS signal. On Windows, supports CTRL_C_EVENT (0) and
CTRL_BREAK_EVENT (1). On POSIX, supports the full signal set
(SIGTERM, SIGKILL, SIGINT, etc.).
id(required): Internal process IDsignal(required): Signal name or number
process_list
List all managed processes.
Returns: Array of {id, os_pid, status, timeout_ms, inactive_duration_ms, io_count}
process_inspect
Get full details of a single process.
id(required): Internal process ID
Returns: All metadata plus io_count, stdout_count, stderr_count, stdin_count
process_kill
Kill a single process. Output data is retained for later reading.
id(required): Internal process ID
process_kill_all
Kill all managed processes immediately.
process_clear
Clear all I/O records for a process. The table remains, records are deleted.
id(required): Internal process ID
process_cleanup
Remove a terminated process and all its data. Only allowed for exited
or killed processes.
id(required): Internal process ID
Process Lifecycle
START → RUNNING → EXITED → (read-only, data retained)
→ KILLED → (read-only, data retained)
→ timeout → KILL + CLEANUP (data removed)READ and WRITE operations reset the idle timer, preventing timeout kills.
ANSI Stripping
All color codes and cursor movement sequences (\x1b[...m, \x1b[...J,
etc.) are stripped from output before storage. Content is otherwise stored
as-is, preserving whatever newline conventions the process uses.
Architecture
MCP Client
│ JSON-RPC (stdio)
▼
Portal MCP Server
├── ProcessManager (lifecycle + timeout monitor)
│ └── ManagedProcess (per-process wrapper)
│ └── asyncio.subprocess.Process
└── Database (SQLite via aiosqlite)
├── processes table (metadata)
└── proc_<id> tables (I/O records)Development
# Install dev dependencies
pip install -e .
pip install pytest pytest-asyncio
# Run tests
pytest tests/ -vLicense
MIT
This server cannot be installed
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 Servers
- Alicense-qualityDmaintenanceProvides tools for executing shell commands both synchronously and asynchronously with real-time output streaming and process management capabilities. It enables users to start background tasks, monitor progress, and manage long-running processes via Stdio or HTTP transports.Last updated312MIT
- Alicense-qualityDmaintenanceEnables AI assistants to manage interactive pseudo-terminal (PTY) sessions for programs requiring full terminal emulation like vim, ssh, and interactive REPLs. It provides tools to spawn sessions, send input with escape sequences, and read buffered terminal output.Last updated39MIT
- Alicense-qualityCmaintenanceEnables spawning, interacting with, and capturing screen output from terminal-based programs for debugging PTY/TTY/TUI applications.Last updated66MIT
Related MCP Connectors
Manage Supabase projects end to end across database, auth, storage, realtime, and migrations. Moni…
Operate your own Linux servers from your LLM. Requires the SentinelX agent installed per host.
Control Unreal Engine to browse assets, import content, and manage levels and sequences. Automate…
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/tiefeiyu/Portal'
If you have feedback or need assistance with the MCP directory API, please join our Discord server