MCP Servers

模型上下文协议服务器、框架、SDK 和模板的综合目录。

MCP server by lichman0405

创建于 2/27/2026
更新于 about 5 hours ago
Repository documentation and setup instructions

feishu-miqroera-mcp

🤖 Feishu MCP Server — Let AI Agents directly control Feishu: send messages, create calendars, manage tasks, and write cloud documents.

Python License: MIT MCP


Table of Contents


Features

This project implements an MCP (Model Context Protocol) Server that wraps Feishu’s core capabilities as structured AI tools, enabling any MCP-compatible AI Agent / LLM toolchain to:

| Capability | Functions | |------------|-----------| | 💬 Messages | Send & reply to group messages, @mention members, Markdown format | | 📅 Calendar | Create/query group calendars, create events, invite attendees | | ✅ Tasks | Create tasks, assign owners, set due dates | | 📄 Documents | Create cloud docs, write Markdown content, upload files, one-click share links, set collaborator permissions | | 👥 Users | Get group member lists, resolve users by name | | 🔔 Events | Receive Feishu push events via long-connection WebSocket in real time (no public IP required) |


Quick Start

1. Clone and install

git clone https://github.com/your-username/feishu-miqroera-mcp.git
cd feishu-miqroera-mcp

python -m venv .venv

# Windows
.venv\Scripts\activate
# macOS / Linux
source .venv/bin/activate

pip install -e .

2. Configure Feishu app credentials

cp .env.example .env

Edit .env:

FEISHU_APP_ID=cli_xxxxxxxxxxxxxxxxxx
FEISHU_APP_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

How to get credentials: log in to the Feishu Open Platform → create an in-house app → go to the "Credentials & Basic Info" page

3. Verify the installation

# Confirm the MCP server starts correctly (Ctrl+C to exit)
.venv\Scripts\python.exe -m feishu_mcp.server

You should see MCP server running on stdio indicating success.


Connect an AI Agent

NanoBot (recommended)

NanoBot is a lightweight multimodal AI Agent framework with native support for MCP Servers and Feishu channels.

Step 1: Edit the NanoBot config file

# Config file location (auto-created)
~/.nanobot/config.json        # macOS / Linux
%USERPROFILE%\.nanobot\config.json  # Windows

Step 2: Add feishu-mcp to tools.mcpServers

