The AstrBot MCP server provides comprehensive programmatic control and automation for AstrBot through MCP tools, enabling AI agents to manage, configure, and interact with AstrBot instances.
Core Capabilities:
Control & Monitoring
Restart the AstrBot Core service and wait for availability
Retrieve real-time or historical logs with optional SSE streaming for live monitoring
List all configured message platforms
Messaging Operations
Send rich message chains (text, images, files, videos, voice, replies/quotes) via Web Chat API or directly to platform targets, bypassing the LLM
Retrieve recent conversation history for specific platform sessions (groups/users)
Configuration Management
List, inspect, and search AstrBot configuration files using flexible path notation (dot notation, JSON Pointer, or segment lists)
Apply batch edits (set, add_key, append) with auto-save and hot reload
Drill down into JSON config nodes with optional secret redaction for security
Plugin Ecosystem
Browse the plugin market with search and sorting by update time
Install plugins via URL or local zip path with proxy support for GitHub access
Configure plugins using the same config operation system
MCP Panel Management
Manage MCP server configurations through panel APIs (list, add, update, delete, test)
Key Features: Automatic file upload for local media, proxy handling to avoid request interception, and flexible configuration path handling.
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., "@AstrBot MCPshow me the latest AstrBot logs from the last 5 minutes"
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.
AstrBot MCP (Node/TypeScript)
MCP server for operating AstrBot through:
AstrBot REST Gateway (
astrbot_plugin_mcp_tools) athttp://127.0.0.1:6324
This project is a full rewrite in Node + TypeScript.
Install
npm install
npm run buildRun
node dist/src/index.jsor in development:
npm run devMCP config example
{
"mcpServers": {
"astrbot-mcp": {
"command": "node",
"args": ["D:/绋嬪簭/astrbotmcp/dist/src/index.js"],
"env": {
"ASTRBOT_GATEWAY_URL": "http://127.0.0.1:6324",
"ASTRBOT_GATEWAY_TOKEN": "iaushdqwuikdwq78ui"
}
}
}
}Environment variables
Required:
ASTRBOT_GATEWAY_TOKEN
Optional:
ASTRBOT_GATEWAY_URL(default:http://127.0.0.1:6324)ASTRBOT_GATEWAY_TIMEOUT(default:30000, milliseconds)ASTRBOT_CAPABILITY_MODE(search|readonly|minimize|full, default:full)ASTRBOT_ENABLE_SEARCH_TOOLS(falseby default)ASTRBOT_LOG_VIEW(compactby default, orraw)ASTRBOT_ENABLE_LOG_NOISE_FILTERING(trueby default)ASTRBOT_GITHUB_ACCELERATION(optional GitHub acceleration base URL override for plugin repo install/update; useoffto disable MCP auto acceleration)
Tool groups
system: status, compact logs, logs by id, restart
platforms: list, stats, details
providers: list, current, details
configs: inspect core/plugin, search, patch core/plugin
plugins: list/details/config read+replace/install/set-enabled/reload/update/uninstall
messages: trigger replies, recent sessions, history
astrbot_tools: list/details/invoke/task/stream
mcp_servers: list/register/update/uninstall/test
personas: list/details/upsert/delete
skills: list/install/toggle/delete
subagents: list/config inspect/config update
cron: list/upsert/delete
discovery:
search_tools(only whenASTRBOT_ENABLE_SEARCH_TOOLS=true)
Safety defaults
capabilityMode=fullby default (as requested)search_toolsis disabled by defaultlogs return compact/noise-filtered output by default
restart and logs use the gateway only; no separate dashboard auth is required
Scripts
npm run check- type checknpm run build- build todist/npm run dev- run directly from TypeScript
Message semantics
trigger_message_reply: injects an inbound message through/events/injections/message, optionally overrides the target LLM provider/model/streaming flags, waits for the event to settle, and by default returns only the bot reply text. Internal metadata is hidden unlessinclude_debug=true.trigger_message_reply:session_idcan be caller-created for tests. Reuse the same id to continue one synthetic conversation; use a fresh id to start an isolated test session. ForGroupMessage,session_idis usually the real group id.trigger_message_replyacceptsinclude_logs=falsewhen you want a low-context response but still keep the send-and-wait behavior.get_message_history: forwebchat, useconversation_idortarget_id; do not pass the sender id asuser_id.conversation_idmay also be a synthetic id you created earlier during injection tests.
Internal tool semantics
list_astrbot_tools: compact list of AstrBot internal tools. This is the clearest discovery entry for LLMs.list_internal_tools: same compact list, kept for backward compatibility.get_internal_tool_details: compact tool metadata by default, with full parameter schema controlled byinclude_parameters.invoke_internal_tool: compact invoke result by default. It returns the tool parameter schema only on the first call for the same tool within the current MCP process, then hides it on later calls to reduce context use.invoke_internal_tool: now defaults towait_for_completion=true. If AstrBot returns a backgroundtask_id, MCP will keep polling/tools/tasks/{task_id}until the task is terminal orwait_timeout_secondsis reached.invoke_internal_tool: when a tool only returns a background acceptance message, MCP now puts that text intoaccepted_replyinstead of pretending it is the finalreply.invoke_internal_tool:include_logs=trueappends simplified task logs to the JSON result; default isfalseto keep the response short.invoke_internal_tool:include_image_content=truemakes MCP return completed image attachments as real MCPimagecontent blocks in addition to compact JSON metadata.invoke_internal_tool: useshow_parameters=trueto force showing the tool parameter schema,show_parameters=falseto hide it,show_arguments=trueto echo the actual call arguments, andshow_debug=trueto include debug payloads.get_internal_tool_task: compact query for one internal tool task bytask_id.stream_internal_tool_task: collects compact SSE task events from/tools/tasks/{task_id}/streamand returns the latest task snapshot plus streamed events.
Plugin workflow
list_plugins: compact plugin list for discovery only. It no longer returns full handlers/config noise.get_plugin_details: compact metadata plus command list for one plugin. Config is intentionally separated.get_plugin_config_file: fetch the full editable plugin config object. This is the main read step before changing a plugin config.replace_plugin_config_file: replace the full plugin config object and auto-reload the plugin.Normal plugin config workflow:
get_plugin_details->get_plugin_config_file-> edit the returnedconfigobject ->replace_plugin_config_file.patch_plugin_config: only for small path-level edits. Prefer the full read-edit-save flow above for normal configuration work.install_plugin/update_plugin: for GitHub repos, MCP now auto-detects a reachable GitHub acceleration prefix and uses it by default.install_plugin/update_plugin: prefergithub_acceleration;proxyis kept only as a deprecated alias for backward compatibility.Recommended flow:
install_plugin->get_plugin_details->get_plugin_config_file->replace_plugin_config_file->uninstall_pluginwhen needed.
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.