文件上下文协议(FCP)
MCP服务器允许LLM通过基于动词的DSL与复杂的文件格式进行交互。
FCP对于MCP就像React对于DOM一样——LLM在域操作中思考,FCP将它们呈现为目标格式。
安装
FCP是Claude Code市场插件。将其添加到您的 settings.json:```json
{
"marketplace_plugins": {
"fcp@os-tack/fcp": true
}
}
这将自动安装所有FCP服务器。服务器的先决条件:
服务器 · 需要
fcp-drawio · Node.js
fcp-midi · Python 3.13+
fcp地形 · 前进
fcp锈分析仪
fcp表 · Python 3.13+
fcp幻灯片 · Python 3.13+
### 手动安装(非克劳德代码)
每个服务器都可以独立安装和配置。添加到MCP客户端配置中:```json
{
"mcpServers": {
"fcp-drawio": {
"command": "npx",
"args": ["-y", "@ostk-ai/fcp-drawio"]
},
"fcp-terraform": {
"command": "fcp-terraform"
}
}
}
有关完整的安装说明,请参阅每台服务器的README:
FCP-DRAWIO · fcp 中午 · fcp地形 · fcp锈 · fcp表 · fcp幻灯片
快速开始
这是一个完整的工作流程——从头开始创建一个图表,检查并保存:```
> drawio_session("new \"Auth Flow\"")
! session "Auth Flow" created
[0s 0e 0g p:1/1]
> drawio(["add svc AuthService theme:blue", "add db UserDB theme:green", "connect AuthService -> UserDB label:\"queries\" style:dashed"])
+ svc AuthService @(0,0 140x60) blue
+ db UserDB @(200,0 120x80) green
~ AuthService -> UserDB "queries" dashed
[2s 1e 0g 320x80 p:1/1]
> drawio_query("status")
status: "Auth Flow" (unsaved, 4 ops, 0 checkpoints)
page: Page 1 (2 shapes, 1 edge, 0 groups)
> drawio_session("save as:./auth-flow.drawio")
! saved ./auth-flow.drawio
[2s 1e 0g 320x80 p:1/1]
```
每个FCP服务器都遵循相同的模式: `session` → `mutations` → `query` → `save`.
## 服务器
|服务器|格式|描述|
|--------|--------|-------------|
| FCP-DRAWIO |draw.io图表|架构图、流程图、ERD|
| fcp 中午 |MIDI音乐|音符、和弦、曲目、乐器|
| fcp地形 |Terraform HCL | AWS/GCP/Azure基础架构|
| fcp锈 |Rust代码库|通过Rust分析器进行导航、检查和重构|
| fcp表 |Excel电子表格|表格、公式、图表、格式|
| fcp幻灯片 |PowerPoint演示文稿|幻灯片、形状、表格、图表、布局|
## LLM看到了什么
每个突变都会返回一个前缀响应和一个摘要行,总结当前状态。这会在不读取整个文件的情况下提供LLM结构化反馈:
|前缀|含义|
|--------|---------|
| `+` |已创建|
| `~` |已修改/已连接|
| `*` |样式/元数据已更改|
| `-` |已删除|
| `!` |元操作|
| `@` |散装/布局|
### 示例
**图表** --形状、边缘和边界框摘要:```
> drawio(["add svc API theme:blue", "connect API -> DB"])
+ svc API @(0,0 140x60) blue
~ API -> DB
[2s 1e 0g 320x80 p:1/1]
```
**音乐** --音符、和弦和歌曲状态摘要:```
> midi(["note Piano C4 at:1.1 dur:quarter vel:mf", "chord Strings Am at:2.1 dur:whole"])
+ note C4 at:1.1 dur:quarter vel:mf
+ chord Am at:2.1 dur:whole
[1t 4e tempo:120 4/4 2bars]
```
**基础设施** --资源、变量和块计数摘要:```
> terraform(["add resource aws_instance web ami:\"ami-0c55b159\" instance_type:t2.micro", "add variable region default:\"us-east-1\""])
+ resource aws_instance.web ami:"ami-0c55b159" instance_type:t2.micro
+ variable region default:"us-east-1"
2 blocks, 1 resource, 1 variable
```
**锈** --符号导航、诊断和重构:```
> rust_session("open /path/to/my-project")
! session opened: /path/to/my-project (42 .rs files)
> rust_query("find Config @kind:struct")
Config (struct) src/config.rs:12
fields: name, port, database_url
``````
> rust(["rename old_handler handle_request @file:routes.rs"])
~ renamed old_handler → handle_request (3 references updated)
**电子表格** --数据块和工作表状态摘要:```
> sheets(["data A1", "Name,Age,City", "Alice,30,NYC", "Bob,25,LA", "data end"])
+ Wrote 3 rows at A1
1 sheets, ~6 cells
演示 --幻灯片、形状和甲板状态摘要:```
> slides(["slide add layout:title", "placeholder set title \"Q4 Review\"", "placeholder set subtitle \"Finance Team\""])
- slide 1 (Title Slide)
~ placeholder title = "Q4 Review"
~ placeholder subtitle = "Finance Team"
[1 slide 3 shapes]
```
运作原理
每个FCP服务器都暴露了4个MCP工具:
| 工具 | 目的 |
|---|---|
{domain}(ops) |
批量突变操作 |
{domain}_query(q) |
只读状态检查 |
{domain}_session(action) |
生命周期:新建、打开、保存、撤消、重做 |
{domain}_help() |
自我记录参考卡 |
大多数服务器都是基于 fcp核心 (TypeScript+Python)。fcp-terraform(Go)和fcp-rust(rust)是独立的实现。
链接
- 构建FCP服务器
- 市场指南
- FCP规范
许可证
麻省理工学院