{
  "tools": {
    "mcpServers": {
      "feishu-mcp": {
        "command": "C:/path/to/feishu-miqroera-mcp/.venv/Scripts/python.exe",
        "args": ["-m", "feishu_mcp.server"],
        "env": {
          "FEISHU_APP_ID": "cli_xxxxxxxxxxxxxxxxxx",
          "FEISHU_APP_SECRET": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
        }
      }
    }
  },
  "channels": {
    "feishu": {
      "appId": "cli_xxxxxxxxxxxxxxxxxx",
      "appSecret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    }
  }
}

Windows note: Use forward slashes / or double backslashes \\ in paths

Step 3: Start NanoBot

nanobot run

NanoBot will automatically establish a Feishu long connection; the AI can then drive Feishu operations via natural language.


Claude Desktop

Step 1: Locate the config file

| OS | Path | |----|------| | Windows | %APPDATA%\Claude\claude_desktop_config.json | | macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |

Step 2: Add the MCP Server config

{
  "mcpServers": {
    "feishu-mcp": {
      "command": "C:/path/to/feishu-miqroera-mcp/.venv/Scripts/python.exe",
      "args": ["-m", "feishu_mcp.server"],
      "env": {
        "FEISHU_APP_ID": "cli_xxxxxxxxxxxxxxxxxx",
        "FEISHU_APP_SECRET": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
      }
    }
  }
}

macOS example: "command": "/Users/yourname/feishu-miqroera-mcp/.venv/bin/python"

Step 3: Restart Claude Desktop

After restarting, look for the 🔧 icon in the chat input area and confirm "feishu-mcp" is loaded.


Cursor

Step 1: Locate the config file

<project root>/.cursor/mcp.json

Or global config:

| OS | Path | |----|------| | Windows | %USERPROFILE%\.cursor\mcp.json | | macOS | ~/.cursor/mcp.json |

Step 2: Add config

{
  "mcpServers": {
    "feishu-mcp": {
      "command": "C:/path/to/feishu-miqroera-mcp/.venv/Scripts/python.exe",
      "args": ["-m", "feishu_mcp.server"],
      "env": {
        "FEISHU_APP_ID": "cli_xxxxxxxxxxxxxxxxxx",
        "FEISHU_APP_SECRET": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
      }
    }
  }
}

Step 3: Open Cursor → Settings → MCP → Confirm feishu-mcp status is green


Cline / Continue / Other MCP-compatible tools

All tools that support MCP stdio transport can connect using the same config format:

{
  "command": "/absolute/path/to/.venv/bin/python",
  "args": ["-m", "feishu_mcp.server"],
  "env": {
    "FEISHU_APP_ID": "cli_xxx",
    "FEISHU_APP_SECRET": "xxx"
  }
}

Long-Connection Event Listener

Feishu's long connection (WebSocket) requires no public IP and no ngrok — receive Feishu push events directly from behind NAT.

# Start the event listener standalone (runs 24/7)
.venv\Scripts\python.exe -m feishu_mcp.webhook.longconn

Example log output after startup:

INFO  Connecting to Feishu WebSocket: wss://msg-frontier.feishu.cn/ws/v2
INFO  Feishu long connection established
INFO  Received message event: chat_id=oc_xxx, sender=ou_xxx, text=Hello

Receiving events in your own application code:

import lark_oapi as lark

client = lark.Client.builder() \
    .app_id("cli_xxx") \
    .app_secret("xxx") \
    .event_callback(lark.EventType.IM_MESSAGE_RECEIVE_V1, your_handler) \
    .build()

ws = lark.ws.Client(app_id, app_secret, event_handler=client.event_handler)
ws.start()

Docker Deployment

Using Docker directly

# Build image
docker build -t feishu-miqroera-mcp .

# Start Feishu event listener (background)
docker run -d \
  --name feishu-listener \
  --env-file .env \
  --restart unless-stopped \
  feishu-miqroera-mcp \
  feishu_mcp.webhook.longconn

# View logs
docker logs -f feishu-listener

Using Docker Compose

# Copy and fill in env vars
cp .env.example .env
# Edit .env with APP_ID and APP_SECRET

# Start event listener
docker compose up -d feishu-listener

# Check status
docker compose ps

# View logs
docker compose logs -f feishu-listener

MCP Server (stdio) is usually invoked directly as a local process by the AI Agent framework and does not need to be containerized.
Docker is primarily used for persistently running the event listener.


Full Tool List

| Tool | Description | |------|-------------| | get_chat_members | Get the member list of a group | | resolve_users_by_name | Look up users in a group by name | | send_message | Send a text/rich-text message to a group or user | | reply_message | Reply to a specific message | | get_or_create_group_calendar | Get or create a shared group calendar | | create_calendar_event | Create an event in a calendar | | add_event_attendees | Add attendees to a calendar event | | list_calendar_events | Query the list of calendar events | | create_task | Create a Feishu task (with due time and description) | | assign_task | Assign an owner to a task | | add_task_to_list | Add a task to a tasklist | | list_tasks | Query the task list | | create_folder | Create a folder in Drive | | create_document | Create a Feishu cloud document | | write_document_markdown | Write Markdown content into a document | | upload_file | Upload a file to Feishu Drive | | upload_file_and_share | Upload a file and return a shareable link in one step (upload + set permission + get link) | | insert_file_block | Insert a file attachment block into a document | | set_doc_permission | Add collaborators to a document (supports users or groups) | | set_doc_public_access | Set document public access / link sharing permission | | get_share_link | Get the sharing link for a document | | grant_permission_request | Handle a permission request and authorize the applicant |

See docs/api.md for full parameter details.


Feishu App Permissions

Enable the following permissions in your app's management page on the Feishu Developer Console:

| Permission | Purpose | |------------|--------| | im:message | Send/receive messages | | im:message.group_at_msg | Group @mention feature | | im:chat.members:read | Read group members | | task:task | Task read/write | | calendar:calendar | Calendar read/write | | drive:drive | Drive/document read/write | | docx:document | Cloud document content editing |

Path to enable permissions: App Management → Permission Management → Enable the above permissions → Publish version.


Development & Contributing

# Run unit tests
pytest tests/unit/ -v

# Run integration tests (requires real Feishu credentials)
pytest tests/integration/ -v

# Format code
ruff format src/ tests/

# Lint check
ruff check src/ tests/

See CONTRIBUTING.md for details.


License

MIT © 2026 feishu-miqroera-mcp contributors

快速设置
此服务器的安装指南

安装包 (如果需要)

uvx feishu-mcp

Cursor 配置 (mcp.json)

{ "mcpServers": { "lichman0405-feishu-mcp": { "command": "uvx", "args": [ "feishu-mcp" ] } } }