github / github/copilot-cli

`resolveDiscoveredConfig` does not read workspace `.mcp.json` — `includeWorkspaceSources` never set

Đang mở
#3,126 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
area:configuration area:mcp
Ngôn ngữ chính
Shell
Star
11.2k
Fork
1.9k
Merge trung bình
14 giờ 16 phút
Pull request đã merge (30 ngày)
6

Mô tả

## Summary

When the SDK creates a session with `enableConfigDiscovery: true` and a `workingDirectory`, the CLI's `resolveDiscoveredConfig()` calls the internal MCP config loader (`jv()`) **without** passing `includeWorkspaceSources: true`. That parameter defaults to `false`, so the workspace `.mcp.json` is never read — even though the intent of `enableConfigDiscovery` is clearly to discover it.

## Version

`@github/copilot` v1.0.41-0 (commit `3f18c2c`)

## Steps to reproduce

1. Place a valid `.mcp.json` in a working directory:
```json
{
"mcpServers": {
"time": {
"command": "uvx",
"args": ["mcp-server-time"]
}
}
}
```
2. Create a session via the SDK with `enableConfigDiscovery: true` and `workingDirectory` pointing to that directory.
3. Observe that no MCP servers from `.mcp.json` are discovered.

## Expected behaviour

The MCP servers defined in the workspace `.mcp.json` should be discovered and loaded into the session.

## Actual behaviour

The CLI logs:
```
Loaded MCP config from installed plugins: 0 server(s):
No MCP config loaded from ODR (ODR unavailable or returned no usable servers)
```

No workspace `.mcp.json` is read. The flag triggers config resolution, but the resolution skips the workspace source.

## Root cause

In `resolveDiscoveredConfig()`, the call to `jv()` omits `includeWorkspaceSources`:

```js
async resolveDiscoveredConfig(e) {
if (!e.enableConfigDiscovery) return {};
let r = e.workingDirectory || process.cwd();
// ...
let c = await jv({
cwd: r,
repoRoot: l,
settings: this.options.settings,
installedPlugins: s
// ← missing: includeWorkspaceSources: true
});
}
```

Inside `jv()`, the parameter defaults to `false`. When false, the function skips the code path that reads `.mcp.json` from the working directory:

```js
async function jv(t = {}) {
let { includeWorkspaceSources: s = false } = t;
// ...
if (!s) d = { ...c }; // ← only copies global config
else {
// reads .mcp.json from cwd/repoRoot — this path is never taken
}
}
```

## Suggested fix

Pass `includeWorkspaceSources: true` in the `jv()` call within `resolveDiscoveredConfig()`:

```js
let c = await jv({
cwd: r,
repoRoot: l,
settings: this.options.settings,
installedPlugins: s,
includeWorkspaceSources: true // ← add this
});
```

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.