AI 툴킷 확장
개요
Extend AI Toolkit은 Anthropic의 Model Context Protocol(MCP) , OpenAI , LangChain , CrewAI 등 다양한 AI 프레임워크의 Extend API와 통합할 수 있는 파이썬 기반 도구 구현을 제공합니다. 사용자는 지출 관리 흐름에서 특정 작업을 AI 에이전트 또는 Claude 데스크톱과 같은 MCP 호환 클라이언트에 위임할 수 있습니다.
이 도구는 API 키를 보유한 기존 Extend 사용자를 위해 설계되었습니다. Extend에 가입하지 않으셨지만 중소기업을 위한 최신의 사용하기 쉬운 가상 카드 및 지출 관리 플랫폼에 대해 자세히 알아보고 싶으시다면 paywithextend.com 에서 확인해 보세요.
Related MCP server: Flutterwave MCP Server
특징
다중 AI 프레임워크 지원 : Anthropic Model Context Protocol, OpenAI Agents, LangChain LangGraph & ReAct, CrewAI 프레임워크와 함께 작동합니다.
포괄적인 도구 세트 : 신용 카드, 가상 카드, 거래 및 비용 관리 엔드포인트를 포함하여 Extend의 모든 주요 API 기능을 지원합니다.
설치
패키지를 수정하지 않는 한 이 소스 코드는 필요하지 않습니다. 패키지를 사용하려는 경우 다음을 실행하세요.
지엑스피1
요구 사항
구성
라이브러리는 환경 변수나 명령줄 인수를 통해 Extend API 키와 API로 구성되어야 합니다.
--api-key=your_api_key_here --api-secret=your_api_secret_here
또는 환경 변수를 통해:
EXTEND_API_KEY=your_api_key_here
EXTEND_API_SECRET=your_api_secret_here
사용 가능한 도구
이 툴킷은 기능별로 구성된 포괄적인 도구 세트를 제공합니다.
가상 카드
신용카드
업무
get_transactions : 다양한 필터를 사용하여 거래 가져오기
get_transaction_detail : 특정 거래에 대한 자세한 정보를 가져옵니다.
update_transaction_expense_data : 거래에 대한 비용 관련 데이터를 업데이트합니다.
경비 관리
get_expense_categories : 모든 비용 카테고리 나열
get_expense_category : 특정 비용 범주에 대한 세부 정보를 가져옵니다.
get_expense_category_labels : 비용 범주에 대한 레이블을 가져옵니다.
create_expense_category : 새로운 비용 범주를 만듭니다.
create_expense_category_label : 비용 범주에 레이블을 추가합니다.
update_expense_category : 기존 비용 범주 수정
create_receipt_attachment : 영수증을 업로드합니다(선택적으로 거래에 첨부).
automatch_receipts : 업로드된 영수증을 거래와 자동으로 일치시키기 위한 비동기 작업을 시작합니다.
get_automatch_status : 자동 매칭 작업의 상태를 가져옵니다.
send_receipt_reminder : 영수증이 없는 거래에 대한 알림을 (이메일로) 보냅니다.
사용 예
모델 컨텍스트 프로토콜
이 툴킷은 extend_ai_toolkit.modelcontextprotocol 패키지에서 MCP 서버를 구축하는 데 도움이 되는 리소스를 제공합니다.
개발
MCP Inspector를 사용하여 로컬로 MCP 서버 확장 테스트:
npx @modelcontextprotocol/inspector python extend_ai_toolkit/modelcontextprotocol/main.py --tools=all
Claude 데스크톱 통합
구성 파일을 편집하여 이 도구를 Claude Desktop의 MCP 서버로 추가합니다.
MacOS의 경우: ~/Library/Application\ Support/Claude/claude_desktop_config.json Windows의 경우: %APPDATA%/Claude/claude_desktop_config.json
Claude Desktop과 함께 create_receipt_attachment 도구를 사용하려면 npm install @modelcontextprotocol/server-filesystem add를 통해 파일 시스템 MCP 서버를 설치한 다음 구성 파일에도 추가해야 합니다.
참고: 현재 제한 사항으로 인해 Claude Desktop에 직접 업로드된 이미지는 Claude Desktop 앱이 기본 이미지 데이터에 액세스할 수 없기 때문에 Extend에 업로드할 수 없습니다. 따라서 파일 시스템 MCP 서버가 필요합니다.
파일 시스템을 추가하면 영수증 전용 폴더를 설정하고, Claude에게 영수증을 업로드하여 가장 가능성이 높은 거래와 자동으로 매칭하도록 설정할 수 있습니다. 또는 영수증을 첨부할 거래를 알고 있다면 Claude에게 해당 거래의 영수증을 업로드하도록 설정할 수 있습니다(자동 매칭 과정은 생략).
{
"extend-mcp": {
"command": "python",
"args": [
"-m",
"extend_ai_toolkit.modelcontextprotocol.main",
"--tools=all"
],
"env": {
"EXTEND_API_KEY": "apik_XXXX",
"EXTEND_API_SECRET": "XXXXX"
}
},
// optional: if you want to use the create_receipt_attachment tool
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/path/to/receipts/folder"
]
}
}
원격 실행
원격으로 서버를 실행하고 SSE 전송을 통해 통신할 수도 있습니다.
python -m extend_ai_toolkit.modelcontextprotocol.main_sse --tools=all --api-key="apikey" --api-secret="apisecret"
선택적으로 MCP 터미널 클라이언트를 사용하여 연결합니다.
python -m extend_ai_toolkit.modelcontextprotocol.client.mcp_client --mcp-server-host localhost --mcp-server-port 8000 --llm-provider=anthropic --llm-model=claude-3-5-sonnet-20241022
오픈AI
import os
from langchain_openai import ChatOpenAI
from extend_ai_toolkit.openai.toolkit import ExtendOpenAIToolkit
from extend_ai_toolkit.shared import Configuration, Scope, Product, Actions
# Initialize the OpenAI toolkit
extend_openai_toolkit = ExtendOpenAIToolkit.default_instance(
api_key=os.environ.get("EXTEND_API_KEY"),
api_secret=os.environ.get("EXTEND_API_SECRET"),
configuration=Configuration(
scope=[
Scope(Product.VIRTUAL_CARDS, actions=Actions(read=True)),
Scope(Product.CREDIT_CARDS, actions=Actions(read=True)),
Scope(Product.TRANSACTIONS, actions=Actions(read=True)),
]
)
)
# Create an agent with the tools
extend_agent = Agent(
name="Extend Agent",
instructions="You are an expert at integrating with Extend",
tools=extend_openai_toolkit.get_tools()
)
랭체인
import os
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent
from extend_ai_toolkit.langchain.toolkit import ExtendLangChainToolkit
from extend_ai_toolkit.shared import Configuration, Scope, Product, Actions
# Initialize the LangChain toolkit
extend_langchain_toolkit = ExtendLangChainToolkit.default_instance(
api_key=os.environ.get("EXTEND_API_KEY"),
api_secret=os.environ.get("EXTEND_API_SECRET"),
configuration=Configuration(
scope=[
Scope(Product.VIRTUAL_CARDS, actions=Actions(read=True)),
Scope(Product.CREDIT_CARDS, actions=Actions(read=True)),
Scope(Product.TRANSACTIONS, actions=Actions(read=True)),
]
)
)
# Create tools for the agent
tools = extend_langchain_toolkit.get_tools()
# Create the agent executor
langgraph_agent_executor = create_react_agent(
ChatOpenAI(model="gpt-4"),
tools
)
크루AI
import os
from extend_ai_toolkit.crewai.toolkit import ExtendCrewAIToolkit
from extend_ai_toolkit.shared import Configuration, Scope, Product, Actions
# Initialize the CrewAI toolkit
toolkit = ExtendCrewAIToolkit.default_instance(
api_key=os.environ.get("EXTEND_API_KEY"),
api_secret=os.environ.get("EXTEND_API_SECRET"),
configuration=Configuration(
scope=[
Scope(Product.VIRTUAL_CARDS, actions=Actions(read=True)),
Scope(Product.CREDIT_CARDS, actions=Actions(read=True)),
Scope(Product.TRANSACTIONS, actions=Actions(read=True)),
]
)
)
# Configure the LLM (using Claude)
toolkit.configure_llm(
model="claude-3-opus-20240229",
api_key=os.environ.get("ANTHROPIC_API_KEY")
)
# Create the Extend agent
extend_agent = toolkit.create_agent(
role="Extend Integration Expert",
goal="Help users manage virtual cards, view credit cards, and check transactions efficiently",
backstory="You are an expert at integrating with Extend, with deep knowledge of virtual cards, credit cards, and transaction management.",
verbose=True
)
# Create a task for handling user queries
query_task = toolkit.create_task(
description="Process and respond to user queries about Extend services",
agent=extend_agent,
expected_output="A clear and helpful response addressing the user's query",
async_execution=True
)
# Create a crew with the agent and task
crew = toolkit.create_crew(
agents=[extend_agent],
tasks=[query_task],
verbose=True
)
# Run the crew
result = crew.kickoff()
기여하다
기여를 환영합니다! 풀 리퀘스트를 제출해 주세요.
특허
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여되었습니다. 자세한 내용은 라이선스 파일을 참조하세요.