Kiln AI Server 实战指南:REST API 服务与 MCP 工具服务器的安装、配置与二次集成
人工智能AI 应用AI 评测RAG微调提示工程开发工具桌面应用【免费下载链接】KilnBuild, Evaluate, and Optimize AI Systems. Includes evals, RAG, agents, fine-tuning, synthetic data generation, dataset management, MCP, and more.项目地址https://gitcode.com/gh_mirrors/ki/Kiln点击查看免费下载Kiln 是一个用于构建、评估和优化 AI 系统的开源平台包含桌面应用、Python 核心库kiln-ai与本文的主角——独立分发的kiln-server包。本文以仓库中的 libs/server/README.md 为骨架完整讲解该包的安装方式、kiln_server与kiln_mcp两个 CLI 的全部命令行参数、REST API 的端点组织以及如何将单个 API 模块挂载到你自己的 FastAPI 应用中同时结合源码给出默认端口、环境变量、CORS 与 Agent 策略等底层实现细节。读完本文你将能够独立完成服务器的安装启动、调试配置并能将 Kiln 的能力以 REST 或 MCP 两种协议嵌入自己的应用。一、包结构概览Server 与 Core、Desktop 的关系kiln-server是 Kiln AI 的独立服务端包它依赖核心库kiln-ai数据模型、适配器、工具层并将这些能力以 REST API 与 MCP 两种形式暴露出来。在仓库中服务端源码位于 libs/server/kiln_server/核心库位于 libs/core/桌面应用位于 app/desktop/。从 pyproject.toml 可以看到该包的关键元信息包名kiln-server版本 1.2.0要求Python 3.10classifier 声明支持 3.10–3.13核心依赖fastapi0.115.4、mcp1.10.1、httpx0.27.2、kiln-ai1.2.0、pydantic2.9.2、python-dotenv1.0.1、python-multipart0.0.31、uvicorn0.32.0提供了两个可执行入口pyproject.tomlkiln_server kiln_server.server:main——REST API 服务kiln_mcp kiln_server.mcp.mcp:main——MCP 工具服务器。也就是说一次安装即可同时获得 REST 与 MCP 两种服务能力。二、安装使用 uv 一行完成官方推荐的安装方式是使用 uvuv tool install kiln_serveruv tool install会把包安装到隔离的工具环境中并自动在 PATH 中注册kiln_server与kiln_mcp两个命令。如果你更习惯 pip也可以等价地执行pip install kiln-server但需要自行管理虚拟环境与依赖隔离。安装完成后验证kiln_server --help kiln_mcp --help三、启动 REST 服务器kiln_server 命令详解安装完成后直接运行kiln_server即可启动服务。完整的命令行选项如下与--help输出一致usage: kiln_server [-h] [--host HOST] [--port PORT] [--log-level LOG_LEVEL] [--auto-reload AUTO_RELOAD] Run the Kiln AI REST Server. options: -h, --help show this help message and exit --host HOST Host for network transports. --port PORT Port for network transports. --log-level LOG_LEVEL Log level for the server when using network transports. --auto-reload AUTO_RELOAD Enable auto-reload for the server.3.1 参数底层实现与默认值这些参数在 server.py 的build_argument_parser()中定义其默认值并非硬编码在 argparse 里而是来自核心库的配置系统。查看 libs/core/kiln_ai/utils/config.py 可以发现两个关键配置项配置项环境变量默认值说明kiln_local_api_hostKILN_LOCAL_API_HOST127.0.0.1服务监听地址默认仅本机可访问kiln_local_api_portKILN_LOCAL_API_PORT8757服务监听端口这两个配置均标记为in_memoryTrue说明其优先从环境变量取值。main()的实现细节值得注意server.py当你在命令行传入--host/--port时代码会先把它们写入对应的环境变量再交由 uvicorn 读取——这样在--auto-reload触发的 worker 重载进程中配置依然生效内存中的配置不会随 reload 存活。3.2 常见启动示例仅本机使用默认即此行为kiln_server绑定到局域网/容器网卡并指定端口kiln_server --host 0.0.0.0 --port 8757开发调试时开启热重载与更详细的日志kiln_server --auto-reload --log-level debug注意--log-level只影响网络传输层的日志默认值为info。若需访问宿主机其他进程或浏览器跨源访问还需要关注下文 4.3 节的 CORS 配置。启动成功后可通过GET /ping验证连通性——该端点定义于 server.py返回字符串pongcurl http://127.0.0.1:8757/ping四、REST API 全景与二次集成4.1 23 组 API 分类make_app()server.py创建 FastAPI 应用时通过openapi_tagstags_metadata注入了完整的 API 分组元数据。从 server.py 可见服务端覆盖了以下能力域项目管理Projects增删改查与导入、Tasks、Prompts、Specs运行与评估Runs任务执行与 run 数据存储、Feedback、Run Configs、Evals、Eval Inputs、Statistics置信区间与显著性检验、Synthetic Data、Multiturn SDG、Eval Builder、Fine-tuning、Prompt Optimization数据与检索Documents文档、抽取、分块、向量库与 RAG 配置扩展能力Skills、Copilot、Code Tools、Tools MCP、Providers Models、Git Sync、Agent、Settings Utilities、Jobs。这些端点由各connect_*函数挂载server.pyconnect_project_api(app) connect_task_api(app) connect_prompt_api(app) connect_spec_api(app) connect_run_api(app) connect_feedback_api(app) connect_document_api(app) connect_statistics_api(app) connect_custom_errors(app)例如connect_project_api在 project_api.py 中定义POST /api/projects默认把新项目创建在~/Kiln Projects/项目名目录下并写入project.kiln文件connect_statistics_api在 statistics_api.py 中提供一个POST /api/statistics端点通过operation判别字段分发到 Wilson 置信区间、成对 McNemar 检验、Bootstrap 等纯数学实现statistics_lib.py。4.2 OpenAPI 文档服务启动后FastAPI 会自动生成完整的 OpenAPI 文档/docs、/openapi.jsonREADME 也提供了在线版 OpenAPI 文档入口便于快速查阅每个端点的请求/响应模型。仓库中的 generate_openapi.py 即用于生成/校验这份 schema。4.3 CORS 与中间件顺序make_app()默认仅允许本地前端端口跨源访问server.py通过环境变量KILN_FRONTEND_PORT默认5173指定前端端口允许的来源为http://localhost:port、http://127.0.0.1:port及对应的https变体。代码中还有一个易踩坑的细节调用方传入的extra_middleware会先于 CORS 中间件添加server.py注释明确说明 CORS 必须保持最外层否则内层中间件短路返回的响应例如 GitSync 错误会绕过 CORS被浏览器以 origin not allowed 拦截。如果你要自定义中间件请保持这个顺序约定。4.4 错误处理与 Agent 策略元数据服务端通过connect_custom_errorscustom_errors.py为 PydanticValidationError与RequestValidationError注册了统一处理器会把校验错误格式化为可读的中文友好消息例如将正则不匹配的错误改写为必须仅包含字母、数字、空格、连字符和下划线。另外许多端点带有x-agent-policy元数据供 Kiln 的 chat Agent 决定是否可直接调用某端点见 utils/agent_checks/policy.py 与 policy_lookup.py策略分为allow允许、deny拒绝、require_approval需用户审批未登记策略的端点默认 fail-safe 拒绝。这是Agent 端点治理的源码级实现二次集成时若需要控制 Agent 权限可复用这套机制。4.5 在自有 FastAPI 应用中按模块集成README 给出了最小集成示例——不需要启动独立进程而是把单个 API 模块挂到自己的应用上from kiln_server.project_api import connect_project_api app FastAPI() connect_project_api(app)更完整的做法是直接复用make_app()创建整个应用它会自动挂载全部connect_*模块并配置好 CORSfrom kiln_server.server import make_app app make_app()如果你只想复用部分模块可仿照 server.py 自行调用需要的connect_*函数。这也是桌面开发服务器 app/desktop/dev_server.py 的做法——它以app.desktop.dev_app:dev_app为入口、通过 uvicorn 启动并开启 reload并用KILN_PORT环境变量覆盖默认端口。五、Kiln MCP ServerBetakiln-server包还内置了一个 MCP 服务器源码见 libs/server/kiln_server/mcp/官方说明见 kiln_server/mcp/README.md用于把 Kiln 项目中的工具例如 Kiln 搜索工具 / RAG 工具、Kiln Task 工具通过 MCP 协议暴露给任意 MCP 客户端。官方标注为Beta面向本地使用场景不建议用于生产级负载。5.1 安装与前置条件安装方式与 REST 服务器相同uv tool install kiln_server重要前置条件在使用该 MCP 服务器启动 Kiln 搜索工具之前你必须已经在本机运行该 MCP 的同一台电脑上通过 Kiln 应用执行过搜索索引search indexing构建。5.2 运行 kiln_mcpkiln_mcp的最后一个位置参数必须是你要使用的项目文件project.kiln路径。例如streamable HTTP 传输kiln_mcp --transport streamable-http /Users/username/Kiln Projects/Project Name/project.kiln完整命令行选项与kiln_mcp --help一致usage: kiln_mcp [-h] [--tool-ids TOOL_IDS] [--transport {stdio,sse,streamable-http}] [--host HOST] [--port PORT] [--mount-path MOUNT_PATH] [--log-level LOG_LEVEL] project Run the Kiln MCP server for a project. positional arguments: project Path to the project.kiln file options: -h, --help show this help message and exit --tool-ids TOOL_IDS Comma-separated list of tool IDs to expose. Defaults to all project tools. --transport {stdio,sse,streamable-http} Transport mechanism for the MCP server. --host HOST Host for network transports. --port PORT Port for network transports. --mount-path MOUNT_PATH Optional mount path for SSE or streamable HTTP transports. --log-level LOG_LEVEL Log level for the server when using network transports.参数在 mcp.py 中定义其默认值细节--tool-ids逗号分隔的工具 ID 列表缺省暴露项目中的全部工具还支持--list-tools标志打印项目中所有可用工具 ID见 mcp.py--transport可选stdio默认、sse、streamable-http--host默认127.0.0.1--port默认8000注意与 REST 服务器的 8757 不同--mount-path仅对 SSE / streamable-http 传输生效用于指定挂载路径。5.3 在 Cursor、VSCode 等 MCP 客户端中接入在客户端mcp.json中注册客户端会在被调用时通过 stdio 传输自动拉起该服务器各客户端对 JSON 格式要求略有差异请以客户端文档为准{ mcpServers: { kilnMCP: { command: kiln_mcp, args: [/Users/username/Kiln Projects/Project Name/project.kiln] } } }stdio 是 IDE 类 MCP 客户端最常用的传输方式无需--host/--port。5.4 工具选择与运行机制main()启动流程mcp.py会校验项目文件存在性然后用collect_project_tools()收集工具tool_selection.py遍历项目的 RAG 配置生成RagTool遍历类型为kiln_task的外部工具服务器生成KilnTaskTool已归档archived的工具会被跳过若--tool-ids中有 ID 无法解析不存在或已归档会直接报错用prepare_tool_contexts()构建 MCP 工具定义mcp_server_tool_utils.py将 Kiln 工具的函数定义转换为 MCP 的Tool含输入/输出 schema并检测重名工具——MCP 不允许两个同名工具重复时会提示要么在 Kiln UI 中归档重复工具要么用--tool-ids只暴露其中一个由create_fastmcp_server()创建 FastMCP 服务器实例runtime.py工具调用在_call_tool中被转发到context.resolution.tool.run(**arguments)结果以TextContent返回按所选传输方式运行runtime.pystdio→run_stdio_async()sse→run_sse_async(mount_path)streamable-http→run_streamable_http_async()。值得说明的是MCP 服务器暴露的工具来自项目数据模型本身RAG 搜索工具对应项目中的 RAG 配置依赖前面提到的搜索索引Kiln Task 工具对应项目配置的kiln_task类型工具服务器。因此project.kiln中配置了哪些工具MCP 层就暴露哪些工具。六、常见问题与排障速查现象排查方向kiln_server启动后无法从其他机器访问检查是否使用了--host 0.0.0.0默认仅监听127.0.0.1端口被占用默认端口8757REST/8000MCP可用--port或环境变量覆盖浏览器跨源请求被 origin not allowed 拦截前端端口需与KILN_FRONTEND_PORT默认 5173匹配MCP 搜索工具无结果确认已在本机 Kiln 应用中完成搜索索引构建MCP 报 Duplicate tool name在 Kiln UI 中归档重复工具或用--tool-ids只暴露一个--tool-ids指定的 ID 报错用kiln_mcp --list-tools project.kiln查看实际可用的工具 ID热重载后端口/主机配置失效本版已通过环境变量传递解决直接使用--host/--port即可七、总结kiln-server包为 Kiln 平台提供了两条标准化的对外通道kiln_server是覆盖项目、任务、提示词、评估、统计、微调、RAG、Git 同步等 23 个能力域的 FastAPI REST 服务kiln_mcp则把单个project.kiln中的 RAG/任务工具以 MCP 协议暴露给 Cursor、VSCode 等任意 MCP 客户端。两者共享同一套核心库与配置体系默认端口 8757、环境变量KILN_LOCAL_API_HOST/KILN_LOCAL_API_PORT等既可以直接以独立进程运行也可以通过connect_*函数嵌入你自己的 FastAPI 应用。结合 server.py、mcp/ 与 config.py 等源码阅读你就能在需要时对 Kiln 服务端做深度定制。赞分享人工智能AI 应用AI 评测RAG微调提示工程开发工具桌面应用【免费下载链接】KilnBuild, Evaluate, and Optimize AI Systems. Includes evals, RAG, agents, fine-tuning, synthetic data generation, dataset management, MCP, and more.项目地址https://gitcode.com/gh_mirrors/ki/Kiln点击查看免费下载相关推荐Obsidian REST API 交互服务器——MCP-obsidian 安装与配置指南Obsidian REST API 交互服务器——MCP obsidian 安装与配置指南 1. 项目基础介绍 MCP obsidian 是一个开源项目旨在通Supabase MCP服务器安装与配置指南Supabase MCP服务器安装与配置指南 1. 项目基础介绍 Supabase MCP服务器是一个开源项目旨在为Supabase数据库提供一个安全、高效的Notion MCP服务器安装与配置指南Notion MCP服务器安装与配置指南 1. 项目基础介绍 Notion MCP服务器是一个开源项目用于使LLM大型语言模型能够与Notion工作空间进创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

