Token导航 LogoToken导航TokenDH.com
MCP Star logo
AI代理stdio官方级别未说明来源级核验

MCP Star

MCP Server

starlark-mcp

Starlark MCP是一个通过Starlark脚本实现动态工具加载的协议服务器,适用于需要灵活扩展工具功能的开发场景。

工具数

0

提示词数

0

GitHub Stars

1

资源数

0
RustClaude开发工具Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

connyay

提供方

connyay

最后核验

2026/5/17 20:20

运行时

Node.js

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

npx starlark-mcp

详细介绍

云雀MCP

Starlark驱动的MCP(模型上下文协议)服务器,通过Starlark脚本实现动态工具加载。

概述

为什么是星雀?

  • 无汇编:用Python编写工具,如Starlark,不需要Rust/Go/TypeScript
  • 热重新加载:自动检测并重新加载扩展名的更改
  • 丰富的运行时间:内置HTTP、数据库、系统命令等模块
  • 安全:使用显式命令白名单进行沙盒执行
  • 可测试的:包括基于公约的测试框架
  • 生产就绪:单一二进制、最小依赖、跨平台

建筑一瞥

MCP Client (Claude Desktop, Zed, etc.)
    ↓ stdio (JSON-RPC)
MCP Server Layer (rmcp)
    ↓
Starlark Engine (loads & executes .star files)
    ↓
Extensions (.star files in extensions/)
    ↓ via modules
Built-in Capabilities (http, exec, sqlite, postgres, etc.)

docs/ARCHITECTURE.md 获取详细的架构文档。

主要特点

动态拉伸加载

  • 掉落 .star 文件进入 extensions/ 目录
  • 无需编译或重新启动服务器
  • 热重新加载自动检测更改

丰富的模块系统

  • 超文本传输协议:REST API集成(http.get(), http.post())
  • 执行:带白名单的CLI工具包装器(exec.run())
  • sqlite/postgres:数据库集成
  • 数学:数学运算
  • 时间:时间戳
  • 环境:环境变量访问

docs/MODULES.md 以获取完整的模块参考。

内置测试框架

  • 在中编写测试 *_test.star 文件
  • 基于惯例的测试发现
  • 包含断言库
  • 与一起跑步 starlark-mcp --test

docs/TEST.md 用于测试指南。

安全

  • 云雀沙盒:默认情况下没有文件I/O或网络访问
  • 高管白名单:扩展必须声明允许的命令
  • 进程隔离:将流程与MCP客户端分开

快速开始

安装

npm(推荐)

# Run directly with npx (no install needed)
npx starlark-mcp

# Or install globally
npm install -g starlark-mcp

来源

# Clone repository
git clone https://github.com/connyay/starlark-mcp.git
cd starlark-mcp

# Build release binary
cargo build --release

# Binary will be at: target/release/starlark-mcp

预构建二进制文件

下载自 对于您的平台:

  • Linux(x86_64,ARM64)
  • macOS(x86_64,ARM64)
  • Windows(x86_64)

运行服务器

# Start server with default extensions directory
starlark-mcp

# Use custom extensions directory
starlark-mcp --extensions-dir /path/to/extensions

# Run tests
starlark-mcp --test

启动服务器时会发生什么:

  1. 全部加载 .star 扩展自 ./extensions/ 目录
  2. 启动MCP服务器侦听stdin
  3. 监视扩展文件更改(启用热重新加载)
  4. 记录到stderr

docs/CLI_REFERENCE.md 获取完整的CLI文档。

与MCP客户端集成

克劳德桌面版

添加到 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

{
  "mcpServers": {
    "starlark": {
      "command": "/path/to/starlark-mcp",
      "args": ["--extensions-dir", "/path/to/extensions"],
      "env": {
        "MY_API_KEY": "your-api-key-here"
      }
    }
  }
}

Zed编辑

添加到Zed配置:

{
  "context_servers": {
    "starlark-mcp": {
      "command": {
        "path": "/path/to/starlark-mcp",
        "args": ["--extensions-dir", "/path/to/extensions"]
      }
    }
  }
}

您的第一次延期

创建 extensions/hello.star:

def say_hello(params):
    """Say hello to someone"""
    name = params.get("name", "World")
    return {
        "content": [{"type": "text", "text": "Hello, {}!".format(name)}],
    }

