Developing software engineering tools is a difficult task, and the environments in which these tools are deployed continually evolve as software developers' processes, tools and tool sets evolve. To more effectively develop such evolvable environments, we have been using component-based approaches to build and integrate a range of software development tools, including CASE and workflow tools, file servers and versioning systems, and a variety of reusable software agents. We describe the rationale for a component-based approach to developing such tools, the architecture and support tools we have used, some resultant tools and tool facilities we have developed, and summarise possible future research directions in this area.