FreeRTOS可裁剪机制详解:从配置宏到内存优化的嵌入式实践

FreeRTOS可裁剪机制详解:从配置宏到内存优化的嵌入式实践

做嵌入式这几年,我反复在跟别人解释一个词: 可裁剪 。很多刚接触FreeRTOS的工程师,看到它的源码不过三五个文件,就觉得"小"是它的全部优点。其实"小"只是结果,"可裁剪"才是这背后真正…

2026/10/14 18:18:42 阅读更多 →
FreeRTOS可裁剪机制详解:从配置宏到资源受限MCU的工程实践

FreeRTOS可裁剪机制详解:从配置宏到资源受限MCU的工程实践

早期调试某款智能传感器设备时,我盯着编译输出面板看了一会儿,换来的是连串的警告和几乎告急的Flash空间。当时那块MCU只有64KB Flash、8KB RAM,却要同时装协议栈、跑业务逻辑,还要搞定传感器采样。那时我第一次认真审视FreeRTOS&…

2026/10/14 18:18:42 阅读更多 →
《科学与工程计算》期末复习:误差分析、算法稳定性与数值方法选择

《科学与工程计算》期末复习:误差分析、算法稳定性与数值方法选择

简介:期末复习笔记围绕《科学与工程计算》(熊春光版)整理,重点面向北理工自动化专业学生及需要掌握数值方法的学习者,系统梳理解微分方程数值解的核心考点,包括初值问题与边值条件、有限差分法、内部截断误…