def describe_extension():
    return Extension(
        name = "hello",
        version = "1.0.0",
        description = "Simple greeting extension",
        tools = [
            Tool(
                name = "say_hello",
                description = "Say hello to someone",
                parameters = [
                    ToolParameter(
                        name = "name",
                        param_type = "string",
                        required = False,
                        default = "World",
                        description = "Name to greet",
                    ),
                ],
                handler = say_hello,
            ),
        ],
    )

服务器将自动检测并加载新扩展(热重新加载)。无需重新启动!

扩展示例

简单扩展(无依赖关系)

包括 cat_facts.star 演示了一个基本扩展:

def get_cat_fact(params):
    """Returns a random cat fact"""
    facts = [
        "Cats sleep 12-16 hours a day.",
        "A group of cats is called a 'clowder'.",
        "Cats have over 30 muscles in each ear.",
    ]

    index = time.now() % len(facts)

    return {
        "content": [{"type": "text", "text": facts[index]}],
    }

def describe_extension():
    return Extension(
        name = "cat_facts",
        version = "1.0.0",
        description = "Fun facts about cats",
        tools = [
            Tool(
                name = "get_cat_fact",
                description = "Get a random fact about cats",
                handler = get_cat_fact,
            ),
        ],
    )

HTTP API集成

def get_weather(params):
    """Get weather from an API"""
    city = params.get("city", "")

    if not city:
        return error_response("city parameter is required")

    response = http.get(
        url = "https://api.weather.gov/...",
        headers = {"User-Agent": "starlark-mcp"}
    )

    if response.get("status_code", 0) != 200:
        return error_response("API request failed")

    data = response.get("json", {})
    # Format and return data...

CLI工具包装器

def list_repos(params):
    """List GitHub repositories using gh CLI"""
    org = params.get("org", "")

    if not org:
        return error_response("org parameter is required")

    result = exec.run("gh", ["repo", "list", org, "--json", "name"])

    if not result["success"]:
        return error_response(result["stderr"])

    repos = json.decode(result["stdout"])
    # Format and return repos...

def describe_extension():
    return Extension(
        name = "github",
        allowed_exec = ["gh"],  # Required for exec.run()
        tools = [...],
    )

数据库集成

def query_users(params):
    """Query SQLite database"""
    db_path = params.get("db_path", "")

    query = "SELECT * FROM users WHERE active = ?"
    results = sqlite.query(db_path, query, [True])

    # Format and return results...

docs/EXTENSION_DEVELOPMENT.md 获取包含模式、最佳实践和反模式的全面扩展开发指南。

示例扩展

该存储库包括11个示例扩展:

  • cat_fact:简单事实(无依赖关系)
  • 天气:美国国家气象局API集成
  • GitHub:GitHub CLI包装器
  • 码头工人:Docker CLI包装器
  • kubectl 的:Kubernetes CLI包装器
  • Postgres:PostgreSQL数据库工具
  • SQLite:SQLite数据库工具
  • 飞机:Plane.so API集成
  • 还有更多。..

探索 extensions/ 完整示例的目录。

文档

核心文件

扩展开发

Claude代码集成

开发工作流程

1.写入扩展名

# Create new extension
vim extensions/my_extension.star

# Extension is automatically loaded (hot reload)

2.测试扩展

# Write tests
vim extensions/my_extension_test.star

# Run tests
starlark-mcp --test

3.在MCP客户端中使用

将您的MCP客户端(Claude Desktop、Zed等)配置为使用starlark MCP,然后在对话中自然地使用您的工具。

贡献

欢迎投稿!拜托:

  1. 阅读 docs/EXTENSION_DEVELOPMENT.md 发展模式
  2. 为新功能编写测试
  3. 遵循现有代码样式

MCP协议支持

支持的MCP协议版本:

  • 2024-11-05
  • 2025-03-26
  • 2025-06-18

支持的功能:

  • tools 随着 listChanged: true (热重载支持)

支持的MCP方法:

  • initialize -服务器初始化和能力协商
  • initialized -初始化确认
  • tools/list -列出可用工具
  • tools/call -执行工具

许可证

麻省理工学院

目录标签

目录标签

RustClaude开发工具动态加载本地部署脚本扩展协议服务器热重载

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Node.js

来源包(packageName,安装包名)

starlark-mcp

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP