diff --git a/docs/public/static/blog/DevLog-2025.04.28/airi-mcp-input-text.mp4 b/docs/public/static/blog/DevLog-2025.04.28/airi-mcp-input-text.mp4
new file mode 100644
index 000000000..82daf0cb6
Binary files /dev/null and b/docs/public/static/blog/DevLog-2025.04.28/airi-mcp-input-text.mp4 differ
diff --git a/docs/public/static/blog/DevLog-2025.04.28/airi-mcp-settings.mp4 b/docs/public/static/blog/DevLog-2025.04.28/airi-mcp-settings.mp4
new file mode 100644
index 000000000..90505e4b1
Binary files /dev/null and b/docs/public/static/blog/DevLog-2025.04.28/airi-mcp-settings.mp4 differ
diff --git a/docs/src/assets/images/blog/DevLog-2025.04.28/airi-mcp-arch.jpg b/docs/src/assets/images/blog/DevLog-2025.04.28/airi-mcp-arch.jpg
new file mode 100644
index 000000000..aaf7620c9
Binary files /dev/null and b/docs/src/assets/images/blog/DevLog-2025.04.28/airi-mcp-arch.jpg differ
diff --git a/docs/src/content/docs/blog/DevLog-2025.04.28.mdx b/docs/src/content/docs/blog/DevLog-2025.04.28.mdx
new file mode 100644
index 000000000..fc4f9d789
--- /dev/null
+++ b/docs/src/content/docs/blog/DevLog-2025.04.28.mdx
@@ -0,0 +1,188 @@
+---
+title: DevLog @ 2025.04.28
+---
+
+import { Image } from 'astro:assets';
+import airiMcpArch from '../../../assets/images/blog/DevLog-2025.04.28/airi-mcp-arch.jpg';
+
+大家好,这里是 [@LemonNeko](https://github.com/LemonNekoGH),今天由我来和大家一起分享开发故事。
+
+## Day time 日常
+
+一周前,我为 Airi 写了用于连接到手机的 MCP 服务器 [Airi-android](https://github.com/LemonNekoGH/Airi-android),但这只是 Airi 操作安卓手机的前半部分,Airi 还需要能与 MCP 服务器交互才行。
+
+这两天我完成了后半部分,给 Tauri 写了一个插件 [#144](https://github.com/moeru-ai/Airi/pull/144),现在 Airi 可以与 MCP 服务器交互了,可以和现有的所有 MCP 服务器交互。
+
+如果有兴趣,可以看看这两个视频,先演示了 Airi 的 MCP 服务器设置,然后演示了 Airi 与安卓手机交互。
+
+
+ Airi 的 MCP 服务器设置
+
+
+
+
+ Airi 在手机上输入 `Hello World`
+
+
+
+开发时,为了理清思路,我画了一张图,从 LLM 调用安卓手机:
+
+
+
+接下来和大家分享一下我的开发过程。
+
+## Tauri 插件开发
+
+其实一开始我并没有想写一个完整的 Tauri 插件,我只是想给 JavaScript 侧暴露一些命令:
+
+```rust
+#[Tauri::command]
+fn list_tools() -> Vec {
+ // 之后再实现
+}
+```
+
+然后写一些工具函数来调用它们:
+
+```javascript
+import { invoke } from '@Tauri-apps/api/core'
+
+export mcp = [
+ {
+ name: "list_tools",
+ description: "List all tools",
+ execute: async () => {
+ return await invoke("list_tools")
+ }
+ }
+]
+```
+
+但很快,我注意到,如果我想在命令中使用 MCP 客户端,就需要让 MCP 客户端作为状态的一部分让 Tauri 来管理:
+
+```rust
+// main.rs
+fn main() {
+ Tauri::Builder::default()
+ .setup(|app| {
+ app.manage(State::new(Mutex::new::