2026/10/14 18:18:42 阅读更多 →

最新新闻

浏览器多开怎么设置独立 IP?Profile、代理与核验流程

浏览器多开怎么设置独立 IP?Profile、代理与核验流程

浏览器多开不会自动让每个窗口拥有不同的公网 IP。想让不同浏览器环境使用不同出口,需要分别配置获授权的代理或网络线路,再从各个环境实际访问网络进行核验。要先分清两件事:Profile 隔离浏览器数据,代理配置影响网络出口。**它们…

2026/10/14 19:11:22 阅读更多 →
PS5 Chiaki 串流多账号切换导致控制器失灵的故障排查与解决方案

PS5 Chiaki 串流多账号切换导致控制器失灵的故障排查与解决方案

在使用 Chiaki 串流 PS5(或配合自动化脚本挂机)时,部分拥有大小号/多区服账号的玩家可能会遇到一个极其隐蔽且容易误导排查方向的控制失效问题。本文将详细复盘该故障的成因及解决思路,供遇到类似情况的玩家参考。 一、 故障现象与…

2026/10/14 19:11:22 阅读更多 →
2026企业AI办公工具选型指南:框架、产品盘点与落地思路

2026企业AI办公工具选型指南:框架、产品盘点与落地思路

2026企业AI办公工具选型指南:框架、产品盘点与落地思路企业引入AI办公工具时,很多管理者容易陷入选型误区。不少团队会把产品功能清单的丰富度作为核心评判标准,或是单纯对比订阅成本,也有部分决策仅凭品牌声量敲定方案。这类评估…

