Skip to content

feat: Configure Skore Agent as an MCP client/server in Cursor and IBM Bob - #16

Open
glemaitre wants to merge 9 commits into
probabl-ai:mainfrom
glemaitre:feat/cursor-mcp-harness
Open

feat: Configure Skore Agent as an MCP client/server in Cursor and IBM Bob#16
glemaitre wants to merge 9 commits into
probabl-ai:mainfrom
glemaitre:feat/cursor-mcp-harness

Conversation

@glemaitre

@glemaitre glemaitre commented Aug 6, 2026

Copy link
Copy Markdown
Member

Requires https://github.com/probabl-ai/skore-hub/pull/1746

Support Cursor and IBM Bob IDE via MCP bridge to the Skore Agent.

@glemaitre
glemaitre marked this pull request as draft August 7, 2026 09:02
@rouk1

rouk1 commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

New agentic friendly architecture has been merged, and this is ready for review.

@rouk1
rouk1 marked this pull request as ready for review August 25, 2026 11:18
Comment thread tests/test_agents.py
@Aljutor

Aljutor commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Some findings from automated review

High: Harness setup silently destroys existing configuration. Each writer replaces the complete OpenCode, Claude, Pi, or project Copilot configuration instead of updating only the Skore entry (src/skore_cli/_agents.py:80-96, src/skore_cli/_agents.py:111-121, src/skore_cli/_agents.py:130-159, src/skore_cli/_agents.py:191-194). Running skore agent in an already configured project can erase models, providers, hooks, permissions, and other user settings. Existing tests only use empty directories.

High: A skill catalog can delete or overwrite directories outside the installation target. The remote catalog controls both skill["path"] and skill["id"]. These values are joined without validating the resolved paths, and an existing destination is recursively deleted (src/skore_cli/skills/_commands.py:133-140). A malformed or compromised release can use an absolute path or .. components to target arbitrary directories. --all installs catalog entries without further validation.

Medium: The declared Python support includes versions where skill installation crashes. The package declares Python >=3.11 (pyproject.toml:8), but passes filter="data" to TarFile.extractall() (src/skore_cli/skills/_catalog.py:72-73). That parameter was added in Python 3.11.4. Python 3.11.0 through 3.11.3, including Debian 12’s standard 3.11.2, raise TypeError. CI uses Python 3.11.15 from the lock, so it does not detect this compatibility failure.

Medium: --hub-url is ignored after initial setup. With a valid .skore, the override is resolved at src/skore_cli/agent/_commands.py:202-205, but it is never stored in config. Harness configuration later uses the old config.hub_url at src/skore_cli/agent/_commands.py:285-290. Users switching between staging, local, and production hubs silently remain connected to the old hub.

Comment thread src/skore_cli/_agents.py
@rouk1

rouk1 commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Some findings from automated review

High: Harness setup silently destroys existing configuration. Each writer replaces the complete OpenCode, Claude, Pi, or project Copilot configuration instead of updating only the Skore entry (src/skore_cli/_agents.py:80-96, src/skore_cli/_agents.py:111-121, src/skore_cli/_agents.py:130-159, src/skore_cli/_agents.py:191-194). Running skore agent in an already configured project can erase models, providers, hooks, permissions, and other user settings. Existing tests only use empty directories.

High: A skill catalog can delete or overwrite directories outside the installation target. The remote catalog controls both skill["path"] and skill["id"]. These values are joined without validating the resolved paths, and an existing destination is recursively deleted (src/skore_cli/skills/_commands.py:133-140). A malformed or compromised release can use an absolute path or .. components to target arbitrary directories. --all installs catalog entries without further validation.

Medium: The declared Python support includes versions where skill installation crashes. The package declares Python >=3.11 (pyproject.toml:8), but passes filter="data" to TarFile.extractall() (src/skore_cli/skills/_catalog.py:72-73). That parameter was added in Python 3.11.4. Python 3.11.0 through 3.11.3, including Debian 12’s standard 3.11.2, raise TypeError. CI uses Python 3.11.15 from the lock, so it does not detect this compatibility failure.

Medium: --hub-url is ignored after initial setup. With a valid .skore, the override is resolved at src/skore_cli/agent/_commands.py:202-205, but it is never stored in config. Harness configuration later uses the old config.hub_url at src/skore_cli/agent/_commands.py:285-290. Users switching between staging, local, and production hubs silently remain connected to the old hub.

I think this are all non related to this PR. Could you open issues about this ?

@auguste-probabl

auguste-probabl commented Aug 25, 2026

Copy link
Copy Markdown

Now cursor is detected, but when I go to activate the MCP server in "Workspace MCP Servers" (see photo) it errors

image

Logs:

2026-08-25 15:36:10.248 [info] [V2] Handling CreateClient action
2026-08-25 15:36:10.248 [info] [V2 FSM] connection:connect_start: conn=idle,auth=unknown -> conn=connecting,auth=unknown
2026-08-25 15:36:10.382 [warning] MCP HTTP exchange completed
2026-08-25 15:36:10.387 [warning] Error connecting to streamableHttp server, falling back to SSE: Streamable HTTP error: Error POSTing to endpoint: {"detail":"Not Found"}
2026-08-25 15:36:10.433 [warning] MCP HTTP exchange completed
2026-08-25 15:36:10.445 [error] Error connecting to SSE server after fallback: SSE error: Non-200 status code (404) SSE error: Non-200 status code (404)
2026-08-25 15:36:10.463 [warning] Connection failed: SSE error: Non-200 status code (404)
2026-08-25 15:36:10.463 [warning] [V2 FSM] connection:connect_failure: conn=connecting,auth=unknown -> conn=failed,auth=unknown
2026-08-25 15:36:10.463 [info] CreateClient completed, connected: false, statusType: error

@Aljutor

Aljutor commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Now cursor is detected, but when I go to activate the MCP server in "Workspace MCP Servers" (see photo) it errors

image Logs:
2026-08-25 15:36:10.248 [info] [V2] Handling CreateClient action
2026-08-25 15:36:10.248 [info] [V2 FSM] connection:connect_start: conn=idle,auth=unknown -> conn=connecting,auth=unknown
2026-08-25 15:36:10.382 [warning] MCP HTTP exchange completed
2026-08-25 15:36:10.387 [warning] Error connecting to streamableHttp server, falling back to SSE: Streamable HTTP error: Error POSTing to endpoint: {"detail":"Not Found"}
2026-08-25 15:36:10.433 [warning] MCP HTTP exchange completed
2026-08-25 15:36:10.445 [error] Error connecting to SSE server after fallback: SSE error: Non-200 status code (404) SSE error: Non-200 status code (404)
2026-08-25 15:36:10.463 [warning] Connection failed: SSE error: Non-200 status code (404)
2026-08-25 15:36:10.463 [warning] [V2 FSM] connection:connect_failure: conn=connecting,auth=unknown -> conn=failed,auth=unknown
2026-08-25 15:36:10.463 [info] CreateClient completed, connected: false, statusType: error

Looks like an error with token?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants