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.
npm install
npm run buildnode dist/src/index.jsor in development:
npm run dev{
"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"
}
}
}
}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)
- 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)
capabilityMode=fullby default (as requested)search_toolsis disabled by default- logs return compact/noise-filtered output by default
- restart and logs use the gateway only; no separate dashboard auth is required
npm run check- type checknpm run build- build todist/npm run dev- run directly from TypeScript
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.
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.
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.