2026/10/14 19:11:22 阅读更多 →
上海点山展示如何通过展厅设计传递企业的“前世今生”?

上海点山展示如何通过展厅设计传递企业的“前世今生”?

上海点山展示如何通过展厅设计传递企业过去现在未来?关键在时间叙事的三层结构展厅不只是物理意义上的展示空间,更是品牌时间的容器。对于深耕长三角区域的展厅设计公司而言,如何让企业的“过去、现在、未来”不再割裂为孤立的展板&#xff0…

2026/10/14 19:11:22 阅读更多 →
判断泛消费级机器人初创公司是否值得持续关注,应该看哪些连续证据

判断泛消费级机器人初创公司是否值得持续关注,应该看哪些连续证据

机器人行业经常出现“下一家黑马是谁”“某家公司值不值得持续关注”等问题。对于仍处在研发和产品验证阶段的初创公司,提前给出确定性结论并不稳妥。相比标签和短期热度,更可行的方法是建立一组能够持续更新的观察指标。以贝塔无限为例,其公…

2026/10/14 19:11:22 阅读更多 →
库存扣减的并发控制:乐观锁的应用

库存扣减的并发控制:乐观锁的应用

财务主管跨界写技术文,先交代缘由:公司商城搞限时促销,活动结束对账,账面库存和实物对不上,多卖了四十七件。排查一周,病根是库存扣减没做并发控制,两个请求同时读到同样的库存数,各…

2026/10/14 19:10:22 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →