Feishu Codex MCP
Enables Codex to access Feishu knowledge bases and authorized shared cloud drives, allowing listing, searching, and reading wikis, documents, spreadsheets, bitable, and files, with scoped and approval-gated create and edit capabilities.
README
Feishu Codex MCP v26.08.25
通过企业自建应用,把飞书知识库和已授权的共享云盘接入 Codex。该 MCP 使用 App ID 与 App Secret 获取应用身份,可列出、搜索和读取知识库、电子表格、多维表格与共享文件,也能在严格边界内新建或小范围修改文档。
本仓库是可公开上传到 GitHub 的源码版。它不包含真实 .env、任何飞书内容、本地备份、下载文件、依赖目录或发布压缩包。
功能与安全边界
- 使用飞书应用身份,不要求在浏览器里登录个人飞书账号。
App ID与App Secret只证明“这是哪个应用”;API 权限和目标资源授权共同决定“它能访问什么”。- 默认
FEISHU_WIKI_READ_SCOPE=root,只读取指定根节点及其后代。 - 可将读取范围改成
space,读取根节点所在知识空间的全部节点;写操作仍限制在配置的根节点或共享文件夹内。 - 修改文档前会保存本地备份;恢复操作会创建新草稿,不会直接覆盖当前文档。
- 不提供删除、移动、分享或修改权限等破坏性工具。
- Codex 对写工具使用
writes审批模式,执行前仍会请求确认。
准备工作
你需要:
- 一个有权创建、发布或审批企业自建应用的飞书企业账号;
- Windows 10/11;
- Node.js 24 或更高版本;
- Codex Desktop、Codex CLI 或 Codex IDE 扩展;
- 一个准备授权给应用的知识库节点;共享云盘文件夹为可选项。
官方入口:
一、创建飞书企业自建应用
- 打开飞书开放平台开发者后台,选择“创建企业自建应用”。
- 填写应用名称、说明和图标。
- 进入“凭证与基础信息”,复制
App ID与App Secret,暂时保存在密码管理器中。 - 不要把
App Secret发到聊天、Issue、截图或 GitHub。若已经泄露,应立即在飞书后台重置。
这个项目使用应用身份换取 tenant_access_token,因此不需要个人 OAuth 登录。你是企业管理员或应用管理员,并不等于应用自动拥有所有知识库和云盘权限;资源仍需单独授权。
二、配置并发布飞书权限
进入应用的“权限管理”,按实际要使用的能力申请权限。飞书后台的中文名称可能调整,建议同时按权限码搜索。
| 能力 | 只读权限 | 使用写工具时的权限 |
|---|---|---|
| 知识库目录 | wiki:wiki:readonly |
wiki:wiki 或后台显示的等价可写权限 |
| 新版文档 | docx:document:readonly |
docx:document |
| 电子表格 | sheets:spreadsheet:readonly |
本项目当前只读取,可保持只读 |
| 多维表格 | bitable:app:readonly |
本项目当前只读取,可保持只读 |
| 云盘文件 | drive:drive:readonly |
在共享文件夹新建文档时使用等价可写权限 |
最小权限原则:只使用读取工具时,不要申请可写权限。若飞书后台显示的权限名称与上表不同,请以对应 API 页面列出的最新“所需权限”为准。
权限添加后还要完成:
- 创建应用版本;
- 申请发布;
- 由企业管理员审批新增权限;
- 确认版本状态为已发布。
仅在后台勾选权限但没有发布,运行中的应用身份不会获得新权限。
三、授权知识库与共享云盘
API 权限是应用能力,资源授权是具体文档的访问权,两者缺一不可。
授权知识库
- 打开准备接入的知识库或目标根节点。
- 在知识空间成员、权限设置或文档协作者中添加刚创建的企业自建应用。不同飞书版本中入口可能显示为“添加文档应用”。
- 只读取时授予查看权限;需要
feishu_edit或feishu_create时再授予编辑权限。 - 若搜索不到应用,先确认应用已发布、审批通过,并且可用范围包含当前账号。
授权共享云盘文件夹
- 打开目标共享文件夹的分享或权限设置。
- 添加该企业自建应用,并按需要授予查看或编辑权限。
- 只配置一个明确的根文件夹,不要把整个企业云盘作为默认边界。
管理员身份不会绕过知识库和文件夹的资源授权。应用最终可见的内容,是“已发布的 API 权限”与“已授权资源”的交集。
四、取得 Wiki 和 Drive Token
Wiki token
复制目标知识库节点链接,例如:
https://your-tenant.feishu.cn/wiki/WIKI_NODE_TOKEN?from=copylink
/wiki/ 后、查询参数 ? 前的部分就是 FEISHU_WIKI_ROOT_TOKEN。完整链接可以填入 FEISHU_WIKI_ROOT_URL,用于生成可点击链接。
Drive token
复制已授权共享文件夹链接,例如:
https://your-tenant.feishu.cn/drive/folder/DRIVE_FOLDER_TOKEN
/folder/ 后、查询参数前的部分就是 FEISHU_DRIVE_ROOT_TOKEN。不需要云盘能力时可留空。
不要把普通文档 token、知识库节点 token 和云盘文件夹 token 混用。若链接结构与示例不同,可先在浏览器地址栏中确认资源类型,或通过飞书 API 调试台核对 token。
五、安装项目并填写 .env
在 PowerShell 中进入项目目录:
npm ci
Copy-Item .env.example .env
notepad .env
在 .env 中填写自己的值:
FEISHU_APP_ID=<你的 App ID>
FEISHU_APP_SECRET=<你的 App Secret>
FEISHU_WIKI_ROOT_TOKEN=<知识库根节点 Wiki token>
FEISHU_WIKI_ROOT_URL=https://your-tenant.feishu.cn/wiki/<知识库根节点 Wiki token>
FEISHU_WIKI_READ_SCOPE=root
FEISHU_DRIVE_ROOT_TOKEN=<共享文件夹 Drive token;不用云盘时留空>
FEISHU_API_BASE_URL=https://open.feishu.cn/open-apis
FEISHU_BACKUP_DIR=data/backups
读取范围有两个选择:
root:默认值,只读取配置根节点及其子节点,适合公开部署和最小授权。space:读取该根节点所属知识空间的全部节点,适合确实需要跨目录搜索的场景。
space 只扩大读取发现范围,不扩大写入边界。.env 已被 .gitignore 排除;只能提交 .env.example。
使用说明
完成飞书应用配置后,按下面的顺序连接:
- 运行
npm ci安装锁定版本的依赖。 - 把
.env.example复制为.env。 - 填写自己的 App ID、App Secret 和知识库根节点 Wiki token。
- 保持
FEISHU_WIKI_READ_SCOPE=root可将读取限制在根节点及其后代;确实要读取同一知识空间的其他目录时才改为space。 - 需要读取共享云盘时填写
FEISHU_DRIVE_ROOT_TOKEN;不用云盘时留空。 - 双击
connect-feishu.cmd,看到Setup completed后完全退出并重启 Codex。 - 让 Codex 执行“列出飞书知识库根目录”,确认 MCP 已连接。
- 更换应用、目录或读取范围后,修改
.env并再次重启 Codex。
知识库根节点即使没有子页面,feishu_list_wiki 也会返回根节点本身。space 模式可让列出、搜索和读取覆盖同一知识空间,但创建、编辑和恢复草稿仍受原始 FEISHU_WIKI_ROOT_TOKEN 限制。
读取知识库中的多维表格时,feishu_read 可用 table 指定数据表,并用 max_tables、max_records 限制返回量。该能力需要 bitable:app:readonly 或等价的更高权限,且目标多维表格必须授权给应用。
在项目目录运行以下命令,可执行不写入飞书内容的在线只读诊断:
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/test-live.ps1
六、连接 Codex
自动配置(Windows)
安装依赖并填写 .env 后,双击:
connect-feishu.cmd
脚本会保留 ~/.codex/config.toml 中的其他设置,只更新 [mcp_servers.feishu] 段。成功后完全退出并重新打开 Codex。
手动配置
Codex 的 MCP 配置文件位于 ~/.codex/config.toml。把路径改成你机器上的绝对路径,Windows 路径建议使用 /:
[mcp_servers.feishu]
command = "C:/Program Files/nodejs/node.exe"
args = ["C:/path/to/FeishuCodexMCP/src/server.js"]
cwd = "C:/path/to/FeishuCodexMCP"
startup_timeout_sec = 20
tool_timeout_sec = 120
default_tools_approval_mode = "writes"
这里不需要把 App ID 或 Secret 写进 config.toml。服务器会从 cwd 指向目录中的 .env 读取配置。Codex Desktop、CLI 与 IDE 扩展在同一台机器上共用这份配置。
修改配置后必须重启 Codex。重启后,可以让 Codex 执行“列出飞书知识库根目录”来确认连接。
七、检查连接与制作发布包
运行需要真实飞书凭证的只读诊断:
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/test-live.ps1
只读诊断会检查应用认证、知识库根节点、当前读取范围、电子表格、多维表格和共享云盘,不会修改飞书内容。
需要制作包含依赖的安全发布包时运行:
npm run package:safe
脚本会核对压缩包白名单、扫描敏感值并执行离线启动检查,然后在项目上级目录生成 飞书MCP-v26.08.25.zip。该压缩包是发布产物,不应提交到 GitHub。
MCP 工具列表
| 工具 | 作用 | 类型 |
|---|---|---|
feishu_list_wiki |
列出已授权根节点、子节点或知识空间目录 | 只读 |
feishu_search |
在允许范围内按标题与正文搜索 | 只读 |
feishu_read |
读取文档、电子表格、多维表格或文件 | 只读 |
feishu_edit |
按修订号小范围替换或插入文档块,写前备份 | 写入,需审批 |
feishu_create |
在允许的知识库节点或共享文件夹中新建 Docx | 写入,需审批 |
feishu_list_drive |
遍历已授权共享文件夹 | 只读 |
feishu_list_backups |
查看本机保存的文档修改前快照 | 只读 |
feishu_create_restore_draft |
从备份创建新的恢复草稿,不覆盖原文 | 写入,需审批 |
常见问题
有 App ID 和 Secret,为什么仍然读不到内容?
凭证只负责应用身份认证。还要同时满足:应用权限已发布并审批、目标资源已授权给应用、token 类型正确、资源位于配置的读取范围内。
为什么不需要浏览器登录?
本项目使用企业自建应用身份,通过 App ID 与 Secret 获取 tenant_access_token。浏览器登录通常对应用户 OAuth;这是另一套认证方式,不是本项目的必需步骤。
我是管理员,为什么还要配置权限?
管理员是你的账号角色,API 请求则代表企业自建应用。飞书把账号管理权、应用 API 权限和具体资源权限分开管理,避免一个应用仅凭管理员创建就自动读取全企业资料。
根节点能读取,但其他知识库页面看不到
检查 FEISHU_WIKI_READ_SCOPE。root 只遍历根节点后代;若确实要读取同一知识空间的其他目录,可改成 space 后重启 Codex。仍不可见时,检查知识空间对应用的授权。
多维表格读不到
确认应用至少具有 bitable:app:readonly 或等价的更高权限,权限版本已经发布,并且该多维表格已把应用添加为文档应用或协作者。
Codex 中没有出现飞书工具
检查 ~/.codex/config.toml 中的路径是否存在、项目是否已执行 npm ci、.env 是否位于 cwd,然后完全退出并重启 Codex。也可先运行 node src/server.js 检查启动错误;正常的 stdio MCP 服务器启动后会等待输入,不会弹出网页登录页面。
安全说明与上传检查
公开仓库和安全发布包都不得包含真实 .env、App ID、App Secret、Wiki/Drive token、企业知识库 URL、下载文件或本地备份。安全打包器会核对压缩包白名单,并扫描本机 .env 中的敏感值;发现真实配置时会拒绝发布。
FEISHU_WIKI_READ_SCOPE=space 只扩大同一知识空间的读取范围。创建、编辑和恢复草稿仍受配置根节点限制;多维表格功能保持只读,不提供记录写入工具。
如果怀疑凭证泄露:
- 立即在飞书开放平台重置 App Secret。
- 收回或缩小应用权限,并检查知识库、多维表格和共享云盘的资源授权。
- 删除包含旧凭证的本地文件和压缩包。
- 若凭证进入过 Git 历史,应清理历史后再上传,并始终以新 Secret 为准。
上传前逐项确认:
- [ ] 仓库中只有
.env.example,没有.env或其他真实凭证文件。 - [ ]
App Secret、真实 Wiki/Drive token、企业域名和飞书内容没有出现在任何已跟踪文件中。 - [ ] 没有
node_modules、data、downloads、backups、日志或压缩包。 - [ ]
git status --short只显示预期改动,或保持为空。 - [ ] 用
git ls-files复核即将上传的完整文件列表。 - [ ] 若凭证曾进入 Git 历史,仅删除当前文件不够;应先重置飞书 Secret,再清理历史后上传。
可用以下命令做快速检查:
git ls-files
git grep -n -I -E "FEISHU_APP_SECRET=.+|tenant_access_token|your-tenant\.feishu\.cn"
最后一条命令可以命中 README 中的占位示例;人工确认它们只是占位符,不是真实值。
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。
mcp-server-qdrant
这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。