Feishu Base MCP Server

1

Add it to Claude Code

Run this in a terminal.

Run in terminal
claude mcp add -e "appToken=${appToken}" -e "personalBaseToken=${personalBaseToken}" feishu-base -- npx @lark-base-open/mcp-node-server -a appToken -p personalBaseToken
Required:appTokenpersonalBaseToken
README.md

Read and write access to Feishu Base (飞书多维表格) databases.

base-mcp-server

A Model Context Protocol server that provides read and write access to Feishu Base (飞书多维表格) databases. This server enables LLMs to inspect database schemas, then read and write records.

Usage

1. Install Node.js

Make sure Node.js is installed on your machine.

2. Obtain Base Tokens

Get the appToken and personalBaseToken for your base account.

3. Install MCP Server Package Globally

Install the MCP server package globally using npm:

npm install -g @lark-base-open/mcp-node-server

4. MCP Server Configuration

In your MCP server configuration file, add the following:

{
  "mcpServers": {
    "base-mcp-server": {
      "command": "npx",
      "args": [
        "@lark-base-open/mcp-node-server",
        "-a",
        "appToken of base",
        "-p",
        "personalBaseToken of base"
      ]
    }
  }
}

Note: If you are using Claude, you will need to add the MCP configuration through the Developer option in the Claude client settings. You can access this in the Settings menu, and then add the MCP server details under the relevant section.

tokens

You need get two tokens before using this mcp server.

  • personalBaseToken: find Base Plugin UI in your base, and access Custom Plugin->Get Authorization Code Video

  • appToken: You can obtain the appToken quickly through a Developement Tool plugin. Here’s a simplified step-by-step process on how to do it: Video

Components

Tools

  • list_tables

    • Lists all tables in a base
    • No input parameters required
  • list_records

    • Lists records from a specified table
    • Input parameters:
      • tableId (string, required): The ID of the table to query
  • get_record

    • Gets a specific record by ID
    • Input parameters:
      • tableId (string, required): The ID of the table
      • recordId (string, required): The ID of the record to retrieve
  • create_record

    • Creates a new record in a table
    • Input parameters:
      • tableId (string, required): The ID of the table
      • fields (object, required): The fields and values for the new record
  • update_record

    • Updates a record in a table
    • Input parameters:
      • tableId (string, required): The ID of the table
      • recordId (string, required): The ID of the record
      • fields (object, required): The fields to update and their new values
  • delete_record

    • Deletes a record from a table
    • Input parameters:
      • tableId (string, required): The ID of the table
      • recordId (string, required): The ID of the record to delete
  • create_table

    • Creates a new table in a base
    • Input parameters:
      • name (string, required): Name of the new table
      • fields (array, required): Array of field definitions (name, type, description, options)
  • update_table

    • Updates a table's name
    • Input parameters:
      • tableId (string, required): The ID of the table
      • name (string, required): New name for the table
  • delete_table

    • Deletes a table
    • Input parameters:
      • tableId (string, required): The ID of the table to delete
  • list_fields

    • Lists all fields in a table
    • Input parameters:
      • tableId (string, required): The ID of the table
  • create_field

    • Creates a new field in a table
    • Input parameters:
      • tableId (string, required): The ID of the table
      • nested (object, required): Field configuration object containing:
        • field (object, required): Field definition with name, type, and other properties
  • update_field

    • Updates a field in a table
    • Input parameters:
      • tableId (string, required): The ID of the table
      • fieldId (string, required): The ID of the field
      • nested (object, required): Updated field configuration
  • delete_field

    • Deletes a field from a table
    • Input parameters:
      • tableId (string, required): The ID of the table
      • fieldId (string, required): The ID of the field to delete

Development

To get started with development:

  1. Install Node.js
  2. Clone the repository
  3. Install dependencies with npm install
  4. Run npm dev to start the development server
  5. Run npm test to run tests
  6. Build with npm build

Available scripts:

  • npm dev: Build and run the server in development mode
  • npm start: Run the server
  • npm test: Run tests
  • npm test:watch: Run tests in watch mode
  • npm lint: Run ESLint
  • npm build: Build the project
  • npm build:watch: Watch for changes and rebuild automatically

Project Structure

.
├── src/                # Source code
│   ├── index.ts       # Main entry point(stdio)
│   ├── index.sse.ts   # SSE entry point
│   ├──

Tools (13)

list_tablesLists all tables in a base
list_recordsLists records from a specified table
get_recordGets a specific record by ID
create_recordCreates a new record in a table
update_recordUpdates a record in a table
delete_recordDeletes a record from a table
create_tableCreates a new table in a base
update_tableUpdates a table's name
delete_tableDeletes a table
list_fieldsLists all fields in a table
create_fieldCreates a new field in a table
update_fieldUpdates a field in a table
delete_fieldDeletes a field from a table

Environment Variables

appTokenrequiredThe application token for the Feishu base
personalBaseTokenrequiredThe personal authorization token for the Feishu base

Configuration

claude_desktop_config.json
{"mcpServers": {"base-mcp-server": {"command": "npx", "args": ["@lark-base-open/mcp-node-server", "-a", "appToken of base", "-p", "personalBaseToken of base"]}}}

Try it

List all the tables available in my Feishu base.
Get all records from the 'Tasks' table and summarize them.
Create a new record in the 'Projects' table with the name 'New Website Launch'.
Update the status field of record 'rec123' in the 'Tasks' table to 'Completed'.
List all fields in the 'Inventory' table to see the current schema.

Frequently Asked Questions

What are the key features of Feishu Base MCP Server?

Full CRUD operations for database records. Schema inspection for tables and fields. Dynamic table creation and management. Support for field-level modifications. Standardized Model Context Protocol interface.

What can I use Feishu Base MCP Server for?

Automating data entry into Feishu Base from natural language inputs. Generating summaries of project tasks stored in Feishu databases. Programmatically updating database schemas based on project requirements. Syncing external data sources into Feishu Base tables via Claude.

How do I install Feishu Base MCP Server?

Install Feishu Base MCP Server by running: npm install -g @lark-base-open/mcp-node-server

What MCP clients work with Feishu Base MCP Server?

Feishu Base MCP Server works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Turn this server into reusable context

Keep Feishu Base MCP Server docs, env vars, and workflow notes in Conare so your agent carries them across sessions.

Need the old visual installer? Open Conare IDE.
Open Conare