Skip to content

Migrate to MCP, closes #29 - #48

Merged
Aryan10 merged 3 commits into
mainfrom
mcp
Sep 12, 2026
Merged

Aryan10 merged 3 commits into
mainfrom
mcp

Conversation

@Aryan10

@Aryan10 Aryan10 commented Aug 1, 2026

Copy link
Copy Markdown
Member

Requires adding Dockerfile.mcp to deployment. Resolves #29

- Implement FastMCP server package (mcp_server/) with news_search, get_article, list_categories, get_article_count tools
- Add ToolCallingProvider interface and AgentOrchestrator multi-turn tool execution loop
- Implement dual-mode ChatbotService (autonomous global search vs. article reader context)
- Add Dockerfile.mcp, update docker-compose.yml and dev.sh with mcp-server on port 8002 (SSE)
- Remove outdated Julep SDK provider and Julep RAG backend
- Update logger badge styling (removed square brackets)
- Add structured extraction schemas (pipeline/extraction_schemas.py)

Closes #29

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR moves DistillNews toward MCP-compatible, tool-calling agent flows by introducing a dedicated MCP server package/service, adding a tool-calling provider interface + orchestrator loop, and removing the legacy Julep agent/RAG backends.

Changes:

  • Add an MCP server (mcp_server/) with news_search/get_article tools plus Docker/compose wiring for deployment.
  • Introduce tool/function calling primitives (ToolDefinition, ToolCall, AgentMessage), a ToolCallingProvider interface, and an AgentOrchestrator loop; update chatbot + OpenAI provider accordingly.
  • Remove Julep agent and RAG backend support; update tests and env/config/docs/examples to match.

Reviewed changes

Copilot reviewed 28 out of 30 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
utils/logger.py Adjusts badge formatting output (affects log output matching).
service/logger.py Same badge-format change for service logger.
tests/test_server_routes.py Updates assertions to match new badge formatting.
tests/test_logger.py Updates logger badge formatting assertions.
tests/test_chatbot_and_embeddings.py Updates chatbot test to match tool-calling agent interface usage.
tests/test_agents_and_factory.py Expands tests for new tool-calling primitives (but currently misses orchestrator coverage).
service/rag/factory.py Removes julep RAG backend option and updates error message.
service/rag/backends/julep.py Removes Julep doc-store backend implementation.
service/chatbot/wiring.py Updates chatbot wiring to new ChatbotService initialization.
service/chatbot/service.py Replaces template-based prompting with an orchestrated tool-calling flow + system prompts.
service/agents/providers/openai.py Extends OpenAI provider to support tool calling via OpenAI tools API.
service/agents/providers/julep.py Removes Julep provider implementation.
service/agents/orchestrator.py Adds multi-turn orchestrator for executing tool calls.
service/agents/factory.py Removes Julep provider option; keeps OpenAI.
service/agents/base.py Adds tool-calling dataclasses and ToolCallingProvider interface.
service/agents/init.py Re-exports new tool-calling types.
pipeline/extraction_schemas.py Adds JSON-schema tool definitions for structured extraction/classification/formatting.
mcp_server/tools/search.py Implements MCP-side news_search using in-memory vector store + remote embeddings.
mcp_server/tools/articles.py Implements MCP-side article fetch/count utilities.
mcp_server/tools/init.py Adds MCP tools package marker.
mcp_server/requirements.txt Adds MCP server dependency set.
mcp_server/app.py Defines FastMCP tools and server entrypoint.
mcp_server/main.py Enables python -m mcp_server execution.
mcp_server/init.py Package marker for MCP server module.
Dockerfile.mcp Adds container build for MCP server.
docker-compose.yml Adds mcp-server service and environment wiring.
dev.sh Installs MCP deps and starts MCP server in local dev (plus a new typo in output).
config.py Removes Julep-related config properties.
.env.example Removes Julep options from example environment.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread service/agents/orchestrator.py
Comment thread service/agents/providers/openai.py
Comment thread mcp_server/app.py
Comment thread dev.sh Outdated
Comment thread pipeline/extraction_schemas.py
Comment thread service/chatbot/wiring.py
Comment thread tests/test_agents_and_factory.py Outdated
@Aryan10
Aryan10 merged commit 4a6a5bc into main Sep 12, 2026
@Aryan10
Aryan10 deleted the mcp branch September 12, 2026 05:00
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.

Consider MCP server over seperate embeddings server for easier integration with modern agentic interfaces

2 participants