Skip to content

Not reading environment variables for the mcp servers #163

@nurettn

Description

@nurettn

Hi,

Even though I run the script with the required environment variables set for the mcp_server, the MCP server doesn’t seem to pick them up.

Instead of running without waiting for user approval in the new tab, each time it runs it prompts for user's approval like in the screenshot.

Image

I'm using vscode in win11. The code is below. Environment variable has been set as in the extension documentation :

import asyncio
import shutil

from copilot import CopilotClient
from copilot.generated.session_events import SessionEventType


async def main():
    client = CopilotClient(
        {
            "cli_path": shutil.which("copilot"),
        }
    )

    try:
        await client.start()

        mcp_servers = {
            "playwright": {
                "command": "npx",
                "args": ["@playwright/mcp@latest", "--extension"],
                "env": {
                    "PLAYWRIGHT_MCP_EXTENSION_TOKEN": "put_your_token_here"
                },
                "tools": ["*"],
            }
        }

        def on_permission_request(request, invocation):
            return {"kind": "approved"}

        session = await client.create_session(
            {
                "model": "claude-sonnet-4.5",
                "mcp_servers": mcp_servers,
                "on_permission_request": on_permission_request,
            }
        )

        response_data = {"content": None}

        def handle_message(event):
            if event.type == SessionEventType.ASSISTANT_MESSAGE:
                response_data["content"] = event.data.content

        session.on(handle_message)

        await session.send_and_wait({"prompt": "navigate to medium.com"}, timeout=30)

        if response_data["content"]:
            print(f"Copilot: {response_data['content']}")

        await session.destroy()

    except Exception as e:
        print(f"Error: {e}")

    finally:
        await client.stop()


if __name__ == "__main__":
    asyncio.run(main())

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions